Tel que mentionné dans un récent article, le Raspberry Pi Pico comporte une horloge temps réel (RTC) interne qui permet à nos programmes de connaître la date et l'heure à n'importe quel moment. Cependant, cette horloge interne retourne au 1er janvier 2021 chaque fois que l'alimentation du Raspberry Pi Pico est interrompue.
Pour éviter cet irritant, on peut utiliser un module RTC externe. Grâce à sa pile, le module RTC continuera de se mettre à jour pendant que le Raspberry Pi Pico sera hors tension.
Module DS3231
Le module RTC DS3231 est économique et très facile à trouver. Les données sont communiquées par I2C, et une pile de 3 V (qui pourra typiquement fonctionner quelques années sans nécessiter de remplacement) assure le fonctionnement continu de l'horloge.
Mon module DS3231 ne comporte pas de support pour y insérer une pile, ce qui explique la présence de ruban gommé pour tenir la pile! Un avantage, c'est que je peux utiliser n'importe quel format de pile 3 V.
Connexions
J'ai branché le module DS3231 au Raspberry Pi Pico de la façon suivante:
- Broche "+ " du module DS3231: sortie 3,3 V du Raspberry Pi Pico
- Broche "D" du module DS3231: broche GP8 du Raspberry Pi Pico
- Broche "C" du module DS3231: broche GP 9 du Raspberry Pi Pico
- Broche "-" du module DS3231: broche GND du Raspberry Pi Pico
Si votre module comporte une broche identifiée par la mention "NC", vous n'avez pas à connecter cette broche.
Bibliothèque MicroPython uRTC par Adafruit
La bibliothèque uRTC d'Adafruit permet de contrôler quelques modèles courants d'horloges temps réel (DS1307, DS3231 et PCF8523). Adafruit ne supporte plus cette bibliothèque depuis que la compagnie a choisi de prioriser CircuitPython plutôt que MicroPython. Malgré tout, uRTC demeure disponible et fonctionnelle.
Comme d'habitude, il faut copier le fichier urtc.py dans le Raspberry Pi Pico afin de pouvoir profiter des fonctionnalités de cette bibliothèque.
Script #1: consulter la date et l'heure
Voici un script qui affiche la date et l'heure une fois par seconde. La méthode datetime() (utilisée à la ligne 21) retourne la mesure du temps sous la forme d'un DateTimeTuple contenent l'année, le mois, le jour, le jour de la semaine, l'heure, la minute, la seconde et la milliseconde. Il est facile d'extraire de ce tuple les informations qui nous intéressent.
-
-
Script #2: régler la date et l'heure
Si la date et l'heure fournies par le module DS3231 sont incorrectes, il est facile de les modifier en utilisant encore une fois la méthode datetime, mais en fournissant comme argument le DateTimeTuple correspondant à la valeur désirée.
Par exemple, pour régler le module RTC à 11 heures, 29 minutes et 45 secondes le 12 aoùt 2021, on peut écrire:
urtc.datetime_tuple(year=2021, month=8, day=12, hour=11, minute=29, second=45)
Le script ci-dessous permet de régler la date et l'heure du module DS3231.
-
-
À lire également
- Programmer le Raspberry Pi Pico en MicroPython avec Thonny
- Utilisation de l'horloge interne du Raspberry Pi Pico (machine.RTC)
- Utilisation d'un module RTC DS3231 avec Arduino
Yves Pelletier (Facebook)