Contrôle du module Raspberry Pi RTC – Horloge temps réel I2C

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.

Module RTC Raspberry Pi avant avant Module avant Raspberry Pi RTC
Au dos se trouvent les deux résistances (R2 et R3) qui sont retirées. Pour ce faire, nous chauffons les fixations avec la panne à souder. De plus, des bandes de broches peuvent être soudées, qui sont généralement incluses. Nous avons seulement besoin du côté avec 7 broches (à droite):

Modules Raspberry Pi Tiny RTC I2C

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:

Structure d'horloge en temps réel du Raspberry Pi RTC

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:

[email protected]:~ $ 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.

Articles similaires

Bouton retour en haut de la page
Fermer