ESP32 - Módulo RTC DS1307

En esta guía, vamos a aprender cómo usar el módulo DS1307 RTC con ESP32. En detalle, aprenderemos los siguientes temas:

Acerca del Módulo DS1307 de Reloj en Tiempo Real

El propio ESP32 tiene algunas funciones relacionadas con el tiempo, como millis() y micros(). Sin embargo, no pueden proporcionar la fecha y la hora (segundos, minutos, horas, día, fecha, mes y año). Para obtener la fecha y la hora, necesitamos usar un módulo Reloj de Tiempo Real (RTC) como DS3231, DS1370. El módulo DS3231 tiene una mayor precisión que el DS1370. Consulte DS3231 vs DS1307

Diagrama de pines

El módulo RTC DS1307 (Reloj en tiempo real) incluye 12 pines. Sin embargo, para uso normal, necesita usar 4 pines: VCC, GND, SDA, SCL:

  • Pin SCL: es un pin de reloj para la interfaz I2C.
  • Pin SDA: es un pin de datos para la interfaz I2C.
  • Pin VCC: suministra energía para el módulo. Puede estar entre 3,3 V y 5,5 V.
  • Pin GND: es un pin de tierra.
Pinout del módulo de reloj en tiempo real DS1307

El módulo DS1307 también tiene un soporte para batería.

  • Si insertamos una batería CR2032, mantiene la hora en el módulo cuando la alimentación principal está apagada.
  • Si no insertamos la batería, la información de la hora se pierde si la alimentación principal está apagada y es necesario volver a ajustar la hora.

Diagrama de Cableado

Diagrama de cableado del RTC DS1307 para ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

ESP32 - Módulo RTC DS1307

DS1307 RTC Module ESP32
Vin 3.3V
GND GND
SDA GPIO21
SCL GPIO22

Cómo programar para el módulo RTC DS1307

  • Incluir la biblioteca:
#include <RTClib.h>
  • Declara un objeto RTC:
RTC_DS1307 rtc;
  • Inicializar RTC:
if (! rtc.begin()) { Serial.println("RTC module is NOT found"); while (1); }
  • Por primera vez, configure la RTC con la fecha y la hora de la PC desde la que se compiló el sketch
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • Lee la información de fecha y hora del módulo RTC.
DateTime now = rtc.now(); Serial.print("ESP32 RTC Date Time: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(now.dayOfTheWeek()); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.println(now.second(), DEC);

Código para ESP32 – Cómo obtener la fecha y la hora

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-ds1307-rtc-module */ #include <RTClib.h> RTC_DS1307 rtc; char daysOfWeek[7][12] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; void setup () { Serial.begin(9600); // SETUP RTC MODULE if (! rtc.begin()) { Serial.println("RTC module is NOT found"); Serial.flush(); while (1); } // automatically sets the RTC to the date & time on PC this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // manually sets the RTC with an explicit date & time, for example to set // January 21, 2021 at 3am you would call: // rtc.adjust(DateTime(2021, 1, 21, 3, 0, 0)); } void loop () { DateTime now = rtc.now(); Serial.print("ESP32 RTC Date Time: "); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" ("); Serial.print(daysOfWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.println(now.second(), DEC); delay(1000); // delay 1 seconds }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Realiza el cableado tal como se muestra en la imagen de arriba.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre Arduino IDE en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Abre el Administrador de Bibliotecas haciendo clic en el icono Library Manager en la barra de navegación izquierda de Arduino IDE
  • Busca “RTClib”, y luego encuentra la biblioteca RTC de Adafruit
  • Haz clic en el botón Install para instalar la biblioteca RTC.
Biblioteca RTC para ESP32
  • Es posible que se le pida instalar las dependencias de la biblioteca.
  • Instale todas las dependencias de la biblioteca al hacer clic en el botón Instalar todo.
Biblioteca Adafruit BusIO para ESP32
  • Copia el código anterior y pégalo en el IDE de Arduino
  • Compila y sube el código a la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino
  • Abre el Monitor serie en el IDE de Arduino
  • Ver la salida en el Monitor serie.
COM6
Send
ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:35 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:36 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:37 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:38 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:39 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:40 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:41 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:42 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:43 ESP32 RTC Date Time: 2022/08/22 (Monday) 09:31:44
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!