RTC DS1307 I2C+ Arduino + Display LCD 16×2

 Módulo RTC DS1307 (Reloj de tiempo real)

Este proyecto nos servirá en todas aquellas aplicaciones donde necesitemos conocer el tiempo actual (fecha y hora). Aprenderemos a usar y configurar el módulo RTC DS1307 con arduino. El módulo incorpora reloj de tiempo real DS1307 y una batería para guardar los datos. Para hacerlo más práctico dispondremos de un display LCD 16×2 para visualizar en pantalla el tiempo actual.
Dicho módulo se comunica con arduino a través del bus I2C.

Material

  • LCD 16×2
  • Potenciómetro 1K
  • Arduino UNO
  • Módulo RTC DS1307
  • Protoboard
  • Cables macho-macho, hembra-macho

En la tienda virtual de HeTPro puedes encontrar todos los materiales:  www.hetpro-store.com

Conexiones

El bus I2C utiliza solo 2 cables para establecer la comunicación entre dispositivos, SDA y SCL. En el bus debe configurarse un dispositivo como MAESTRO y uno o varios dispositivos como ESCLAVO.

fig1

Bus I2C

En la plataforma arduino existen varias librerías que podemos usar para ahorrarnos todo el trabajo de configuración.

En arduino los pines correspondientes a dicho bus son:

A4(SDA)

A5(SCL)

En las siguientes imágenes podemos ver los pines correspondientes al módulo RTC DS1307 y su conexión con arduino, así como la conexión del ya conocido display LCD  16×2, si es la primera vez que se utiliza este display recomiendo ver los tutoriales correspondientes para hacerlo funcionar disponibles en esta misma página.

fig2 RTC DS1307

Pines del Módulo RTC DS1307

 

Diagrama de conexión entre arduino, display lcd y RTC DS1307

Terminadas las conexiones, procederemos a añadir la librería RTClib a la IDE de Arduino. La descargaremos y la descomprimiremos en C:/diretorio arduino/libraries.

Link para descargar la librería: https://github.com/adafruit/RTClib

Dirección donde copiar la librería

Esta librería se apoya en la librería Wire para la comunicación I2C, por lo que tendremos que hacer referencia a ella he incluirla en nuestro código, al igual que la librería LiquidCrystal para poder hacer funcionar el display LCD. Estas dos últimas librerías ya vienen añadidas por defecto al IDE arduino por lo que no será necesario descargarlas. RTClib es compatible con cualquier módulo que use el chip RTC DS1307.

 

Código

// 21/04/2015 Remodificado y probado por Roberto Chacón Diaz
// Pin Sda al pin A4 del arduino
// Pin Scl al pin A5 del arduino
// Tambien como en cualquier modulo, se deben conectar VCC y GND.
// Se aceptan sugerencias y/o modificaciones.

#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);//pines del arduino al LCD (RS E D4 D5 D6 D7) RESPECTIVAMENTE
RTC_DS1307 RTC;

void setup()
{
Wire.begin(); //configura el bus I2C estableciendo arduino como MASTER
RTC.begin();
if (! RTC.isrunning()) // se verifica si el modulo rtc esta en funcionamiento, de lo contrario, se imprime: RTC is NOT running!
{
lcd.println("RTC is NOT running!");
delay(10000);
}
RTC.adjust(DateTime(__DATE__, __TIME__)); //esta funcion establecera en el modulo la fecha de creación del archivo .hex generado al compilar el sketch.

lcd.begin(16,2);
lcd.clear();
}

void loop()
{
mostrarRTCLCD(); //Se manda a llamar la funcion "mostrarRTCLCD" y despues se espera un tienpo de 1seg
delay(1000);
}

void mostrarRTCLCD() //Funcion que lee los datos de modulo RTC y despues los imprime en el display
{
DateTime now = RTC.now(); //obtiene datos del modulo RTC
lcd.clear();
lcd.setCursor(0,0);
if(now.day() < 10)
{
lcd.print("0");
}
lcd.print(now.day(), DEC); //imprime dia
lcd.print('/');
if(now.month() < 10)
{
lcd.print("0");
}
lcd.print(now.month(), DEC); //imprime mes
lcd.print('/');
lcd.print(now.year(), DEC);  //imprime el año
lcd.setCursor(0,1);
if(now.hour() < 10)
{
lcd.print("0");
}
lcd.print(now.hour(), DEC); //imprime hora
lcd.print(':');
if(now.minute() < 10)
{
lcd.print("0");
}
lcd.print(now.minute(), DEC); //imprime minutos
lcd.print(':');
if(now.second() < 10)
{
lcd.print("0");
}
lcd.print(now.second(), DEC); //imprime segundos
}

Finalmente unas imágenes del proyecto funcionando.

fig5

RTC DS1307

 

RTC DS1307

RTC DS1307

RTC DS1307

RTC DS1307

 

19 Comments

  1. ulises Julio 24, 2015
    • Hector Torres Agosto 21, 2015
  2. christian lopez Enero 25, 2016
    • Hector Torres Enero 26, 2016
      • miguel Septiembre 1, 2016
        • Saul Jesus Septiembre 1, 2016
  3. Jose Junio 21, 2016
    • Hector Torres Junio 22, 2016
  4. Ricardo Septiembre 4, 2016
    • daco Noviembre 16, 2016
  5. karol beltran Octubre 4, 2016
    • Saul Jesus Octubre 6, 2016
  6. juan Diciembre 3, 2016
    • Jhon Diciembre 15, 2016
      • Saul Jesus Diciembre 16, 2016
  7. guillermo Enero 2, 2017
  8. antonio yzarra Abril 19, 2017
  9. antonio yzarra Abril 19, 2017
  10. Uriel Mayo 14, 2017

Leave a Reply