Reloj RTC DS1307
Cuando nos ponemos a hacer un proyecto grande con Arduino, nos damos cuenta (sobretodo si siempre has programado en lenguajes de alto nivel) de que no disponemos de un reloj interno, ya sea para programar periodos de tiempo como para saber que horas es y actuar en consecuencia.
Eso tiene una solución muy sencilla, utilizar un pequeño y económico módulo RTC DS1307, es un módulo muy utilizado y no sólo con Arduino.
El diagrama del módulo es bastante sencillo, por lo que nos lo podemos hacer nosotros:
En este enlace se pueden ver los pasos del montaje paso a paso Montaje RTC DS1307
Aunque lo podemos encontrar en el mercado por menos de 2€, por ejemplo Comprar eBay
La única pega que yo he encontrado de los que venden es la batería, los componentes más económicos no taren un alojamiento adecuado y la pila a poco que lo toques se cae. Y deja de estar en hora el reloj.
Por lo que yo recomiendo un módulo con un soporte adecuado de este estilo:
Una ventaja que tiene este módulo es que utiliza el interface I2C el mismo que vimos para las pantallas LCD que vimos hace unos dias.
Aquí tenemos la tabla de conexión distinguiendo entre el Arduino Mega y el resto:
I2C
|
Arduino
|
Arduino Mega
|
VCC
|
5V
|
5V
|
GND
|
GND
|
GND
|
SCL
|
A5
|
D21
|
SDA
|
A4
|
D20
|
Podemos tener varios dispositivos utilizando este interface, por lo que no son incompatibles la pantalla LCD y el RTC al mismo tiempo conectados.
Lo conectamos según la tabla a un Arduino Uno:
Para trabajar con el RTC DS1307 tenemos que incluir las librería:
#include "Wire.h"
#include "DS1307new.h"
#include "DS1307new.h"
Estas librerías vienen con el compilador de Arduino, por lo que no es necesario bajarlas. Si no tienes la librería DS1307new la puedes bajar de aquí: Librería DS1307.
Os dejo un ejemplo de Oliver Kraus que yo he utilizado como base en los proyectos donde utilizo el RTC. es muy interesante ya que nos da mucha funcionalidad sobre el Reloj. Ejemplo RTC DS1307 (URL Alternativa Ejemplo RTC DS1307)
Subimos este scketch al Arduino y vemos la interactuación que podemos hacer con el reloj.
A partir de este ejemplo ya podemos modificarlo de manera que podamos programar horarios para lecturas de sensores, poner en hora via web, etc ...