🛠 Ajouter une horloge temps réel sur le bus I2C des capes
Objetivos
Cablear y configurar un reloj de tiempo real (RTC) I2C (clase DS3231/DS1307) en el bus I2C2 de la BeagleBone Black — el bus histórico de las capes, cuyas direcciones 0x54 a 0x57 están ocupadas por las EEPROM de identificación. Aprenderá a sondear el bus, declarar el módulo al kernel y sincronizar el reloj del sistema para que la fecha sobreviva a un corte total de corriente sin red.
Material
- 1 BeagleBone Black
- 1 módulo RTC DS3231 (o DS1307) + pila de botón CR2032
- Cableado en P9: P9_19 = I2C2_SDA, P9_20 = I2C2_SCL, P9_03 = 3,3 V, P9_01/P9_02 = GND
- El bus ya está elevado a 3,3 V en la placa: no añada resistencias de pull-up adicionales
Código completo
sudo apt install i2c-tools
sudo i2cdetect -l # repérer le numéro du bus I2C2
sudo i2cdetect -y -r 2 # le DS3231 répond en 0x68
# Déclaration à la volée pour tester (le module noyau existe déjà) :
sudo modprobe rtc-ds1307
echo ds1307 0x68 | sudo tee /sys/bus/i2c/devices/i2c-2/new_device
# Quelle RTC est laquelle ?
ls /sys/class/rtc/ ; cat /sys/class/rtc/rtc1/name
# Régler puis lire l'horloge RTC
sudo date -s "2026-10-14 09:00:00"
sudo hwclock -f /dev/rtc1 -w # système -> RTC
sudo hwclock -f /dev/rtc1 -r # RTC -> système
# Relire après un redémarrage complet (sans réseau)
sudo reboot
Verificación esperada
i2cdetect muestra la dirección 0x68; después de ejecutar hwclock -w y reiniciar con el cable de red DESCONECTADO, la fecha se conserva (el kernel transfiere la hora de la RTC al arrancar). El archivo name de rtc1 contiene «ds1307» o «ds3231».
Errores frecuentes
- Equivocarse de número de bus: i2cdetect -l es obligatorio, el bus visible en los pines no siempre es i2c-2 según la imagen.
- Colisión de direcciones: las EEPROM de las capes ocupan 0x54 a 0x57; un módulo RTC genérico en 0x68 evita el conflicto, pero verifique antes de añadir un segundo dispositivo.
- Olvidar la pila de botón: sin ella, la RTC se reinicia a cero en cada corte; pruébela (mida el voltaje del portapilas).
- Añadir resistencias de pull-up de 5 V en SDA/SCL: el bus funciona a 3,3 V, los niveles de 5 V dañan los pines.
- Confiar en poweroff para preservar la pila: el modo SLEEP del PMIC TPS65217 se consideró arriesgado para el hardware; el kernel mainline fuerza un apagado OFF completo (propiedad ti,pmic-shutdown-controller) — no manipule el PMIC manualmente.
Otros tutoriales para esta placa
- Premier boot de la BeagleBone Black avec un seul câble mini-USB
- Comprendre les triggers en pilotant les 4 LED utilisateur
- Bouton et LED avec Adafruit_BBIO, la bibliothèque historique
- Lire l'ADC 12 bits sans griller le SoC : la règle des 1,8 V
- Micro-HDMI : exploiter les limites d'affichage de la BBB
- Capes historiques : capemanager, EEPROM d'identification et pièges des broches
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash