Utilisation du module DS1307 Real Time Clock dans Raspbian Trixie.
Un article proposé par François F6DAA
Les raspberrys n’ont pas de puce de sauvegarde du temps avec une pile intégrée pour que le Pi reste à l’heure s’il n’a pas de connexion internet. En effet, au boot, le raspberry va chercher des serveurs de temps NTP sur sa connexion réseau IP pour se mettre à l’heure. Donc s’il n’y a pas de réseau, le raspberry ne se mettra pas à l’heure.
Pour nous radioamateurs, si on veut installer un équipement radio avec un raspberry dans la nature, il va falloir palier cette déficience. Certes on peut envisager d’utiliser un module GPS ou un module de réception radio ondes longues DCF77, mais la fiabilité n’est pas totale.
A minima l’utilisation d’un module RTC est indispensable. Mais il est toujours possible d’y adjoindre une module GPS ou DCF77 si on veut mettre à jour le module RTC.
Avec les nouvelles versions de linux raspbian, il y a des changements pour l‘installation et la configuration de ces modules. Cela a été le cas avec Bookworms, et il en est de même avec la distribution Trixie qui est aussi désignée par Debian 13.
On aborde ici le cas du seul module RTC. La dérive éventuelle de ces modules n’empêchera pas le fonctionnement normal du raspberry pour la quasi totalité de nos usages.
Les modules RTC : DS1307, DS3231 ou DS1302. sont connus. Ils sont tous sous i2c comme bus d’interface. Le module DS3231 a l’avantage de sa meilleure tenue en température et sa meilleure précision. Mais pour nos utilisations les DS1302 et DS1307 sont largement suffisants.
L’image de droite est extraite de celle de gauche et représente le CI désigné par U2.
Les modules DS1307 ou 1302 sont les plus courants. Le bus I2C a l’avantage de la simplicité de sa connexion au raspberry. Il n’utilise que deux fils pour le bus proprement dit, ce qui fait 4 fils avec son alimentation en 3,3 V. Il n’est pas conseillé de brancher ces modules sur le 5V, ils sont prévus pour fonctionner sur 3,3 V ; Les arduinos peuvent accepter de les alimenter sous 5V, mais pas les raspberrys.
Voyons donc l’utilisation du DS1307, pour les autres modules, la transposition est facile.
1 – Le cablage : La photo ci-dessus montre le module utilisé. Les fonctions des broches sont clairement indiquées. Ci-dessous vous avez les broches du bus GPIO du raspberry sur lesquelles les brancher : • Le Vcc va sur la broche 1 ou 17 du bus GPIO ; • Le GND va sur la broche 9 ou 6 qui est le 0 V ou la masse : • Le signal SDA va sur la broche 3 ; • le signal SCL sur la broche 5.
Ci-dessous la visualisation des broches utilisables sur le port GPIO :
Bien voir en rouge la légende des broches en question.
2 – validation de l’I2C avec raspi-config : c’est à faire car l’I2C n’est pas validé par défaut.
3 – installer les packages : • Installer i2c-tools ; • enlever si besoin le package fake-hwclock ; • installer util-linux-extra ;
4 – vérifier la présence du fichier : /lib/udev/hwclock-set S’il est absent, il faut le créer en y mettant les trois lignes suivantes : # !/bin/bash dev=$1 /sbin/hwclock – -rtc=$dev – -hctosys Rendez ce fichier exécutable. Cest ce fichier qui va permettre au raspberry de lire l’heure sur le module RTC au démarrage.
5 – configuration : Dans /etc/modules ajouter si besoin : i2c-dev rtc-ds1307 Dans /boot/firmware/config.txt ajouter à la fin de ce fichier : dtoverlay=i2c-rtc,ds1307 Le fichier /etc/rc.local n’existe plus sous Trixie. C’est le fichier hwclock-set qui le remplace pour la lecture du module RTC. A chaque boot, le raspberry lira le module RTC.
Des commandes pour lire et écrire dans le module : Les commandes suivantes sont à utiliser avec sudo ou sous l’utilisateur root. • I2cdetect -y 1 cette commande permet de voir si le module est détecté ; • hwclock -r cette commande lit l’heure du module RTC ; • hwclock -w cette commande écrit l’heure dans le module ; • hwclock –set –date= “$(date ” +%m/%d/%y %H:%M:%S “)” permet aussi d’écrire le temps dans le module ; • hwclock –hctosys cette commande écrit l’heure système dans le module ; • hwclock –systz écrit l’heure UTC dans le module. C’est valable si l’heure système est dans cette configuration.
Il est possible avec un script, si le raspberry a une connexion internet ou si un module GPS est présent, de faire des mises à jour de l’heure du module RTC. Mais pour cela il faut que le script s’assure de la présence d’une connexion sur un serveur de temps via internet, ou que le module GPS est effectivement actif. Cela suppose une compétence dans l’écriture d’un script. Mais on peut faire simple en intégrant comme ici un de ces modules RTC, avec ou sans présence d’une connexion internet.
Last Updated: 3 mars 2026 by Jean-Marc F4IPX
Utilisation du module DS1307 Real Time Clock dans Raspbian Trixie.
Un article proposé par François F6DAA
Les raspberrys n’ont pas de puce de sauvegarde du temps avec une pile intégrée pour que le Pi reste à l’heure s’il n’a pas de connexion internet. En effet, au boot, le raspberry va chercher des serveurs de temps NTP sur sa connexion réseau IP pour se mettre à l’heure. Donc s’il n’y a pas de réseau, le raspberry ne se mettra pas à l’heure.
Pour nous radioamateurs, si on veut installer un équipement radio avec un raspberry dans la nature, il va falloir palier cette déficience. Certes on peut envisager d’utiliser un module GPS ou un module de réception radio ondes longues DCF77, mais la fiabilité n’est pas totale.
A minima l’utilisation d’un module RTC est indispensable. Mais il est toujours possible d’y adjoindre une module GPS ou DCF77 si on veut mettre à jour le module RTC.
Avec les nouvelles versions de linux raspbian, il y a des changements pour l‘installation et la configuration de ces modules. Cela a été le cas avec Bookworms, et il en est de même avec la distribution Trixie qui est aussi désignée par Debian 13.
On aborde ici le cas du seul module RTC. La dérive éventuelle de ces modules n’empêchera pas le fonctionnement normal du raspberry pour la quasi totalité de nos usages.
Les modules RTC : DS1307, DS3231 ou DS1302. sont connus. Ils sont tous sous i2c comme bus d’interface. Le module DS3231 a l’avantage de sa meilleure tenue en température et sa meilleure précision. Mais pour nos utilisations les DS1302 et DS1307 sont largement suffisants.
L’image de droite est extraite de celle de gauche et représente le CI désigné par U2.
Les modules DS1307 ou 1302 sont les plus courants. Le bus I2C a l’avantage de la simplicité de sa connexion au raspberry. Il n’utilise que deux fils pour le bus proprement dit, ce qui fait 4 fils avec son alimentation en 3,3 V. Il n’est pas conseillé de brancher ces modules sur le 5V, ils sont prévus pour fonctionner sur 3,3 V ; Les arduinos peuvent accepter de les alimenter sous 5V, mais pas les raspberrys.
Voyons donc l’utilisation du DS1307, pour les autres modules, la transposition est facile.
1 – Le cablage :
La photo ci-dessus montre le module utilisé. Les fonctions des broches sont clairement indiquées. Ci-dessous vous avez les broches du bus GPIO du raspberry sur lesquelles les brancher :
• Le Vcc va sur la broche 1 ou 17 du bus GPIO ;
• Le GND va sur la broche 9 ou 6 qui est le 0 V ou la masse :
• Le signal SDA va sur la broche 3 ;
• le signal SCL sur la broche 5.
Ci-dessous la visualisation des broches utilisables sur le port GPIO :
Bien voir en rouge la légende des broches en question.
2 – validation de l’I2C avec raspi-config :
c’est à faire car l’I2C n’est pas validé par défaut.
3 – installer les packages :
• Installer i2c-tools ;
• enlever si besoin le package fake-hwclock ;
• installer util-linux-extra ;
4 – vérifier la présence du fichier : /lib/udev/hwclock-set
S’il est absent, il faut le créer en y mettant les trois lignes suivantes :
# !/bin/bash
dev=$1
/sbin/hwclock – -rtc=$dev – -hctosys
Rendez ce fichier exécutable.
Cest ce fichier qui va permettre au raspberry de lire l’heure sur le module RTC au démarrage.
5 – configuration :
Dans /etc/modules ajouter si besoin :
i2c-dev
rtc-ds1307
Dans /boot/firmware/config.txt ajouter à la fin de ce fichier :
dtoverlay=i2c-rtc,ds1307
Le fichier /etc/rc.local n’existe plus sous Trixie. C’est le fichier hwclock-set qui le remplace pour la lecture du module RTC.
A chaque boot, le raspberry lira le module RTC.
Des commandes pour lire et écrire dans le module :
Les commandes suivantes sont à utiliser avec sudo ou sous l’utilisateur root.
• I2cdetect -y 1 cette commande permet de voir si le module est détecté ;
• hwclock -r cette commande lit l’heure du module RTC ;
• hwclock -w cette commande écrit l’heure dans le module ;
• hwclock –set –date= “$(date ” +%m/%d/%y %H:%M:%S “)” permet aussi d’écrire le temps dans le module ;
• hwclock –hctosys cette commande écrit l’heure système dans le module ;
• hwclock –systz écrit l’heure UTC dans le module. C’est valable si l’heure système est dans cette configuration.
Il est possible avec un script, si le raspberry a une connexion internet ou si un module GPS est présent, de faire des mises à jour de l’heure du module RTC. Mais pour cela il faut que le script s’assure de la présence d’une connexion sur un serveur de temps via internet, ou que le module GPS est effectivement actif. Cela suppose une compétence dans l’écriture d’un script. Mais on peut faire simple en intégrant comme ici un de ces modules RTC, avec ou sans présence d’une connexion internet.
François F6DAA
Category: Arduino, Les raspberry
Évènements à venir :
ARALA Réunion dominicale
AG ARALA (assemblée générale)
ARALA Réunion dominicale
Activité portable F5KEQ
Fête du R7
Les infos du Ref :
Nos sponsors :
Prévisions de propagation :
Agenda des lectures radio du bulletin du REF
Petites annonces