Fecha y Hora con MicroPython

Contenido:

Fecha y Hora sincronizados por Internet con MicroPython

Conocer la hora y fecha actual es de mucha utilidad para diversas aplicaciones, ya sea para realizar alguna acción en un tiempo determinado o para conocer el instante de tiempo en el cual se disparó algún evento.

En este articulo aprovecharemos la capacidad de la Placa ESP32 de conectarse a internet mediante su Modulo Wi-Fi integrado, y lo sincronizaremos con la la fecha y hora actual mediante un servicio NTP (Network Time Protocol), cabe recalcar que la placa ESP32 debe contener el firmware de micropython instalado.

Materiales

  • 1x Placa ESP32 con micropython.
  • 2x Protoboard (opcional).

Requisitos

  • Red Inalámbrica con conexión a Internet (WiFi).

Circuito

esp32 micropython
Figura 1: Circuito con la Placa ESP32.

Sketch en MicroPython

#____________________________________________________________________________________________________________
#CONEXION A UNA RED WI-FI
import network
import time
#Reemplace el nombre de su red wifi (Wifi Name) y la contraseña (Wifi Password)
ssid = 'Wifi Name'
key = 'Wifi Password'
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    wlan.active(True)
    wlan.connect(ssid, key)
    print('Connecting to: %s' % ssid)
    timeout = time.ticks_ms()
    while not wlan.isconnected():
        if (time.ticks_diff (time.ticks_ms(), timeout) > 10000):
            break
    if wlan.isconnected():
        print('Successful connection to: %s' % ssid)
        print('IP: %s\n' % wlan.ifconfig()[0])
    else:
        wlan.active(False)
        print('Failed to connect to: %s' % ssid)
else:
    print('Connected\nIP: %s\n' % wlan.ifconfig()[0])
#____________________________________________________________________________________________________________
# OBTENCIÓN DESDE INTERNET DE NTP - NETWORK TIME PROTOCOL (pool.ntp.org)
import ntptime
ntptime.settime()
#____________________________________________________________________________________________________________
# SINCRONIZACION DEL RELOJ INTERNO E IMPRESION DE FECHA Y HORA
from machine import RTC
(year, month, day, weekday, hour, minute, second, milisecond) = RTC().datetime()                
#Corrija su Zona Horaria GMT en la variable hour
#Ejemplo: Zona Horaria GMT corregida para Ecuador: GMT-5 = hour-5
RTC().init((year, month, day, weekday, hour-5, minute, second, milisecond))
print ("Fecha: {:02d}/{:02d}/{}".format(RTC().datetime()[2], RTC().datetime()[1], RTC().datetime()[0])) 
print ("Hora: {:02d}:{:02d}:{:02d}".format(RTC().datetime()[4], RTC().datetime()[5], RTC().datetime()[6]))

¿Cómo funciona el Sketch?

El Sketch funciona de la siguiente manera:

  • Antes de ejecutar el sketch se debe modificar los datos de:
    • ssid: Nombre de su red WiFi (string).
    • key: Contraseña de su red WiFi (string).
  • Al energizar la placa, ésta intenta conectarse a la Red WiFi configurada. Para obtener más información sobre la conexión wifi revisa:  Conectarse a una red WiFi con MicroPython.
  • Posterior a esto, en la consola se visualizará los datos de conexión.
  • La fecha y hora de la Placa ESP32 se sincronizará con los datos del servicio NTP configurados según su zona horaria.
  • Los datos sincronizados (Fecha y Hora) se visualizarán en la consola.

Deja un comentario