En el sistema de riego que voy a construir he decidido usar un RTC (Real Time Clock) para no depender de una conexión a Internet para obtener la hora, con la intención de integrarlo con el sistema operativo para que nptd obtenga la hora del RTC cuando no pueda acceder a los servidores NTP que tiene configurados.
El RTC que he utilizado es el DS3231, es mi favorito y ademas de preciso no requiere de un cristal externo y por ahora he podido conectarlo con todos los dispositivos que uso (Arduino, ESP8266, Onion Omega y Raspberry Pi) sin ningún problema.
Para configurar el interfaz i2c es necesario indicarle al kernel que cargue los módulos i2c-bcm2708 y i2c-dev. Abre el archivo /etc/modules y añádelos al final.
Es posible que en el archivo /etc/modprobe.d/raspi-blacklist.conf, en el caso de existir (en mi caso no estaba), esté incluido el módulo i2c-bcm2708. De ser así conméntalo con un corchete, de lo contrario el kernel no caragará el módulo.
Por último debemos añadir al archivo /boot/config.txt el parámetro dtparam=i2c_arm=on al final del archivo para activar el interfaz i2c, reiniciamos el sistema con:
~$ sudo shutdown -r now
Tras el inicio instalamos i2c-tools y comprobamos si el interfaz funciona con:
~$ sudo i2cdetect -y 1
Si todo sale bien veremos algo parecido a esto:
En la tabla puede verse el DS3231 en la dirección 0x68 y la memoría flash del módulo RTC que estoy usando en al dirección 0x57.
En el siguiente artículo configuraremos el RTC con hwclock y lo integraremos con ntpd.