驴Quieres aprender a utilizar un m贸dulo de reloj en tiempo real con Arduino? En este art铆culo te daremos todas las instrucciones que necesitas para poder trabajar con los m贸dulos DS1307 y DS3231. Desde c贸mo conectarlos hasta c贸mo programarlos, 隆no te pierdas esta gu铆a completa para mejorar tus proyectos con Arduino!
En esta publicaci贸n, aprender谩 a utilizar el m贸dulo de reloj en tiempo real (RTC) DS1307 con Arduino. Tambi茅n puede seguir esta gu铆a para otros m贸dulos similares como el DS3231 RTC.
Presentamos el m贸dulo de reloj en tiempo real
El m贸dulo de reloj en tiempo real es el de la imagen siguiente (vistas frontal y posterior).

Si es la primera vez que utiliza este m贸dulo, necesitar谩 soldar algunos cabezales de pines.
Como puede ver en la imagen de arriba, hay una bater铆a de respaldo instalada en el m贸dulo. Esto permite que el m贸dulo mantenga el tiempo incluso cuando no est谩 alimentado por Arduino. De esta manera, la hora no se restablecer谩 cada vez que enciendas y apagues el m贸dulo.
Este m贸dulo utiliza comunicaci贸n I2C. Esto significa que se comunica con Arduino a trav茅s de s贸lo 2 pines.
驴Donde comprar?
El reloj en tiempo real es un m贸dulo rentable. tu puedes el M贸dulo de reloj en tiempo real DS1307 en Maker Advisor y encuentra el mejor precio.
Asignaci贸n de pines
隆Cablear el m贸dulo RTC es bastante sencillo!
| Bol铆grafo | Cableado con Arduino Uno |
| SCL | A5 |
| ASD | A4 |
| VCC | 5V |
| Dimensiones | Dimensiones |
Si est谩 utilizando otra placa Arduino en lugar de Uno, verifique qu茅 pines SCL y SDA tiene.
- Nano: SDA (A4);
- MEGA: ASD (20);
- Leonardo: ASD (20); SCL (21)
Ejemplo: mostrar fecha y hora en el monitor serie
Este ejemplo muestra la fecha y la hora en el monitor serie.
Piezas requeridas
Para este ejemplo, necesitar谩 las siguientes piezas (haga clic en los enlaces a continuaci贸n para encontrar el mejor precio en Asesor de creadores):
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools 隆Para encontrar todas las piezas para tus proyectos al mejor precio!
Esquema
Conecte su m贸dulo de reloj en tiempo real a su Arduino como se muestra en los esquemas a continuaci贸n.

c贸digo
Trabajar con el RTC requiere dos pasos importantes:
- Configurar la hora actualpara que el RTC sepa qu茅 hora es
- af茅rrate al tiempo, para que el RTC siempre muestre la hora correcta incluso cuando est茅 apagado
Establecer la hora actual en el reloj de tiempo real
Para configurar la hora actual, debe cambiar el c贸digo especificado.
- Establezca su hora actual en la funci贸n establecerDS3231time()

Los par谩metros de la funci贸n est谩n resaltados en rojo: segundos, minutos, horas, d铆a de la semana, fecha, mes y a帽o (en ese orden). El domingo es el primer d铆a de la semana y el s谩bado es el s茅ptimo. No olvides comentar esta l铆nea de c贸digo.
Despu茅s de configurar la hora actual, puede cargar el c贸digo proporcionado con los cambios deseados.
El c贸digo proporcionado fue escrito por John Boxall de tronixstuff. Puedes leer su tutorial. Aqu铆.
// Written by John Boxall from http://tronixstuff.com
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val){
return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val){
return( (val/16*10) + (val%16) );
}
void setup(){
Wire.begin();
Serial.begin(9600);
// set the initial time here:
// DS3231 seconds, minutes, hours, day, date, month, year
setDS3231time(30,42,16,5,13,10,16);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year){
// sets time and date data to DS3231
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0x0E); // select register
Wire.write(0b00011100); // write register bitmap, bit 7 is /EOS
Wire.write(decToBcd(second)); // set seconds
Wire.write(decToBcd(minute)); // set minutes
Wire.write(decToBcd(hour)); // set hours
Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
Wire.write(decToBcd(month)); // set month
Wire.write(decToBcd(year)); // set year (0 to 99)
Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year){
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); // set DS3231 register pointer to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void displayTime(){
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);
// send it to the serial monitor
Serial.print(hour, DEC);
// convert the byte variable to a decimal number when displayed
Serial.print(":");
if (minute<10){
Serial.print("0");
}
Serial.print(minute, DEC);
Serial.print(":");
if (second<10){
Serial.print("0");
}
Serial.print(second, DEC);
Serial.print(" ");
Serial.print(dayOfMonth, DEC);
Serial.print("/");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(year, DEC);
Serial.print(" Day of week: ");
switch(dayOfWeek){
case 1:
Serial.println("Sunday");
break;
case 2:
Serial.println("Monday");
break;
case 3:
Serial.println("Tuesday");
break;
case 4:
Serial.println("Wednesday");
break;
case 5:
Serial.println("Thursday");
break;
case 6:
Serial.println("Friday");
break;
case 7:
Serial.println("Saturday");
break;
}
}
void loop(){
displayTime(); // display the real-time clock data on the Serial Monitor,
delay(1000); // every second
}
Mantener el tiempo en el reloj de tiempo real.
Si no deseas restablecer la hora cada vez que se apaga el RTC, debes hacer lo siguiente:
- Despu茅s de configurar la hora, debe comentar sobre la funci贸n de configuraci贸n de la hora y cargar el c贸digo nuevamente.

Este es un paso muy importante para configurar la hora en su RTC. Si no hace esto, cada vez que reinicie su RTC, mostrar谩 la hora configurada anteriormente y no la hora actual.
demostraci贸n
Abra el monitor serie con una velocidad de 9600 baudios y ver谩 los resultados.
Aqu铆 el monitor serie muestra la fecha y hora actuales.

Envolver
Espero que encuentres 煤til esta gu铆a.
El m贸dulo RTC es realmente 煤til y puedes usarlo como reloj, temporizador, etc.
Si desea mostrar la fecha y la hora en la pantalla OLED usando el m贸dulo RTC, lea la siguiente publicaci贸n:
- Instrucciones para pantalla OLED de 0,96 pulgadas con Arduino
驴Qu茅 proyectos has realizado o planeas trabajar con este m贸dulo?
Dejeme saber dejando un comentario abajo.
Gracias por leer,
rui y sara
[automatic_youtube_gallery type=禄search禄 search=禄Instrucciones para el M贸dulo de Reloj en Tiempo Real (RTC) con Arduino (DS1307 y DS3231)
禄 limit=禄1″]
Introducci贸n al M贸dulo de Reloj en Tiempo Real (RTC) con Arduino (DS1307 y DS3231)
Este art铆culo se trata de c贸mo utilizar el m贸dulo DS1307 Real Time Clock (RTC) con Arduino. Tambi茅n puedes seguir esta gu铆a para otros m贸dulos similares como el DS3231 RTC.
Presentaci贸n del m贸dulo de Reloj en Tiempo Real
El m贸dulo de reloj en tiempo real se muestra en la siguiente imagen (vista frontal y trasera).

Cuando utilices este m贸dulo por primera vez, necesitar谩s soldar algunos pines de conexi贸n.
Como puedes ver en la imagen anterior, el m贸dulo tiene una bater铆a de respaldo instalada. Esto permite que el m贸dulo conserve la hora, incluso cuando no est谩 siendo alimentado por Arduino. De esta manera, cada vez que enciendes y apagas tu m贸dulo, la hora no se reinicia.
Este m贸dulo utiliza comunicaci贸n I2C. Esto significa que se comunica con Arduino utilizando solo 2 pines.
驴D贸nde comprar?
El m贸dulo de Reloj en Tiempo Real es un componente asequible. Puedes revisar el m贸dulo DS1307 Real Time Clock en Maker Advisor y encontrar el mejor precio.
Conexi贸n de pines
Conectar el m贸dulo RTC es bastante sencillo. Aqu铆 est谩 la disposici贸n de los pines:
- SCL – A5
- SDA – A4
- VCC – 5V
- GND – GND
Si est谩s utilizando una placa de Arduino diferente al Uno, verifica cu谩les son sus pines SCL y SDA.
Ejemplo: Mostrando fecha y hora en el monitor serial
Este ejemplo muestra la fecha y hora en el monitor serial.
Partes requeridas:
- Arduino UNO
- M贸dulo DS1307 RTC
- Cables jumper
Puedes utilizar los enlaces anteriores o ir directamente a MakerAdvisor.com/tools para encontrar todas las partes para tus proyectos al mejor precio.
Esquem谩tico
Conecta tu m贸dulo de Reloj en Tiempo Real a tu Arduino como se muestra en el esquema.
C贸digo
Trabajar con el RTC requiere dos pasos importantes: establecer la hora actual y retener la hora.
Haz clic aqu铆 para acceder al c贸digo proporcionado por John Boxall de tronixstuff.
Retener la hora en el Reloj en Tiempo Real
Si no deseas restablecer la hora cada vez que se apague el RTC, debes comentar la funci贸n que establece la hora despu茅s de configurarla y cargar el c贸digo nuevamente.
Demostraci贸n
Abre el monitor serial a una velocidad de baudios de 9600 y ver谩s los resultados.
Gracias por leer,
Rui y Sara

