Thonny : Prise en main de MicroPython sur la STeaMi
| Projet | Durée | Difficulté | Âge | Logiciel STeaMi testé |
|---|---|---|---|---|
| I-Novmicro #2 | 40 min | Débutant | 11-99 ans | 0.23.1 |
Matériel et Montage
- 1 carte STeaMi
- 1 câble USB de données (micro-USB pour la STeaMi V1, USB-C pour la STeaMi V2). Attention : un câble qui ne sert qu'à charger un téléphone ne fonctionnera pas.
- 1 ordinateur sous Windows, macOS ou Linux
- Thonny installé (version 4.x ou supérieure)
- Le programme MicroPython STeaMi
.hex(dernière release)

De quoi parle-t-on ?
Programmer une carte microcontrôleur peut sembler intimidant : plusieurs logiciels à installer, environnement à configurer, code à envoyer vers la carte… Thonny est un éditeur Python conçu pour l'apprentissage qui simplifie cette mise en route. Couplé à MicroPython : une version de Python adaptée aux cartes électroniques, une fois installé sur la STeaMi, il offre un environnement gratuit et hors-ligne où l'on peut écrire du code, le tester en direct dans le REPL (une fenêtre de dialogue où l'on tape une instruction et la carte y répond immédiatement), et déboguer pas-à-pas.
Cette fiche met en place tout l'environnement de travail : installation de Thonny, installation de MicroPython sur la carte, configuration de la communication entre Thonny et la carte, et écriture d'un premier programme qui pilote la LED RGB de la STeaMi avec ses boutons A et B. À privilégier en salle informatique avec postes fixes ; pour des postes verrouillés ou en mobilité, préférer Vittascience (en ligne).
Objectifs d'apprentissage
- Installer Thonny et le configurer pour communiquer avec une carte MicroPython
- Comprendre le rôle du programme MicroPython et savoir l'installer sur la STeaMi
- Écrire et exécuter un premier programme MicroPython qui interagit avec le matériel (LED, boutons)
- Découvrir le REPL pour tester du code en direct sans créer de fichier
- Identifier la différence entre exécution temporaire (Run) et programme persistant (
main.py)
Étape 1 : Construire
Ici, "construire" veut dire mettre en place l'environnement logiciel : installer Thonny, installer MicroPython sur la carte, et configurer la communication entre les deux.
Installer Thonny
Windows / macOS : télécharger l'installeur sur thonny.org, lancer le fichier, suivre l'assistant. Ouvrir Thonny depuis le menu Démarrer ou le Launchpad.
Linux (Debian / Ubuntu) :
# Via les dépôts de la distribution (recommandé pour un public débutant)
sudo apt install thonny
# Ou via pipx pour avoir la dernière version
# (pipx doit être installé au préalable :
# sudo apt install pipx && pipx ensurepath)
pipx install thonny

Thonny au premier lancement : éditeur en haut, panneau Shell (REPL) en bas.
Installer MicroPython sur la STeaMi
:::info Étape éventuellement déjà faite
Une STeaMi sortie d'usine est en général livrée avec MicroPython déjà installé. Si après l'étape suivante (Configurer Thonny pour la STeaMi) le prompt >>> apparaît dans le Shell de Thonny, cette étape d'installation est déjà faite : passez directement à la section suivante.
:::
Grâce à un mode "clé USB" préinstallé en usine, la STeaMi se présente comme une clé USB : installer MicroPython revient à un simple glisser-déposer.
- Brancher la STeaMi en USB (câble de données, pas un câble de charge seul).
- La carte apparaît comme un disque amovible nommé
STEAMI. - Télécharger le fichier
steami-micropython-firmware-vX.Y.Z.hexdepuis les releases. Attention : ne pas confondre avecsteami-daplink-firmware-...hex, qui est un autre fichier sans rapport avec MicroPython. - Glisser-déposer le
.hexsur le disqueSTEAMI. - La LED de statut clignote pendant l'écriture (~5 à 15 s), puis la carte redémarre avec MicroPython. Ne pas débrancher la carte pendant le clignotement : attendre la fin du redémarrage.
Si le disque STEAMI n'apparaît pas, le premier réflexe est de changer de câble : un câble qui ne transporte que l'alimentation ne suffit pas, il faut un câble de données.

Glisser-déposer du fichier .hex sur le disque STEAMI : la carte se reprogramme.
Configurer Thonny pour la STeaMi
Si Thonny démarre en anglais : Tools → Options → onglet General → Language: Français, puis redémarrer Thonny. La suite utilise les libellés français.
- Ouvrir Thonny.
- Outils → Options… → onglet Interpréteur.
- Liste Quel interpréteur ou appareil utiliser : choisir MicroPython (generic).
- Port : sélectionner celui de la STeaMi.
- Linux :
/dev/ttyACM0 - macOS :
/dev/cu.usbmodemXXXX - Windows :
COM3,COM4…
- Linux :
- Cliquer OK.
- Windows : si plusieurs ports
COMapparaissent, ouvrir le Gestionnaire de périphériques (clic droit sur le menu Démarrer), section Ports (COM et LPT). Brancher/débrancher la STeaMi pour repérer celui qui apparaît et disparaît. - Linux : en cas d'erreur
Permission deniedsur le port série, ajouter l'utilisateur au groupedialoutavec la commande ci-dessous, puis se déconnecter / se reconnecter (ou redémarrer la session) pour que le changement prenne effet.
sudo usermod -aG dialout $USER
Le panneau Shell affiche alors :
MicroPython v1.XX.X on YYYY-MM-DD; STeaMi with STM32WB55RG
Type "help()" for more information.
>>>

Outils → Options → Interpréteur : choisir « MicroPython (generic) » et le port de la STeaMi.

Le prompt >>> confirme que Thonny dialogue avec MicroPython sur la STeaMi.
Étape 2 : Programmer
Premier programme : changer la couleur de la LED RGB selon le bouton enfoncé. Sur la STeaMi, la LED RGB s'allume en écrivant 1 sur la broche, et s'éteint avec 0. Les boutons A et B, eux, fonctionnent à l'envers : leur valeur vaut 1 au repos et passe à 0 quand on appuie (une résistance présente sur la carte impose ce comportement, on n'a rien à faire dans le code).
Brochage utilisé
| Composant | Nom dans le programme | Comportement |
|---|---|---|
| LED RGB Rouge | LED_RED | 1 = allumée, 0 = éteinte |
| LED RGB Verte | LED_GREEN | 1 = allumée, 0 = éteinte |
| LED RGB Bleue | LED_BLUE | 1 = allumée, 0 = éteinte |
| Bouton A | A_BUTTON | 0 = appuyé, 1 = relâché |
| Bouton B | B_BUTTON | 0 = appuyé, 1 = relâché |
Programme
# Testée avec firmware STeaMi 0.23.1
#
# Premier programme STeaMi avec Thonny, LED RGB + boutons A/B
# - Bouton A -> LED rouge
# - Bouton B -> LED verte
# - A + B -> LED bleue
# - Aucun bouton -> LED éteinte
from machine import Pin
from time import sleep_ms
# LED RGB : on() allume, off() éteint
led_r = Pin('LED_RED', Pin.OUT)
led_g = Pin('LED_GREEN', Pin.OUT)
led_b = Pin('LED_BLUE', Pin.OUT)
# Boutons A et B (résistance pull-up sur la carte : 1 au repos, 0 quand on appuie)
btn_a = Pin('A_BUTTON', Pin.IN)
btn_b = Pin('B_BUTTON', Pin.IN)
def set_rgb(r, g, b):
"""Allume chaque LED selon la composante (1 = on, 0 = off)."""
led_r.value(r)
led_g.value(g)
led_b.value(b)
print("Programme démarré. Appuyez sur A, B ou les deux.")
while True:
a_pressed = btn_a.value() == 0
b_pressed = btn_b.value() == 0
if a_pressed and b_pressed:
set_rgb(0, 0, 1) # bleu
elif a_pressed:
set_rgb(1, 0, 0) # rouge
elif b_pressed:
set_rgb(0, 1, 0) # vert
else:
set_rgb(0, 0, 0) # éteint
sleep_ms(20)
Exécution
- Test rapide : bouton Run (▶) ou
F5. Le code s'exécute sur la carte sans être sauvegardé. - Programme persistant : Fichier → Enregistrer sous… → MicroPython device, et nommer le fichier
main.py. Il sera relancé à chaque démarrage de la carte.
:::info Un programme est déjà en cours d'exécution
Quand un programme est déjà en cours d'exécution sur la carte (par exemple un main.py précédemment enregistré), Thonny refuse de lancer le suivant : il faut d'abord l'interrompre avec Ctrl+C dans le panneau Shell, ou cliquer sur le bouton Stop (■).
:::

Le programme dans l'éditeur de Thonny, prêt à être exécuté avec F5.

Bouton A : LED rouge.

Bouton B : LED verte.

A + B : LED bleue.
Étape 3 : Améliorer
Une fois le premier programme fonctionnel, trois pistes pour aller plus loin avec Thonny.
Tester du code en direct avec le REPL
Le REPL (>>> dans le panneau Shell) permet de tester du code directement sur la carte, sans créer de fichier. Pratique pour la découverte et le débogage.
Dans l'exemple ci-dessous, les >>> représentent le prompt, c'est ce que Thonny affiche pour signaler qu'il attend une commande. Ne pas les recopier dans l'éditeur, tapez uniquement ce qui suit le prompt.
# Allumer la LED rouge à la main
>>> from machine import Pin
>>> led_r = Pin('LED_RED', Pin.OUT)
>>> led_r.value(1) # allumée
>>> led_r.value(0) # éteinte
# Lire l'état du bouton A
>>> btn_a = Pin('A_BUTTON', Pin.IN)
>>> btn_a.value()
1 # 1 = relâché, 0 = appuyé
# Scanner les capteurs I2C internes
>>> from machine import I2C
>>> i2c = I2C(1)
>>> [hex(a) for a in i2c.scan()]
['0x1e', '0x29', '0x39', '0x55', '0x5d', '0x5f', '0x6b']
# Magnéto, ToF, lumière, jauge batterie, pression, humidité, IMU
Raccourcis utiles dans le REPL :
| Raccourci | Effet |
|---|---|
Ctrl+C | Interrompre le programme en cours |
Ctrl+D | Redémarrage logiciel (relance main.py) |
| Flèche ↑ | Rappeler la dernière commande |
Déboguer pas-à-pas
Thonny propose un débogueur intégré, particulièrement adapté à l'enseignement :
- Cliquer dans la marge à gauche d'une ligne pour poser un point d'arrêt.
- Run → Debug current script (
Ctrl+F5). - Avancer avec Step over (
F6), Step into (F7), Step out (F8). - Observer les variables dans le panneau Variables.
Le debugger Thonny est plus efficace en local sur le PC qu'en cible embarquée. Pour des programmes qui interagissent beaucoup avec le matériel, le print() dans le REPL reste souvent plus pratique.

Point d'arrêt posé dans la marge ; le panneau Variables suit l'état du programme à chaque pas.
Dépanner les erreurs courantes
La plupart des problèmes rencontrés en classe ne sont pas spécifiques à Thonny mais touchent le matériel ou l'environnement MicroPython (câble, port série, programme bloqué). Ils sont regroupés sur la page transverse Dépannage STeaMi, qui couvre :
- la carte qui n'apparaît pas comme disque
STEAMI(câble) ; - le port série introuvable ou avec accès refusé (Windows / Linux) ;
- la console vide après connexion (MicroPython pas installé) ;
Couldn't find the device(plusieurs cartes branchées) ;Device is busy(programme déjà en cours) ;- un
main.pyqui redémarre en boucle.
Ressources et liens utiles
- Site STeaMi : présentation matérielle
- Wiki STeaMi : Thonny
- Wiki STeaMi : Premiers pas
- Wiki STeaMi : Hardware (pinout détaillé)
- Drivers MicroPython STeaMi
- Documentation MicroPython
- thonny.org
- MOOC FUN : Programmer un objet avec MicroPython
Cette fiche fait partie du projet I-Novmicro #2 : Action EXAO. Contenu sous licence CC BY-SA 4.0. Informations basées sur la documentation officielle STeaMi.