Le Raspberry Pi n’enregistre pas la date de façon permanente. Avec l’aide du module Raspberry Pi RTC (horloge en temps réel) DS1307, vous disposez d’une horloge en temps réel, quelle que soit la connexion Internet existante. C’est un avantage dans de nombreuses applications qui nécessitent un horodatage mais ne peuvent pas être connectées à Internet. Surtout pour les Pi d’extérieur et les systèmes d’enregistrement, il est important de connaître la date et l’heure exactes.
Ce tutoriel concerne l’installation d’une horloge en temps réel (RTC) et la synchronisation de l’heure système de Linux / Raspbian.
Matériel requis
Vous aurez besoin des pièces de matériel suivantes:
Alternativement, le module RTC DS3231 devrait également fonctionner, mais je ne l’ai pas (encore) testé avec.
Préparation
Les modules Tiny RTC sont en fait conçus pour l’Arduino, dont les broches IO fonctionnent à 5V. Étant donné que les GPIO du Raspberry Pi ne fonctionnent qu’à 3,3 V et qu’une tension plus élevée peut les endommager, nous devons retirer deux résistances de la carte.


Les résistances R2 et R3 doivent être retirées pour ne pas endommager le Raspberry Pi avec une tension trop élevée.
Alternativement, un convertisseur de niveau logique (comme ici) pourrait être interposé.
Connexion du module Raspberry Pi RTC I2C
Le module est connecté via I²C interface. Pour cela, nous utilisons le côté droit de la broche (qui a 7 broches), car dans le mode hors ligne du Raspberry, le courant doit être tiré de la batterie afin que l’horloge ne s’arrête pas. D’autres modules ne peuvent avoir qu’une barrette de broches. La mission est la suivante:
| Module RTC | Raspberry |
|---|---|
| SCL | GPIO 3 / SCL (broche 5) |
| SDA | GPIO 2 / SDA (broche 3) |
| VCC / 5V | 5 V (broche 2) |
| GND | GND (broche 6) |
Les modules RTC diffèrent légèrement de la structure, donc l’image suivante ne doit être prise qu’à titre indicatif. Il est important que les broches connectées soient correctes:
Logiciel Raspberry Pi RTC
Avant de pouvoir vraiment commencer, il faut s’assurer que tous les packages et sources de packages sont à jour, nous les mettons donc à jour en premier puis installons le logiciel I2C:
sudo apt-get update && sudo apt-get upgrade --yes sudo apt-get install i2c-tools
Ensuite, le bus I2C doit être activé, si ce n’est pas déjà fait:
sudo raspi-config
Activez tout sous «Options avancées»> «I2C» (confirmez simplement avec Oui). Un redémarrage peut être nécessaire.
Maintenant, nous éditons le fichier des modules
sudo nano /etc/modules
et ajoutez les entrées manquantes à la fin:
i2c-bcm2708 i2c-dev rtc-ds1307
Vous enregistrez et quittez avec CTRL + O, CTRL + X.
Pour activer les modules, ils doivent être chargés:
sudo modprobe i2c_bcm2708 sudo modprobe i2c_dev sudo modprobe rtc-ds1307
Nous pouvons maintenant voir si le module RTC a été reconnu par I2C (le paramètre -y 1 indique qu’il s’agit de la Rev.2. Seulement que le premier Raspberry Pi correspond à la révision 1):
i2cdetect -y 1
Vous devriez voir la sortie suivante:
pi@raspberrypi:~ $ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Le module est donc reconnu et peut être interrogé en utilisant i2cget -y 1 0x68. Puisqu’un code hexadécimal est difficile à lire, nous entrons dans le module comme un nouvel appareil I2C:
sudo bash echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device exit
Ensuite, nous pouvons simplement lire l’heure en utilisant sudo hwclock -r. Vous pouvez obtenir l’heure locale du système avec date.
Pour moi, l’horloge temps réel n’a pas été réglée correctement (1er janvier 2000), c’est pourquoi j’ai dû la régler en premier. Étant donné que l’heure du système local est correcte (accessible automatiquement via un serveur NTP), je l’ai synchronisée comme suit (en passant, toutes les commandes peuvent être trouvées dans la documentation hwclock):
sudo hwclock --set --date="$(date "+%m/%d/%y %H:%M:%S")"
Si vous souhaitez modifier l’heure système (et le fuseau horaire!), Vous devez le faire en utilisant sudo raspi-config, Avant de synchroniser les heures.
Afin de régler l’heure système automatiquement à chaque redémarrage, nous devons écrire une commande set dans le démarrage automatique. Pour ce faire, nous éditons le fichier:
sudo nano /etc/rc.local
Les deux lignes suivantes sont ajoutées avant exit 0:
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device hwclock --hctosys
Après un redémarrage, l’heure correcte devrait maintenant être lue et réglée à partir du module Raspberry Pi RTC – sans aucune connexion Internet.
-
3X Real Time Clock, Modules d'Horloge Temps Réel Haute Précision, Compatibles avec Montre en Temps Réel I2C RTC DS3231, Module Precision Real Time Clock Module Compatible avec Arduino et Raspberry Pi
-
Lot de 4 modules d'horloge RTC pour 3231, I2C 3,3 V/5 V, haute précision, module de mémoire en temps réel, compatible avec Raspberry Pi

