mercredi 11 août 2021

Connaître la date et l'heure avec un Raspberry Pi Pico (machine.RTC)

Grâce à la classe machine.RTC de MicroPython, il est possible d'utiliser l'horloge temps réel interne du Raspberry Pi Pico, ce qui permet de connaître la date et l'heure à n'importe quel moment.


MicroPython: version 1.16 ou plus récente

Pour le Rasbperry Pi Pico, la classe machine.RTC n'est disponible que depuis la version 1.16 de MicroPython (sortie en juin 2021). Si vous utilisez la version 1.14 ou 1.15, il faudra faire une mise à jour avant d'aller plus loin.  (Rappel: on presse le bouton BOOTSEL au moment où on branche le Pico à un porte USB, et on y copie le fichier uf2 approprié).

Si vous utilisez Thonny, le numéro de version de MicroPython s'affiche dans la console.


Script #1: Affichage de la date et de l'heure

Le script ci-dessous affiche la date et l'heure à chaque seconde. La méthode datetime() (utilisée à la ligne 17) retourne la date et l'heure en format "datetimetuple".  Il s'agit d'un tuple comportant 8 éléments: l'année, le mois (1 à 12), le jour (1 à 31), le jour de la semaine (0 à 6), l'heure (0 à 24), la minute (0 à 59), la seconde (0 à 59) et les "subsecondes".

Lors de la première exécution de ce script, vous obtiendrez probablement un tuple qui indique le 1er janvier 2021: l'horloge interne du Raspberry Pi Pico redémarre à cette valeur chaque fois que son alimentation a été interrompue.

-

-


Script #2: Réglage de la date et de l'heure

Puisque nous ne sommes plus le 1er janvier 2021, il va sans dire que nous avons besoin d'une méthode pour régler l'horloge interne du Raspberry Pi Pico à la bonne date Pour ce faire, il s'agit d'utiliser encore une fois la méthode datetime, mais en lui fournissant en argument le tuple correspondant à la date et l'heure actuelle.

Par exemple, je peux régler l'horloge du Pico à 9 heures, 12 minutes et 17 secondes le lundi 16 août 2021 en utilisant:

rtc.datetime((2021, 8, 16, 0, 9, 12, 17, 0))

Une fois la date et l'heure correctement réglée au moyen de la méthode datetime(), le Raspberry Pi Pico va afficher la date et l'heure correctes aussi longtemps qu'il est alimenté, peu importe que vous exécutiez un script ou non. Mais si vous interrompez son alimentation, il retournera inévitablement au 1er janvier 2021 (dans le prochain article, nous aborderons l'utilisation d'un module RTC externe pour éviter cet irriant).

Le script ci-dessous permet de régler la date et l'heure.

-

-

Après avoir réglé la date et l'heure grâce au script #2, vous pouvez exécuter à nouveau le script #1 pour constater que le Raspberry Pico affiche maintenant l'heure correcte.


À lire également


Yves Pelletier (Facebook)


dimanche 8 août 2021

Module GPS NEO 6MV2 et Raspberry Pi Pico

Dans cet article, nous déterminons notre position (latitude et longitude) au moyen d'un module GPS NEO 6MV2 branché à un Raspberry Pi Pico programmé en MicroPython.


Tel que mentionné lors de notre première exploration du module GPS NEO 6MV2, le module GPS est presque autonome: il s'agit de l'alimenter au moyen d'une tension de 3,3 V pour qu'il se mette à capter des signaux en provenances des satellites GPS et communique les résultats par UART. Une LED bleue intégrée au module GPS clignote pour indiquer que le GPS dispose de données fiables (suite au démarrage du module, plusieurs dizaines de secondes sont parfois nécessaires avant que la LED ne se mette à clignoter).


Le circuit

Puisque le rôle du Raspberry Pi Pico se limite à recevoir les données qui lui seront communiquées par le module GPS, j'ai branché le module GPS au Raspberry Pi Pico de la façon suivante:

  • Broche VCC du module GPS: sortie 3,3 V du Raspberry Pi Pico.
  • Broche RX du module GPS: broche GP4 du Raspberry Pi Pico*
  • Broche TX du module GPS: broche GP5 du Raspberry Pi Pico
  • Broche GND du module GPS: broche GND du Raspberry Pi Pico

* Notez qu'il n'est pas nécessaire de brancher la broche RX du module GPS (car le Raspberry Pi Pico n'enverra aucune information vers le GPS).

Premier script: affichage des données brutes

Dans un premier temps, nous nous contenterons d'afficher dans la console les données brutes émis par le module GPS. Sans surprise, le script est très court, puisqu'il se résume à démarrer le bus UART 1 (associé aux broches GP 4 et GP 5) avec une vitesse de transmission de 9600 bauds, et d'afficher tout ce qui est reçu.

-

-

Si votre module GPS capte des signaux en provenance des satellites (donc si sa LED clignote), vous devriez voir s'afficher des messages débutant par $GPRMC, $GPVTG, etc.

Voici ce que j'ai obtenu dans la console de Thonny:


Installation de la bibliothèque microGPS

Si le coeur vous en dit,  vous pouvez vous documenter sur la norme NMEA 0183 afin d'extraire vous-même les informations qui vous intéressent (latitude, longitude, etc).

Je vous propose plutôt d'installer la bibliothèque micropyGPS de Calvin McCoy.

Prenez soin d'enregistrer le fichier micropyGPS.py dans le Raspberry Pi Pico afin de pouvoir utiliser le deuxième script que je vous propose ci-dessous.


Deuxième script: affichage des données pertinentes

La bibliothèque microGPS met à notre disposition plusieurs méthodes permettant d'extraire la latitude, la longitude, l'altitude, etc. à partir des données brutes fournies par le module GPS:

  • latitude retourne la latitude sous la forme d'un tuple:  [degrés, minutes, Nord ou Sud]
  • longitude retourne la longitude sous la forme d'un tuple:   [degrés, minutes, Est ou Ouest]
Ces tuples sont particulièrement pratiques pour le stockage de données ou pour effectuer des calculs. Pour afficher la latitude et la latitude (sur un écran, par exemple), vous préférerez peut-être utiliser latitude_string() et longitude_string(), qui offrent la même information sous la forme d'une chaîne de caractères.

Ce court script affiche la latitude, la longitude, l'altitude, la vitesse et la date.

-
-

Voici ce que j'ai obtenu dans la console de Thonny:

Il ne vous reste plus qu'à modifier le script pour qu'il réponde à vos besoins (affichage sur un écran, etc.).

À lire également


Yves Pelletier (Facebook)