Módulo RTC y Raspberry Pi para controlar el tiempo

Publicado por Loli Diéguez en

La Raspberry Pi no guarda la fecha de forma permanente, pero esto se puede arreglar fácilmente con la ayuda del módulo DS1307 RTC (reloj en tiempo real), este dispositivo tiene un reloj en tiempo real, independientemente de la conexión a Internet existente. Esto es una ventaja en muchas aplicaciones que requieren funcionar durante mucho tiempo pero no se pueden conectar a Internet.

En este tutorial te cuento como instalar un reloj en tiempo real (RTC) y la sincronización de la hora del sistema de Linux / Raspbian.

Material necesario

Necesitarás las siguientes piezas de hardware:

  • Pequeño módulo RTC DS1307 I2C *
  • Soldador (si no tienes experiencia usando este equipo pide ayuda)
  • Cable puente hembra-hembra 

*Alternativamente, el módulo RTC DS3231 que debería también funcionar.

Preparación

Los módulos Tiny RTC están hechos para Arduino, cuyos pines IO funcionan a 5V. Dado que los GPIO de la Raspberry Pi solo funcionan a 3.3V y un voltaje más alto puede dañarlos, tenemos que quitar dos resistencias de la placa.

Módulo Tiny RTC      Parte Trasera del módulo Tiny RTC 

En la parte posterior están las dos resistencias (R2 y R3) que vas a quitar. Para hacer esto, calentamos las fijaciones con la punta del soldador. Además, se pueden soldar tiras de pines, que suelen estar incluidas. Solo necesitamos el lado con 7 pines (derecha):

Modulo RTC, marcando las resistencias R2 y R3

 

Las resistencias R2 y R3 deben retirarse para no dañar la Raspberry Pi con un voltaje demasiado alto.

Alternativamente podrías usar un convertidor de nivel para pasar de un voltaje a otro y no poner en peligro tus componentes.

Conexión del módulo Raspberry Pi RTC I2C

El módulo se conecta a través de la interfaz I2C. Para ello, usamos el lado derecho, que tiene 7 pines, porque en el modo offline de la Raspberry la corriente se va a sacar de la batería para que el reloj no se detenga.

Es posible que otros módulos solo tengan una tira de pines. La asignación es la siguiente:

Módulo RTC Raspberry Pi
SCL GPIO 3 / SCL (patilla 5)
SDA GPIO 2 / SDA (patilla 3)
VCC / 5V 5 V (patilla 2)
GND GND (patilla 6)

 

Los módulos RTC difieren ligeramente en diseño, por lo que la siguiente imagen solo debe tomarse como una guía. Es importante que los pines conectados sean correctos:

Croquis con los pines marcados

Software Raspberry Pi RTC

Antes de que podamos realmente comenzar, debemos asegurarnos de que todos los paquetes estén actualizados, por lo que, primero los actualizamos y luego instalamos el software I2C:

sudo apt-get update && sudo apt-get upgrade - yes
sudo apt-get install i2c-tools

Luego, el bus I2C debe activarse, si aún no lo has hecho:

sudo raspi-config

Activa todo en "Opciones avanzadas"> "I2C" (simplemente confirma con Sí). 

Puede que sea necesario reiniciar.

Ahora editamos el archivo de módulos:

sudo nano / etc / modules

y agrega las entradas que faltan al final:

i2c-bcm2708
i2c-dev
rtc-ds1307

Guarda y sal con CTRL + O, CTRL + X. Para activar los módulos, se deben cargar los siguientes paquetes:

sudo modprobe i2c_bcm2708
sudo modprobe i2c_dev
sudo modprobe rtc-ds1307

Ahora podemos ver si el módulo RTC es reconocido por el bus I2C, el parámetro "-y 1" en la siguientes lineas de codigo indican que es Rev.2. Solo que la primera Raspberry Pi corresponde a la Revisión 1:

i2cdetect -y 1

Deberías ver el siguiente resultado:

pi @ raspberrypi: ~ $ i2cdetect -y 1
 0 1 2 3 4 5 6 7 8 9 abcdef
00: - - - - - - - - - - - - -
10: - - - - - - - - - - - - - - - -
20: - - - - - - - - - - - - - - - -
30: - - - - - - - - - - - - - - - -
40: - - - - - - - - - - - - - - - -
50:50 - - - - - - - - - - - - - - -
60: - - - - - - - - 68 - - - - - - -
70: - - - - - - - -

Por tanto, el módulo ha sido reconocido y se puede consultar mediante  i2cget -y 1 0x68. Dado que un código hexadecimal es difícil de leer, ingresamos al módulo como un nuevo dispositivo I2C:

sudo bash
echo ds1307 0x68> / sys / class / i2c-adapter / i2c-1 / new_device
exit

Entonces podemos simplemente leer el tiempo usando  sudo hwclock -r. 

Puedes obtener la hora local del sistema con  date.

En mi caso, el reloj de tiempo real no estaba configurado correctamente, por lo que tuve que configurarlo primero. Dado que la hora del sistema local es correcta, lo he sincronizado de la siguiente manera (por cierto, todos los comandos se pueden encontrar en la documentación de hwclock):

sudo hwclock --set --date = "$(date" +% m /% d /% y% H:% M:% S ")"

Si deseas cambiar la hora del sistema (¡y la zona horaria!), debes hacerlo usando  sudo raspi-config, antes de sincronizar las horas.

Para configurar la hora del sistema automáticamente con cada reinicio, tenemos que escribir un comando set en el inicio automático. Para hacer esto, editamos el archivo:

sudo nano /etc/rc.local

Las siguientes dos líneas se agregan antes  exit 0:

echo ds1307 0x68> / sys / class / i2c-adapter / i2c-1 / new_device
hwclock --hctosys

 

Después de reiniciar, se debe leer y configurar la hora correcta desde el módulo Raspberry Pi RTC, sin ninguna conexión a Internet.

A CONTINUACIÓN TENÉIS OTROS ARTÍCULOS INTERESANTES


Compartir esta publicación



← Publicación más antigua Publicación más reciente →