Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Raspberry Pi Pico et Pico W
  3. Prise de contrôle
Extrait - Raspberry Pi Pico et Pico W La programmation Python sur microcontrôleur avec MicroPython
Extraits du livre
Raspberry Pi Pico et Pico W La programmation Python sur microcontrôleur avec MicroPython
4 avis
Revenir à la page d'achat du livre

Prise de contrôle

Présentation

Ce chapitre s’attardera sur la prise de contrôle de votre Raspberry-Pi Pico et des outils vous permettant d’y arriver.

Fondamentalement, peu d’outils sont nécessaires pour travailler avec MicroPython. Un simple éditeur de texte et un utilitaire Python comme MPRemote sont suffisants pour créer, transférer et exécuter vos scripts Python sur le Raspberry-Pi Pico.

Ne faisant rien à moitié, la fondation Raspberry-Pi a également investi du temps dans l’éditeur Python open source nommé Thonny IDE. De fait, le Pico et MicroPython disposent d’un environnement graphique agréable à utiliser. Non seulement cet environnement est libre et écrit en Python mais il est également léger. Tonny IDE fonctionne parfaitement sur des nano-ordinateurs, comme le Raspberry-Pi.

À la fin de ce chapitre, le lecteur sera capable d’interagir avec sa carte MicroPython, d’y transférer des fichiers de données et des scripts Python à exécuter.

Communiquer avec MicroPython

La carte Pico dispose d’un port microUSB permettant de brancher le Pico sur un ordinateur et ainsi partager ses ressources avec un ordinateur.

1. Cas de la Pyboard originale

La carte MicroPython Pyboard est la carte de référence des développements MicroPython. La Pyboard expose deux interfaces sur un ordinateur :

  • Un service de stockage de masse exposant le système de fichiers MicroPython comme un stick USB permettant ainsi à l’ordinateur de modifier directement des fichiers dans le système de fichiers MicroPython.

  • Un service USB-Série exposant une interface de communication série (REPL) entre MicroPython et l’ordinateur.

images/04RI01.png

Communication entre un ordinateur et une Pyboard

Si les ports USB-Série sont bien supportés sur tous les systèmes d’exploitation, il en va autrement pour le service de stockage de masse.

Le service de stockage de masse est bien toléré sur les machines Linux et Mac mais Windows est beaucoup plus tatillon sachant que le support peut fortement varier d’une version à l’autre de Windows.

2. Cas du Raspberry-Pi Pico

Bien que le Pico dispose d’un port USB natif, le service de stockage de masse est uniquement utilisé lors d’une mise à jour du firmware. La fondation Raspberry-Pi n’a pas implémenté le service de stockage de masse dans le firmware MicroPython, il reste donc le port USB-Série pour réaliser toutes les opérations nécessaires.

Sur les cartes Pico, comme bien d’autres cartes MicroPython, seul le service USB-Série est disponible. Cela n’empêche pas pour autant la gestion et le transfert de fichiers avec la carte MicroPython. Cela se fait alors via la liaison série en utilisant des utilitaires adaptés comme Thonny IDE (graphique), MPRemote ou RShell...

REPL : l’invite en ligne de commande MicroPython

Python sur ordinateur dispose d’une ligne de commande interactive. Pour profiter de celle-ci, il suffit de démarrer Python depuis une ligne de commande DOS sous Windows ou un shell Linux.

La capture ci-dessous présente une interface interactive Python sur un ordinateur Linux.

images/04RI03.png

Ligne de commande Python sur ordinateur

À l’identique de Python, un microcontrôleur MicroPython dispose aussi d’une ligne de commande interactive, celle-ci s’appelle REPL.

REPL est l’acronyme de Read, Evaluate, Print, Loop que l’on traduira par boucle de lecture, évaluation, affichage. Cela permet donc de saisir des instructions Python sur le microcontrôleur et d’en inspecter les résultats, exactement comme cela se fait sur PC.

Cependant, un microcontrôleur ne dispose ni de clavier ni d’écran ! C’est donc l’interface USB-Série qui est exploitée à l’aide d’un logiciel terminal comme Putty. Cela permet de connecter le clavier et l’écran de l’ordinateur sur le microcontrôleur (manipulation détaillée plus loin à la section Console série et REPL).

images/04RI04.png

Utiliser le logiciel Putty avec Pico

La capture ci-dessous reprend le terminal tel que visible sur l’écran d’un ordinateur. Il s’agit d’une session REPL qui ressemble à s’y méprendre à la capture Python faite sur ordinateur.

images/04RI05.png

Session REPL sur Raspberry-Pi Pico

La différence fondamentale réside dans le fait que c’est le microcontrôleur qui exécute les instructions Python. Cela permet aussi de saisir des instructions pour allumer la LED du Pico branchée sur le GPIO 25 (non valable pour le Pico-Wireless).

L’invite de commandes permet :

  • de saisir une commande Python...

Manipulations de fichiers

MicroPython dispose d’un système de fichiers capable de stocker tout type de fichiers (script python, fichier de configuration, images, etc.) pour autant que celui-ci reste dans des tailles compatibles avec le système de fichiers.

Non seulement ce système de fichiers peut être modifié depuis un ordinateur (à l’aide d’un utilitaire adéquat) mais MicroPython lui-même peut accéder à ces fichiers pour y lire et/ou écrire des informations.

Toutes les opérations standards d’un système de fichiers sont accessibles aux scripts Python exécutés par MicroPython, exactement comme Python sur ordinateur :

  • Création/modification/effacement de fichiers textes ou binaires.

  • Création/effacement de répertoires et sous-répertoires.

  • Lister les fichiers.

  • Montage d’un système de fichiers (sur une carte SD, une mémoire Flash externe).

  • Obtenir les statistiques du système de fichiers.

De fait, étant donné qu’il est possible d’établir une connexion REPL via le port USB-Série, il est possible de saisir des instructions Python modifiant le système de fichiers ou le contenu des fichiers. 

En poussant le raisonnement plus loin, un logiciel fonctionnant sur PC peut aussi générer des scripts Python envoyés et exécutés sur le Pico par l’intermédiaire de la liaison série, scripts qui modifient les fichiers présents sur le système de fichiers MicroPython. Cette description correspond exactement au fonctionnement de l’outil Thonny IDE et MPRemote qui seront décrits ci-après.

Outils intégrés

1. Thonny IDE

L’outil recommandé par la fondation Raspberry-Pi pour découvrir la programmation Python sur le Pico est Thonny.

Plutôt habitué aux éditeurs avancés tels qu’Atom, la découverte de Thonny fut une bonne surprise. C’est un outil abordable, complet et de surcroît très agréable à utiliser.

images/04RI07.png

Thonny : environnement de développement Python

Thonny est un environnement de développement Python conçu pour les débutants et lui-même écrit en Python. Multiplateforme Mac, Linux et Windows, Thonny offre de nombreuses fonctionnalités avancées pour les développements Python sur ordinateur et microcontrôleur.

Thonny peut se connecter sur différentes versions de Python (Python 2.7, Python 3) présent sur l’ordinateur mais aussi sur des instances de Python accessibles par l’intermédiaire d’un canal de communication série. Ce dernier point permet donc à Thonny de dialoguer avec des microcontrôleurs Python tels que le Pico, la Pyboard, l’ESP32, l’ESP8266, etc.

Pour les développeurs MicroPython, Thonny propose les fonctionnalités suivantes :

  • L’accès à REPL sur le microcontrôleur.

  • La sauvegarde du fichier script sur le microcontrôleur (dans le système de fichiers MicroPython). 

  • Le transfert de fichiers entre le microcontrôleur Python et l’ordinateur.

a. Installer sur Linux

Pour les utilisateurs de Linux (Ubuntu et dérivés comme Linux Mint), l’installation de Thonny IDE passe par l’utilitaire Python Install Package.

$ pip3 install thonny 

b. Installer sur Raspberry-Pi OS

Le Pico peut être programmé depuis un Raspberry-Pi, le nano-ordinateur le plus vendu au monde. La distribution Raspberry-Pi...

Console série et REPL

Outre MPRemote, Thonny IDE, Rshell, qui permettent d’établir une session REPL (invite de commandes MicroPython), il est également possible d’utiliser un terminal logiciel (ou matériel) pour établir une connexion série et profiter de la session REPL.

REPL est un outil vraiment puissant et pouvoir obtenir une invite de commandes MicroPython se révélera être un atout indéniable pour découvrir, tester et développer des projets autour de MicroPython.

1. Identifier le port série

Afin de pouvoir établir une connexion série via USB à l’aide d’un terminal, il est nécessaire d’identifier le port série associé au microcontrôleur. Cette identification est différente pour chaque système d’exploitation.

a. Sous Linux ou Raspberry-Pi OS

Des messages de débogages sont générés par le système lorsqu’un nouveau périphérique est branché sur l’ordinateur.

Pour identifier le périphérique série, il suffit de brancher le Pico sur le port USB puis de saisir la commande dmesg dans un terminal. Le périphérique associé au port série est clairement listé dans les messages.

ENVY:~$ dmesg 
... 
[848034.934883] CPU7: Package temperature/speed normal 
[848034.934884] CPU6: Package temperature/speed normal 
[848383.006980] usb 2-4: new full-speed USB device number 52 using xhci_hcd 
[848383.156146] usb 2-4: New USB device found, idVendor=2e8a, idProduct=0005 
[848383.156149] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 
[848383.156151] usb 2-4: Product: Board in FS mode 
[848383.156152] usb 2-4: Manufacturer: MicroPython 
[848383.156154] usb 2-4: SerialNumber: e660583883746b39 
[848383.157178]...

Exploiter REPL

L’invite REPL n’est pas accessible durant l’exécution d’un script Python, cependant la session REPL affichera les différents messages - ceux émis par la commande print() - ainsi que le détail de l’erreur et la pile d’appel lorsqu’elle celle-ci survient.

REPL est un outil vraiment puissant permettant d’interagir avec une plateforme MicroPython au-delà des aspects déjà présentés.

1. Séquence de contrôle REPL

Les séquences de contrôle permettent d’altérer le fonctionnement de l’invite de commandes REPL. Ces séquences peuvent être envoyées à partir d’un clavier en pressant la touche contrôle (notée [Ctrl] sur un clavier) accompagnée du caractère de contrôle correspondant. À noter qu’une séquence de contrôle [Ctrl] A peut aussi être notée ^A dans le langage informatique.

En voici une liste récapitulative des séquences supportées par REPL :

Séquence

Description

[Ctrl] C

Interrompt le script en cours de fonctionnement et reprend la main sur le microcontrôleur. MicroPython affiche une nouvelle invite de commandes « >>> ».

[Ctrl] D

Redémarrage à chaud (Soft reboot) de la machine virtuelle MicroPython. En pressant [Ctrl] D, MicroPython affiche l’en-tête d’accueil qui ressemble à ceci :

MPY: soft reboot 
MicroPython v1.18 on 2022-01-17; Raspberry Pi Pico with RP2040 
Type "help()" for more information. 

[Ctrl] E

REPL entre dans le mode coller et affiche la séquence « === » comme invite. Ce mode permet de coller plusieurs lignes de texte dans REPL en une ou plusieurs opérations. Une fois la copie terminée...

Séquence de démarrage

Le séquence de démarrage se fait en trois étapes à partir du moment où le microcontrôleur est mis sous tension ou réinitialisé (avec la broche run placée à la masse).

Les points suivants sont exécutés dans l’ordre indiqué.

1 - Si le bouton BootSel est pressé alors la carte passe en mode Bootloader jusqu’au prochain redémarrage.

2 - Ouverture de la connexion USB-Série.

3 - Démarrage de la machine virtuelle MicroPython.

4 - Initialisation de REPL (attaché sur la connexion USB-Série).

5 - Si le fichier boot.py est présent, alors il est chargé et exécuté.

6 - Si le fichier main.py est présent, alors il est chargé et exécuté.

Lors du redémarrage à chaud avec [Ctrl] D (Soft Reboot), la séquence de démarrage reprend au point 3.

1. Fichier boot.py

Le fichier boot.py est exclusivement destiné à la configuration matérielle de la plateforme MicroPython.

C’est dans ce fichier que l’on initialise des éléments périphériques matériels comme :

  • une connexion réseau Wi-Fi/Ethernet,

  • le montage d’un système de fichiers (sur une carte SD ou une EEPROM),

  • la réplication de REPL sur un UART matériel.

L’exécution de boot.py est bloquante et doit être aussi brève que possible pour permettre à MicroPython de passer le relais au script utilisateur.

L’établissement d’une connexion REPL avec le microcontrôleur est généralement impossible durant l’exécution de boot.py (à moins que celle-ci ne soit présente avant un redémarrage à chaud de la plateforme).

Une boucle infinie ou une boucle d’attente dans le fichier...

WebREPL pour Pico-W

WebREPL est une fonctionnalité avancée apparue avec MicroPython pour ESP8266 (un microcontroleur Wi-Fi apparu en 2014). WebREPL permet d’initier une session REPL par l’intermédiaire d’une interface web exécutée au sein d’un navigateur internet.

images/04RI60.png

Interface WebREPL

L’interface WebREPL propose les options suivantes :

1 - Zone de saisie de l’adresse de la carte MicroPyhton. Cette adresse est préfixée par « ws:// » car il s’agit d’une connexion Web Socket. Le suffixe «:8266 » indique le numéro de port à utiliser (8266 pour rappeler la plateforme ESP8266). L’adresse IP 192.168.4.1 est l’adresse par défaut d’un point d’accès MicroPython. Si le Pico-W est connecté sur le réseau Wi-Fi domestique, alors son adresse IP sur ce réseau domestique sera utilisée. Celle-ci se présente alors sous la forme 192.168.1.x . Pour finir, lorsque la résolution DNS le permet, il est également possible d’employer le nom d’hôte de la plateforme MicroPyhon. Le nom d’hôte d’un Pico Wireless prend la forme PICOxxxx, ce qui donne, par exemple, ws://PICO08BA:8266.

2 - Bouton Connect / Disconnect. Il permet d’établir (ou de terminer) une connexion avec le WebSocket du microcontrôleur. Le mot de passe WebREPL est requis dès la connexion établie. Les autres parties de l’interface WebREPL peuvent ensuite être utilisées.

3 - Envoi d’un fichier vers MicroPython. Il permet d’envoyer un fichier (un script python) dans le répertoire racine du microcontrôleur. Si le fichier existe déjà, alors son contenu est écrasé.

4 - Télécharger un fichier depuis MicroPython. Il permet de récupérer...