Añadiendo un Reloj de Tiempo Real a Raspberry Pi (DS3231)

IMG_20150305_150650556

En esta ocasión les voy a mostrar como agregar un Reloj de Tiempo Real (RTC por sus siglas en ingles) a nuestra Raspberry, pero antes que todo ¿qué es un RTC?

Un reloj de tiempo real es un circuito integrado que mantiene la hora actual y la guarda para su posterior consulta o manipulación.

IMG_20150305_150749341

¿Y esto para que nos sirve? Espero te hayas dado cuenta que cuanto tu apagas tu raspberry pi y la vuelves a encender las raspberry no conserva la fecha ni la hora actual, aunque tu la coloques correctamente antes de apagarla, esto se debe a que no se cuanta con un RTC por default.

IMG_20150305_150720430_HDR

En que casos se usa:

  • Medición de pruebas
  • Medición de eventos con registro de hora y fecha

Aunque controlar el tiempo puede hacerse sin un RTC, usar uno tiene beneficios:

  • Bajo consumo de energía (importante cuando está funcionando con una pila)
  • Libera de trabajo al sistema principal para que pueda dedicarse a tareas más críticas.
  • Algunas veces más preciso que otros métodos

Espero haya quedado un poco claro que beneficios se tienen al tener un RTC y sus aplicaciones, ahora comencemos con las instalacion de este modulo con el CI DS3231, lo primero que debemos (con nuestra raspberry apagada) hacer es conectarlo de la siguiente manera

IMG_20150305_150605137

IMG_20150305_150642391

Ahora encendemos nuestra raspberry y nos vamos a nuestra teminal y ejecutamos el siguiente comando

# Removemos de la blacklist el modulo para que pueda ser cargado al inicio
sudo sed -i 's/blacklist i2c-bcm2708/#blacklist i2c-bcm2708/' /etc/modprobe.d/raspi-blacklist.con

Con esto ya podemos ahora leer nuestro modulo por i2c, ya que este modulo se comunica por medio de este protocolo

# Ahora leemos el modulo
sudo modprobe i2c-bcm2708

Una vez activado hay que notificarle a linux que del nuevo dispositivo que hemos insertado

# Notificamos a linux del dispositivo de RTC
echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device

Y podemos hacer una prueba de que se esta detectando el modulo

# Testeamos que linux pueda ver el modulo de RTC
sudo hwclock

En mi caso me dio una fecha del 2000, para actualizar la fecha a la correcta podemos usar, pero debemos estar conectados a internet

sudo ntpd -gq
sudo hwclock -w

O si por alguna razón no tenemos internet podemos hacerlo manualmente

sudo date -s "Mar 5 2015 12:46:00"
# Ahora que el sistema tiene la fecha correcta, simplemente tranferimos la información al chip:
sudo hwclock -w

Ustedes deben modificar los valores a su fecha actual

Ahora si queremos que desde el arranque nuestra raspberry detecte nuestro RTC debemos ejecutar el siguiente comando y con esto ya no tendremos que volver a ejecutar los primeros comandos en cada arranque

# Añadimos el RTC al arranque
sudo sed -i 's#^exit 0$#echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device#' /etc/rc.local
echo exit 0 | sudo tee -a /etc/rc.local

Bueno eso es todo, espero le haya servido este pequeño tutorial y espero un RTC sea de utilidad en sus proyectos.

Nos vemos Inventores!