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.
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):
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:
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
- Etiquetas: raspberry pi, tutorial