🛠 Ajouter une horloge temps réel sur le bus I2C des capes
Objectifs
Câbler et configurer une horloge temps réel I2C (classe DS3231/DS1307) sur le bus I2C2 de la BeagleBone Black — le bus historique des capes, celui dont les adresses 0x54 à 0x57 sont occupées par les EEPROM d'identification. Vous apprendrez à sonder le bus, déclarer le module au noyau, et synchroniser l'horloge système pour que la date survive à une coupure totale de courant sans réseau.
Matériel
- 1 BeagleBone Black
- 1 module RTC DS3231 (ou DS1307) + pile bouton CR2032
- Câblage sur P9 : P9_19 = I2C2_SDA, P9_20 = I2C2_SCL, P9_03 = 3,3 V, P9_01/P9_02 = GND
- Le bus est déjà tiré en 3,3 V sur la carte : ne pas ajouter de pull-up supplémentaires
Code complet
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
Vérification attendue
i2cdetect montre l'adresse 0x68 ; après hwclock -w puis un reboot avec le câble réseau DÉBRANCHÉ, la date est conservée (le noyau relaie la RTC au démarrage). Le fichier name de rtc1 contient « ds1307 » ou « ds3231 ».
Erreurs fréquentes
- Se tromper de numéro de bus : i2cdetect -l est obligatoire, le bus visible côté broches n'est pas toujours i2c-2 selon l'image.
- Collision d'adresse : les EEPROM des capes occupent 0x54 à 0x57 ; un module RTC générique en 0x68 évite le conflit, mais vérifiez avant d'ajouter un second périphérique.
- Oublier la pile bouton : sans elle, la RTC repart à zéro à chaque coupure ; la tester (mesurer la tension du porte-pile).
- Ajouter des pull-up 5 V sur SDA/SCL : le bus est en 3,3 V, les niveaux 5 V abîment les broches.
- Compter sur poweroff pour préserver la pile : le mode SLEEP du PMIC TPS65217 a été jugé risqué pour le matériel ; le noyau mainline force l'arrêt OFF complet (propriété ti,pmic-shutdown-controller) — ne pas bricoter le PMIC à la main.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash