Aller au contenu

MicroPython

MicroPython logo

MicroPython est une implémentation du langage de programmation Python, adapté au monde des microcontrôleurs.

Environnement de développement

virtualenv

On crée d'abord un environnement virtuel Python, puis on l'active :

$ python3 -m virtualenv -p python3 venv
$ source venv/bin/activate

esptool

On installe ensuite la librairie esptool qui permet la communication avec le bootloader des cartes ESP8266 et ESP32 :

(venv) $ pip install esptool

ampy

Installation

On installe Adafruit MicroPython Tool (ampy) qui permet de copier (ou de récupérer) des fichiers sur le microcontrôleur via la liaison USB :

(venv) $ pip install adafruit-ampy

Configuration

Pour éviter de renseigner systématiquement certaines options (notamment le port et la vitesse de la communication série) lors de l'utilisation de ampy, on peut créer un fichier .ampy à la racine du projet contenant :

AMPY_PORT=/dev/ttyUSB0
AMPY_BAUD=115200

Ainsi pour réinitialiser le microcontrôleur on pourra simplement faire :

(venv) $ ampy reset --hard

au lieu de :

(venv) $ ampy -p /dev/ttyUSB0 -b 115200 reset --hard

picocom

Installation

Sur Ubuntu, on installe l'émulateur de terminal série picocom qui permet la communication via la liaison USB :

$ sudo apt install picocom

Commandes utiles

Se connecter au microcontrôleur sur le port /dev/ttyUSB0 avec une vitesse de 115 200 bauds :

$ picocom -b 115200 /dev/ttyUSB0

Quitter l'émulateur avec la combinaison de touches suivantes : Ctrl + A, suivit de Ctrl + X.

--noinit --noreset

Installer MicroPython sur un ESP8266

Success

Testé avec succès sur les cartes suivantes :

Info

Basé sur la documentation MicroPython : Getting started with MicroPython on the ESP8266

Effacement de la mémoire flash

On commence par effacer la mémoire flash :

(venv) $ esptool.py --port /dev/ttyUSB0 erase_flash

Note

Remplacer /dev/ttyUSB0 par le port utilisé par votre ordinateur.

Note

Sous GNU/Linux, l'utilisateur doit faire partie du groupe dialout pour accéder aux ports série de l'ordinateur.
--> Ajouter un utilisateur à un groupe.

Résultat de la commande :

esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: bc:dd:c2:ed:15:69
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 9.2s
Hard resetting via RTS pin...

Téléchargement du firmware

Sur la page Firmware for Generic ESP8266 module, télécharger la dernière version stable du firmware.

Puis téléverser ce firmware sur le microcontrôleur :

(venv) $ esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect 0 esp8266-20191220-v1.12.bin

Note

Remplacer /dev/ttyUSB0 par le port utilisé par votre ordinateur et esp8266-20191220-v1.12.bin par la version du firmware téléchargé.

Note

J'ai réduit la vitesse à 115200 bauds pour éviter les erreurs lors du téléversement.

Résultat de la commande :

esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: bc:dd:c2:ed:15:69
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0040
Compressed 619828 bytes to 404070...
Wrote 619828 bytes (404070 compressed) at 0x00000000 in 35.8 seconds (effective 138.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Tester la communication série

À ce stade, MicroPython devrait être correctement installer dans le microcontrôleur. Pour se connecter à microcontrôleur, lancer la commande :

$ picocom /dev/ttyUSB0 -b115200

Puis lancer une commande Python simple :

>>> print('hello world!')
hello world!

Installer MicroPython sur un ESP32

Success

Testé avec succès sur la carte ci-dessous :

Info

Basé sur la documentation MicroPython : Getting started with MicroPython on the ESP32

Effacement de la mémoire flash

Méthode identique à l'ESP8266.

Téléchargement du firmware

Sur la page Firmware for Generic ESP32 module, télécharger la dernière version stable du firmware.

Puis téléverser ce firmware sur le microcontrôleur :

(venv) $ esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 write_flash -z 0x1000 esp32-idf3-20191220-v1.12.bin

Note

Remplacer /dev/ttyUSB0 par le port utilisé par votre ordinateur et esp32-idf3-20191220-v1.12.bin par la version du firmware téléchargé.

Note

J'ai réduit la vitesse à 115200 bauds pour éviter les erreurs lors du téléversement.

Tester la communication série

Méthode identique à l'ESP8266.

Système de fichiers

On retrouve à la racine du système de fichiers de MicroPython deux fichiers importants :

  • /boot.py : Ce script est exécuté en premier lorsque le microcontrôleur est alimenté ou réinitialisé. Il est rarement modifié, en général pour modifier la configuration de MicroPython.
  • /main.py : Ce script optionnel est exécuté juste après /boot.py. Il contient le programme principal de l'application.

Pour téléverser un fichier sur le microcontrôleur, on utilise l'outil ampy. Par exemple, pour téléverser le fichier /main.py local sur le microcontrôleur :

(venv) $ ampy -p /dev/ttyUSB0 -b 115200 put main.py main.py

Encodage

Info

L'implémentation du type String en MicroPython est le même que pour le type String en Python 3.

Ressources


Dernière mise à jour: 6 mai 2020