Comment programmer une carte Raspberry Pi Pico et son RP2040, par l'exemple

Vous êtes plutôt C(++) ou MicroPython ?
Comment programmer une carte Raspberry Pi Pico et son RP2040, par l'exemple

Fin janvier, la fondation Raspberry Pi annonçait un produit d'un nouveau genre : le micro-contrôleur RP2040. Il était intégré à une première carte maison, la Pico. Ici, pas de distribution Linux à installer, la programmation se veut plus directe. On vous explique comment cela fonctionne.

Les Raspberry Pi font partie de la famille des SBC (Single Board Computer), des ordinateurs aux caractéristiques minimales, reposant sur un SoC en général sur architecture ARM, au fonctionnement assez classique avec son système d'exploitation et des applications. Chacun peut en développer via différents langages de programmation. 

Avec un micro-contrôleur c'est différent, puisqu'il intègre tout ce qui fait un ordinateur, même quelques centaines de Ko de mémoire et parfois du stockage. Visant une très faible empreinte énergétique et des usages basiques, leur système l'est aussi. Il faut donc les programmer directement, de manière plus ou moins simple selon les cas.

Le RP2040 de la fondation Raspberry Pi et la carte Pico laissent pour cela accès à un port micro USB et 40 broches GPIO. Tout a néanmoins été fait pour faciliter une approche par les débutants. Voici comment entrer en matière.

Raspberry Pi RP2040
Le RP2040 intègre 2x cœurs Cortex ARM M0+ et 264 Ko de mémoire, la Pico ajoute 2 Mo de stockage via le bus QSPI

Langage C(++), binaires et simple transfert USB pour commencer

La première possibilité est une chaîne d'outils C(++) fournie sous la forme d'un script d'installation sous Linux, nécessitant une compilation via CMake avant l'envoi d'un fichier au RP2040 au format UF2. Développé par Microsoft, ce dernier permet la programmation d'un micro-contrôleur depuis un fichier envoyé via USB MSC (Mass Storage Class).

Sur son site dédié à la carte Pico, la fondation livre une documentation complète pour ceux qui voudraient sauter le pas. Les outils Arduino, appréciés car simple à prendre en main et connus des bidouilleurs, seront prochainement adaptés au RP2040. Une carte Arduino Nano Connect l'utilisant, avec Wi-Fi,  a d'ailleurs été annoncée.

Quelques exemples clé en main sont livrés pour ceux voulant un premier aperçu. Ainsi, il suffit de télécharger ce fichier UF2 et de connecter la Pico à un ordinateur. La première fois elle sera reconnue comme un périphérique de stockage USB. Sinon, il faut presser le bouton BOOTSEL au moment de la connexion pour que ce soit le cas.

Raspberry Pi Pico
La composition de la Raspberry Pi Pico, sa diode (broche 25) et le bouton BOOTSEL

Placez le fichier UF2 dans le dossier racine de la carte, elle le détectera puis redémarrera afin de l'initialiser. Dans l'exemple donné, il permet de faire clignoter la diode intégrée de la carte (broche 25) à un rythme prédéfini. Le code source du projet est, comme d'autres, distribué dans ce dépôt GitHub

Un second exemple hello_world.uf2 permet, une fois le fichier en place, d'envoyer le classique « Hello, world! » via le protocole série auquel on accède en USB (voir le code source), sous Linux via le périphérique virtuel /dev/ttyACM0 (possible via WSL). Dans une distribution Linux dérivée de Debian, il est conseillé d'utiliser Minicom :

sudo apt install minicom
minicom -b 115200 -o -D /dev/ttyACM0

MicroPython pour se simplifier la vie

Si vous ne voulez pas vous mettre à C(++) ou installer le SDK dédié, vous pouvez vous rabattre sur une implémentation minimale de Python pouvant être utilisée avec le RP2040 : MicroPython. Il faut pour cela télécharger ce fichier UF2 puis le placer dans le micro-contrôleur.

MicroPython sera alors directement exploitable via le protocole série. Il utilise pour cela un mécanisme nommé REPL (Read Evaluate Print Loop) consistant à attendre que l'utilisateur envoie des commandes à exécuter. Là aussi, Linux est recommandé, même si Minicom est installable depuis macOS comme indiqué dans la documentation.

Il suffit ensuite de taper la commande suivante :

minicom -o -D /dev/ttyACM0

On accède alors à l'interpréteur de MicroPython où l'on peut par exemple allumer et éteindre la LED :

from machine import Pin
led = Pin(25, Pin.OUT)
led.value(1)
led.value(0)

On peut également envoyer un script complet à travers un fichier .py, de manière plus classique. Mais si c'est ce que vous souhaitez faire, il y a une solution plus graphique et simple à prendre en main. 

Thonny comme IDE multiplateforme

C'est là qu'intervient Thonny, un environnement de développement Python disponible pour Linux, macOS et Windows, en français. C'est celui fourni par défaut au sein de Raspberry Pi OS. Il nécessitait au départ un plugin pour se connecter à la carte Pico, ce n'est plus le cas depuis la version 3.3.3 de l'outil qui le propose nativement.

Dans ses options, il faut sélectionner l'interpréteur MicroPython pour Raspberry Pi Pico et son RP2040. Vous serez alors invité à démarrer la carte en mode BOOTSEL pour y placer la dernière version compatible du firmware. Ensuite, vous pourrez soit accéder à l'interpréteur de commandes, soit développer un script puis l'exécuter.

Là aussi les exemples et possibilités sont nombreux. MicroPython vous permet même de profiter des différents protocoles et E/S du RP2040 comme ses broches GPIO, PWM, I2C, UART, etc. Sa documentation complète se trouve par ici. N'oubliez d'ailleurs pas que cette puce est dotée de deux cœurs, qui peuvent être exploités en parallèle

Thonny Raspberry Pico Le même programme exécuté sous la forme d'un script (en haut) ou commande par commande (en bas)

  • Introduction
  • Langage C(++), binaires et simple transfert USB pour commencer
  • MicroPython pour se simplifier la vie
  • Thonny comme IDE multiplateforme
S'abonner à partir de 3,75 €

2000 - 2021 INpact MediaGroup - SARL de presse, membre du SPIIL. N° de CPPAP 0326 Z 92244.

Marque déposée. Tous droits réservés. Mentions légales et contact