Tutorial ESP32 53/55 - Construye un reloj de internet LCD | Kit de aprendizaje IoT ESP32 de SunFounder

Tutorial ESP32 53/55 - Construye un reloj de internet LCD | Kit de aprendizaje IoT ESP32 de SunFounder

En este tutorial, construiremos un reloj LCD con conexión a Internet utilizando el microcontrolador ESP32 de SunFounder. Este reloj se sincronizará automáticamente con la hora actual a través de Internet, mostrando la hora en un formato de 12 horas o 24 horas, junto con el día de la semana, la fecha y el mes. El uso del Protocolo de Tiempo de Red (NTP) garantiza que el reloj siga siendo preciso sin ajustes manuales.

esp32-53-reloj-de-internet-principal

Este proyecto aprovecha las capacidades de Wi-Fi integradas del ESP32 para obtener la hora actual de un servidor NTP. Utilizaremos una Pantalla de Cristal Líquido (LCD) para mostrar la hora, que se puede formatear según las preferencias del usuario. Para más aclaraciones sobre cualquier paso, consulte el video en (en el video a :30).

Hardware explicado

Los componentes principales para este proyecto incluyen el microcontrolador ESP32, una pantalla LCD de 20x4 y una fuente de energía. El ESP32 es un microcontrolador potente con Wi-Fi y Bluetooth integrados, lo que lo hace adecuado para proyectos de IoT. La LCD se utiliza para mostrar la hora y la fecha, y se puede configurar para diferentes tamaños de pantalla.

El LCD funciona a través del protocolo I2C, que permite la comunicación a través de dos hilos (SDA y SCL). Esto simplifica el cableado y reduce el número de pines necesarios en el ESP32. La conexión al servidor NTP se realiza utilizando las capacidades Wi-Fi del ESP32, lo que permite actualizaciones en tiempo real.

  • Asegúrate de que la tensión de alimentación sea la correcta (5 V).
  • Utiliza capacitores de desacople cerca de los pines de alimentación para estabilidad.
  • Ten cuidado con las conexiones I2C para evitar conflictos en el bus.
  • Verifica la dirección I2C del LCD (0x27 o 0x3F).
  • Verifique las credenciales de Wi-Fi para una conexión precisa.
  • Maneja los ajustes de horario de verano en tu código.
  • Utiliza el servidor NTP correcto para tu ubicación geográfica.
  • Siempre borra el LCD antes de actualizar la pantalla.

Instrucciones de cableado

ESP32-11_LCD-wiring

Para conectar el ESP32 con el LCD, comienza conectando los pines de alimentación. Conecta el VCC del LCD al pin de 5V en el ESP32 y el pin GND del LCD al pin GND en el ESP32. Para la comunicación I2C, conecta el pin SDA del LCD al GPIO 21 en el ESP32 y el pin SCL al GPIO 22. Asegúrate de que las conexiones estén seguras para evitar problemas de comunicación.

Al configurar el cableado, utiliza cables jumper de macho a hembra para conexiones fáciles. Si tu LCD tiene una dirección I2C o configuración de pines diferente, ajusta el código en consecuencia. Consulta el video (en el video a :30) para opciones de cableado alternativas si es necesario.

Ejemplos de código y tutoriales

El código inicializa el LCD y configura la conexión Wi-Fi para obtener datos de tiempo del servidor NTP. Identificadores clave comossidypasswordse utilizan para conectarse a la red Wi-Fi, mientrasntpServer1yntpServer2especifica los servidores NTP a utilizar.

const char* ssid = "dars";
const char* password = "llllllllllllll";
const char* ntpServer1 = "pool.ntp.org";
const char* ntpServer2 = "time.nist.gov";

Este fragmento muestra las credenciales de la red y las direcciones del servidor. Asegúrate de ingresar tu SSID de Wi-Fi y contraseña con precisión, ya que cualquier error impedirá que el ESP32 se conecte a Internet.

En elprintLocalTime()función, la hora actual está formateada para su visualización. La estructuratmse utiliza para almacenar información temporal, mientrasstrftimeayuda a formatear la hora en una cadena legible.

void printLocalTime() {
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)) {
    Serial.println("No time available (yet)");
    return;
  }
  char timeHour[5];
  strftime(timeHour, 5, "%H", &timeinfo);

Este código verifica si la hora local está disponible y recupera la hora. La hora formateada se utiliza para mostrar la hora actual en el LCD. Si la hora aún no está disponible, imprime un mensaje en el Monitor Serial.

Finalmente, elsetup()la función inicializa el LCD y se conecta a Wi-Fi. También configura la configuración del servidor NTP y establece una función de retorno para la sincronización de tiempo.

void setup() {
  Serial.begin(115200);
  lcd.init(); // initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.
  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);

Este extracto inicializa el Monitor Serial para depuración, configura el LCD e intenta conectarse a la red Wi-Fi especificada. El estado de conexión se imprimirá en el Monitor Serial, lo que te permitirá verificar la conexión.

Demostración / Qué Esperar

Tras la configuración exitosa, la pantalla LCD mostrará la hora actual, el día de la semana y la fecha. Puede esperar que la hora se actualice cada 5 segundos, gracias a laloop()función. Si la conexión con el servidor NTP falla, aparecerá un mensaje en el Monitor Serial indicando que el tiempo no está disponible aún (en el video a las 12:00).

Las trampas comunes incluyen cableado incorrecto, direcciones I2C equivocadas y credenciales de Wi-Fi incorrectas. Asegúrese de que todas las conexiones estén seguras y de que el servidor NTP sea accesible desde su red.

Marcas de tiempo del video

  • 00:00 Comenzar
  • 2:10 Introducción
  • 5:15 Explicación del cableado
  • 7:32 Código de Arduino explicado
  • 18:43 Seleccionando la placa ESP32 y el puerto COM en el IDE de Arduino
  • Demostración del Reloj de Internet 20:27

Imágenes

ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
esp32-53-internet-clock-main
esp32-53-internet-clock-main
854-ESP32 Tutorial 53/55- Internet Clock
Idioma: C++
¡Copiado!

Cosas que podrías necesitar

Recursos y referencias

Archivos📁

Archivo Requerido (.h)