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
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.