Cómo integrar el módulo DS3231a una Raspberry Pi (Modelo 1B - Rev 2) 🐧️
Desde mis días en la universidad quería experimentar con un módulo RTC (Real-Time Clock / Reloj de Tiempo Real), un componente clásico en el mundo maker para mantener la hora y fecha exactas en proyectos de electrónica. Cuando descubrí que podíamos integrar uno fácilmente en la veterana Raspberry Pi 1B (Revisión 2) y, de paso, darle uso al bus de comunicación I2C, supe que era la excusa perfecta para ponernos manos a la obra.
El módulo DS3231 y sus características
Es un circuito de alta precisión basado en un oscilador de cristal compensado por temperatura (TCXO), lo que le otorga la capacidad de mantener la fecha y la hora de manera totalmente autónoma.
Entre sus especificaciones más destacadas encontramos:
- Alta precisión: Un margen de error inferior a ∓ 2ppm en rangos de temperatura de 0 °C a +40 °C.
- Interfaz de comunicación: Utiliza el bus serial I2C mediante las líneas dedicadas SDA y SCL.
- Respaldo energético: Cuenta con un zócalo para albergar una pila de botón (habitualmente CR2032) que alimenta el oscilador y los registros internos cuando la Raspberry Pi pierde la alimentación eléctrica principal o este apagada.
- Funciones adicionales: Incorpora calendario completo con gestión de años bisiestos, doble alarma programable y, en la gran mayoría de variantes comerciales, un chip de memoria EEPROM integrado (modelo AT24C32).
Parte 1: Conexión física y precauciones en el hardware
Este módulo opera en un rango de alimentación flexible de 3V a 5V, muy importante para nuestro proyecto y lo conseguí por unos 5 dólares con batería y envío incluido a través de Mercado Libre Venezuela.
El módulo ofrece dos alternativas para su conexión: unos pines macho ideales para protoboards o cables Dupont, y unos orificios (bornes) para soldar directamente. Lo mejor es que todo está muy bien Identificado en el circuito. Aun así, mi mayor recomendación es tener sumo cuidado con los pines GPIO de la Raspberry Pi, ya que carecen de cualquier tipo de protección eléctrica. A continuación te muestro la disposición de los pines de mi modelo, pero recuerda consultar siempre el diagrama específico de la versión de tu placa.
Esquema de conexionado para la Raspberry Pi 1B (Rev 2)
Con la placa totalmente apagada y desenergizada, realizamos los puentes correspondientes:
Parte 2: Configuración del sistema operativo
Para este proyecto estoy utilizando Raspberry Pi OS Lite, un sistema robusto y ligero basado en la distribución Debian 13 (Trixie). Todo el proceso lo lleve a cabo mediante comandos a través de una sesión remota por SSH.
Paso 1: Habilitar el bus I2C y el overlay en el kernel
Abrimos el archivo de configuración global del firmware:
$ sudo nano /boot/firmware/config.txt
Aseguramos que el bus I2C esté activo e indicamos al sistema que cargue el controlador nativo del RTC en la dirección estándar 0x68 agregando al archivo:
dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231
Paso 2: Cargar los módulos necesarios en el arranque
Abrimos el archivo de gestión de módulos del kernel:
$ sudo nano /etc/modules
Y añadimos el soporte requerido para el bus:
i2c-dev
i2c-bcm2835
Paso 3: Instalar herramientas de diagnóstico y comprobar el bus
Instalamos el paquete de utilidades I2C:
$ sudo apt update
$ sudo apt install i2c-tools
Reiniciamos el equipo ($ sudo reboot) y al reconectarnos ejecutamos el comando de escaneo del bus:
$ sudo i2cdetect -y 1
Si el cableado y la configuración son correctos, veremos la letra UU en la posición 68 (lo que confirma que el núcleo de Linux ya ha detectado y reclamado el chip DS3231) y el valor 57, que corresponde a la memoria EEPROM integrada en el módulo.
Parte 3: Integración con systemd-timesyncd y adiós al fake-hwclock
En Debian 13, la gestión temporal del sistema viene resuelta de manera nativa:
- Si disponemos de conexión a red, el servicio systemd-timesyncd mantiene sincronizado el reloj del sistema operativo y del RTC consultando los servidores NTP.
- Al arrancar en entornos offline o sin red, el kernel lee automáticamente la hora física del dispositivo /dev/rtc0 (el DS3231) antes de levantar los servicios generales.
¿Por qué debemos desinstalar el paquete fake-hwclock?
Las versiones clásicas de Raspberry Pi OS incluían por defecto un paquete llamado fake-hwclock cuya única función era simular un reloj guardando la última hora conocida en un archivo local al apagar el equipo. Al iniciar nuevamente, arranca con esa ultima hora y si se posee acceso a internet se actualizara y se corrige el desfase.
Ahora que disponemos de un reloj de hardware real respaldado por batería, debemos purgar este paquete para evitar interferencias:
$ sudo apt purge fake-hwclock
Para comprobar que todo opera de maravilla y revisar el estado general del reloj del sistema y del hardware, ejecutamos:
$ timedatectl status
Aquí vemos que el reloj del sistema, del NTP y del RTC están sincronizados.
¿Se puede aprovechar el sensor de temperatura del DS3231?
Sí, totalmente. El chip integra internamente un sensor térmico que utiliza de forma constante para calcular compensaciones sobre el cristal de cuarzo, garantizando así la precisión milimétrica del reloj.
Podemos consultar esa lectura directamente desde la consola ejecutando la siguiente instrucción:
$ cat /sys/class/rtc/rtc0/device/hwmon/hwmon*/temp1_input
Este comando arrojará un número entero (por ejemplo, 24250), el cual representa la temperatura expresada en milésimas de grado Celsius. Para obtener el valor real en grados centígrados, simplemente divides el resultado entre 1000 (en este caso, equivaldría a 24.25 °C ).
Aunque está diseñado para la calibración interna del componente, sirve perfectamente como una referencia aproximada de la temperatura ambiental en el interior de la caja de tu Raspberry Pi.
Mas información sobre Raspberry Pi aquí.







Comentarios
Publicar un comentario
🤔 con que esto tenemos...