¡Tu carrito está actualmente vacío!
Utilizar módulo RTC con ESP32

📌Pontevedra 🇪🇸 España |
Introducción
Los módulos RTC (Real Time Clock) son muy útiles para mantener la hora precisa en proyectos que no tienen acceso a internet o que necesitan una comprobación adicional. Aquí se explica cómo usar el módulo RTC DS3231 con el ESP32.
¿Por qué usar un RTC?
Los módulos RTC son importantes para registrar eventos con marcas de tiempo exactas, como en sistemas de registro de datos y automatización del hogar. Además, son útiles en sistemas que necesitan mantener la hora correcta durante cortes de energía gracias a su batería de respaldo.
Componentes necesarios
- ESP32
- Módulo RTC DS3231
- Cables de conexión
- Protoboard (opcional)
- Batería de respaldo para el DS3231 (generalmente una pila de litio CR2032)
Conexión del DS3231 al ESP32
Conectar los siguientes pines:
- VCC del DS3231 a 3.3V del ESP32
- GND del DS3231 a GND del ESP32
- SDA del DS3231 a GPIO 21 del ESP32
- SCL del DS3231 a GPIO 22 del ESP32
Instalación de librerías
Instalar las librerías Wire
y RTClib
Configuración y lectura de la fecha y hora
El siguiente programa configura y lee la fecha y hora del DS3231 usando el ESP32:
// Importar las librerías necesarias
#include
#include
// Crear una instancia del objeto RTC_DS3231
RTC_DS3231 rtc;
void setup() {
// Iniciar la comunicación serial
Serial.begin(115200);
// Iniciar la comunicación I2C
Wire.begin();
// Comprobar si el RTC está conectado correctamente
if (!rtc.begin()) {
Serial.println("No se encontró el RTC.");
while (1);
}
// Configurar el RTC con la fecha y hora actual
if (!rtc.isrunning()) {
Serial.println("El RTC no está corriendo, se establece la fecha y hora.");
// Ajustar la fecha y hora (año, mes, día, hora, minuto, segundo)
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
// Obtener la fecha y hora actual
DateTime now = rtc.now();
// Mostrar la fecha y hora en el serial
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
// Esperar un segundo antes de la próxima lectura
delay(1000);
}
Explicación del código
Este programa inicia la comunicación con el módulo RTC DS3231 y configura la fecha y hora actuales si el RTC no está funcionando. Luego, en el bucle principal (loop()
), lee la fecha y hora del RTC cada segundo y las muestra en el monitor serial.
Comunicación serial e I2C
En setup()
, iniciar la comunicación serial a 115200 baudios y la comunicación I2C con Wire.begin()
. Comprobar si el RTC está conectado correctamente utilizando rtc.begin()
. Si no se encuentra el RTC, mostrar un mensaje de error y detener el programa.
Configurar el RTC
Si el RTC no está funcionando, establecer la fecha y hora actuales usando rtc.adjust()
con la fecha y hora de compilación del programa.
Leer y mostrar la fecha y hora
En loop()
, obtener la fecha y hora actuales con rtc.now()
. Formatear y mostrar esta información en el monitor serial. Esperar un segundo antes de la próxima lectura utilizando delay(1000)
.
Conclusión
Usar un módulo RTC como el DS3231 con el ESP32 es útil para mantener la hora exacta en proyectos que no tienen acceso a internet o necesitan una comprobación adicional de la hora. Integrarlos es fácil y proporciona una funcionalidad valiosa para proyectos de registro de datos, automatización y más.
Etiquetas:
Comentarios
2 respuestas a «Utilizar módulo RTC con ESP32»
necesito conectar dos dispositivos i2c en el mismo cable. Son un DS3231 y un lector de nfc pn532
Para conectar dos dispositivos I2C en el mismo cable, necesitarás utilizar un multiplexor I2C. Un multiplexor I2C te permitirá controlar la comunicación entre los dos dispositivos conectados al mismo bus I2C.
Aquí te dejo los pasos generales para conectar los dispositivos DS3231 y PN532 utilizando un multiplexor I2C:
Conecta los pines de alimentación (VCC y GND) de ambos dispositivos a una fuente de alimentación adecuada.
Conecta los pines SDA (datos) y SCL (reloj) del DS3231 y PN532 al multiplexor I2C. Asegúrate de seguir las pautas de conexión del multiplexor I2C que estés utilizando.
Configura el multiplexor I2C para que establezca la comunicación con el dispositivo DS3231 o PN532 según sea necesario. Puedes hacer esto enviando comandos de control al multiplexor a través del bus I2C.
Una vez que hayas configurado el multiplexor, puedes comunicarte con los dispositivos DS3231 y PN532 de forma individual utilizando las direcciones I2C correspondientes a cada dispositivo.Recuerda que los detalles específicos de conexión pueden variar según el multiplexor I2C que estés utilizando y las especificaciones de los dispositivos DS3231 y PN532. Asegúrate de consultar las hojas de datos de los dispositivos y el multiplexor para obtener información más detallada sobre las conexiones y configuraciones requeridas.
Deja una respuesta