dimanche 24 octobre 2021

Écriture et lecture de fichiers avec le Raspberry Pi Pico (micropython)

Puisque l'environnement Micropython comporte un système de fichiers, il est très facile de créer et de lire des fichiers dans la mémoire flash interne du Raspberry Pi Pico. De cette façon, vous pouvez stocker des informations dont votre script a besoin pour bien fonctionner (des préférences de l'utilisateur, par exemple) , enregistrer des mesures prises périodiquement (data logging), etc.  

Évidemment, vos fichiers ne doivent pas être trop volumineux (nous disposons d'un espace total de 1,4 Mo) et leur mise à jour ne doit pas être trop fréquente (afin de ne pas provoquer une usure prématurée de votre Raspberry Pi Pico). Pour de nombreuses applications, l'utilisation d'une carte SD (ou d'un autre périphérique de stockage) s'avère préférable, voire nécessaire.


Exemple #1

Dans ce premier exemple, un nombre aléatoire est écrit à l'intérieur d'un fichier texte intitulé "hasard.txt". Le fichier sera automatiquement créé s'il n'existait pas déjà. Puisque j'ai utilisé l'argument "a" (append), le nouveau nombre est ajouté à la fin du fichier, dont le contenu initial demeure intact.

Dans un deuxième temps, fichier est lu (notez l'utilisation de l'argument "r": read) et son contenu est affiché dans la console.

-

-

Exemple #2

Dans ce deuxième exemple, j'enregistre dans un fichier la date et l'heure de la dernière exécution du script. Dans un premier temps, on ouvre le fichier "date.txt" pour connaître la date et l'heure de l'exécution précédente du fichier.  Il est possible que ce fichier n'existe pas encore, d'où l'utilisation de try/except pour éviter que le script s'interrompe avec un message d'erreur.

Ensuite, le fichier est ouvert en écriture pour remplacer l'ancienne date par la nouvelle (cette fois, l'argument est "w", write, et le contenu précédent est donc remplacé par la nouvelle information).

-

-

Gestion des fichiers

Si vous programmez votre Pico avec Thonny, le volet "Fichiers" affiche la liste de tous les fichiers enregistrés dans la mémoire interne du Pico. Il est possible d'effacer un fichier grâce à un clic droit de la souris­.

e

(Si ce volet n'est pas visible, vous pouvez le faire apparaître en cochant "Fichiers" dans le menu "Affichage".)


Il est également possible de gérer les fichiers grâce à un script en micropython.  Le script ci-dessous, par exemple, affiche la liste des fichiers présents sur le Pico:

-

-

À lire également

Yves Pelletier (TwitterFacebook)


jeudi 12 août 2021

Horloge temps réel DS3231 et Raspberry Pi Pico (MicroPython)

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


Yves Pelletier (TwitterFacebook)


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 (TwitterFacebook)