CONTENIDO ►
El módulo RTC Arduino DS1302 es un módulo de reloj en tiempo real con capacidad de alimentación ininterrumpida por batería de litio. Examinaremos el diagrama de conexión del módulo a la placa Arduino y demostraremos el código que se puede utilizar para ajustar la fecha y la hora deseadas. También hemos incluido una descripción de la librería universal iarduino_RTC.h para trabajar con los módulos DS1302, DS1307 y DS3231.
Para esta actividad necesitaremos:
- Arduino Uno / Arduino Nano / Arduino Mega
- módulo reloj DS1302 / DS1307 / DS3231;
- pantalla LCD 1602 i2c;
- cables de conexion;
- librarias LiquidCrystal_I2C.h y iarduino_RTC.h
Módulo de reloj Arduino pinout, datasheet
La orientación temporal es útil para crear un dispositivo que riegue automáticamente las plantas, encienda las luces o la calefacción según un horario estricto, etc. El controlador Arduino no tiene un reloj incorporado, por lo que si desea que el microcontrolador Arduino Uno realice tareas a una hora específica del día, tendrá que utilizar un módulo ds1307 o similar en su proyecto – Reloj despertador con termómetro o Neopixel Light Clock.

Características módulo RTC DS1307:
- Alimentación: de 4.5V a 5.5V
- Consumo de corriente: 1.5 mA
- Puerto de comunicación: I2C
- Frecuencia máxima de transmisión: 100KHz
- Temperatura de Operación: de 0℃ a +70℃
Características módulo RTC DS1302:
- Alimentación: de 2V a 5.5V
- Consumo de corriente: 300nA a 2Volts
- RST: pin de Inicio / Fin de comunicación serie
- CLK: pin para el reloj de la comunicación serial
- DAT: pin para la transmisión de datos serie
- Temperatura de Operación: de -40℃ a +80℃
El chip consume poca energía y puede contar el tiempo con una precisión de unos pocos segundos. El ds1302 se conecta al Arduino a través de cinco pines. Los pines VCC y Gnd se encargan de alimentar el módulo. Los pines CLK, DAT y RESX se conectan a los pines digitales del microcontrolador Arduino. El módulo reloj de tiempo real ds3231 RTC (Real Time Clock) y el ds1307 se conectan al Arduino mediante el protocolo I2C (SDA y SCL).
Conectar módulo RTC DS1302 Arduino y LCD 1602

| LCD 1602 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VCC | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
Veamos varias opciones para conectar el módulo RTC al Arduino y a la pantalla de texto 1602 I2C. La primera opción utiliza el protocolo SPI para el módulo de reloj ds1302. La hora y la fecha se muestran en el monitor del puerto serie y en la pantalla LCD 1602 i2c. La línea correspondiente debe descomentarse en el programa. Después de hacer los cambios en el esquema y el programa – carga el siguiente código en el microcontrolador Arduino.
Programa Arduino para módulo Real Time Clock DS1302
#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,16,2); #include "iarduino_RTC.h" iarduino_RTC time (RTC_DS1302,5,7,6); // DS1302 // iarduino_RTC time (RTC_DS1307); // DS1307 i2C // iarduino_RTC time (RTC_DS3231); // DS3231 i2C void setup() { Serial.begin(9600); LCD.init(); LCD.backlight(); time.begin(); // 0 sec, 30 min, 18 hour, 2 date, january, 2022, wed time.settime(0, 30, 18, 2, 1, 22, 0); } void loop() { // si ha transcurrido 1 segundo muestra la hora if (millis() % 1000 == 0) { Serial.println(time.gettime("d-m-Y, H:i:s, D")); LCD.setCursor(0,0); LCD.print(time.gettime("d M Y, D")); LCD.setCursor(4,1); LCD.print(time.gettime("H:i:s")); } }
Explicación del código para modulo RTC Arduino DS1302:
- el comando time.settime(); permite definir la fecha y la hora que se mostrará en el monitor del puerto Arduino IDE cada segundo;
- para que la hora no se actualice cada vez que se reinicia el microcontrolador – pon un comentario en la línea time.settime();
Conectar módulo RTC DS1307 Arduino y LCD 1602

| DS1307 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VCC | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
Los módulos de reloj de tiempo real ds1307 y ds3231 se conectan a la placa Arduino a través del protocolo I2C, como un LCD 1602 I2C. El pin SDA se conecta al pin A4 y el pin SCL al pin A5 del microcontrolador Arduino Uno. Cuando conectes el módulo con I2C a la placa Arduino Mega 2560, debes utilizar los puertos SDA (pin 20) y SCL (pin 21). Y en el programa, debe descomentar la línea con el requerido módulo Real Time Clock.
Programa para módulo reloj de tiempo real DS1307
#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,16,2); #include "iarduino_RTC.h" // iarduino_RTC time (RTC_DS1302,5,7,6); // DS1302 iarduino_RTC time (RTC_DS1307); // DS1307 i2C // iarduino_RTC time (RTC_DS3231); // DS3231 i2C void setup() { Serial.begin(9600); LCD.init(); LCD.backlight(); time.begin(); // 0 sec, 30 min, 18 hour, 2 date, january, 2022, wed time.settime(0, 30, 18, 2, 1, 22, 0); } void loop() { // si ha transcurrido 1 segundo muestra la hora if (millis() % 1000 == 0) { Serial.println(time.gettime("d-m-Y, H:i:s, D")); LCD.setCursor(0,0); LCD.print(time.gettime("d M Y, D")); LCD.setCursor(4,1); LCD.print(time.gettime("H:i:s")); } }
Explicación del código para modulo reloj Arduino DS1307:
- el programa difiere del anterior en una línea: en el comentario se cierra otro tipo de módulo rtc.
Cuando conectes la pantalla y el ds3231 al mismo bus i2c – puertos SDA(A4) y SCL(A5), debes especificar qué módulo se utiliza en el boceto. El diagrama de cableado para este tipo de módulo no difiere del diagrama anterior (Diagrama para conectar el ds1307 al Arduino). Puedes utilizar el escáner del bus i2c para ver las direcciones de los dispositivos – si has cambiado las direcciones de dispositivo por defecto establecidas por el fabricante.
Descripción de los comandos de librería iarduino_RTC.h
begin();
– inicialización del módulo
settime(segundos, minutos, horas, día, mes, año, día de la semana);
– el año se indica sin tener en cuenta el siglo, en el formato 0-99
– las horas están en formato de 24 horas, от 0 до 23
– el día de la semana es un número entre 0-Domingo y 6-Sábado
gettime();
– obtener hora y fecha
– gettime(«d-m-Y, H:i:s, D»); responderá con una línea «12-06-2020, 18:30:05, Fri»
con la función gettime:
s – segundos de 00 a 59 (dos símbolos)
i – minutos de 00 a 59 (dos símbolos)
h – horas (formato de 12 horas) de 01 a 12 (dos símbolos)
H – horas (formato de 24 horas) de 00 a 23 (dos símbolos)
d – día del mes de 01 a 31 (dos símbolos)
D – día laborable de lunes a domingo (tres símbolos)
m – mes de 01 a 12 (dos símbolos)
M – mes de enero a diciembre (tres símbolos)
Y – año comprendido entre 2000 y 2099 (cuatro símbolos)
y – año de 00 a 99 (dos símbolos)
Conclusión. El reloj basado en Arduino DS1302 puede ampliarse con una función de despertador y visualización de la temperatura conectando un sensores. Este módulo (Real Time Clock) permite ampliar enormemente las funciones del microcontrolador que se realizarán a determinadas horas del día. Si tienes alguna duda sobre cómo montar y programar un reloj Arduino con RTC y pantalla LCD, déjala en los comentarios del artículo.

Deja una respuesta