MicroPython est une implémentation légère et compacte de l' interpréteur Python 3. Il inclus un petit sous ensemble de la bibliothèque standard Python et est optimisé pour s'exécuter sur microcontrôleur ( tel qu'un ESP32) ou en environnement contraint (en ressources matérielles). Le cœur Micropython utilise 256Ko d'espace en flash et 16 Ko de RAM.
Un pyboard MicroPython est un circuit électronique sur lequel a été flashé Micropython. Il s'y exécute directement (bare metal) et offre alors via son environnement interactif et ses fonctionnalités l'équivalent d'un système d'exploitation bas niveau permettant de gérer tous types de projets électroniques; d'ajouter et de modifier facilement des scripts qui seront interprétés (il intègre et gère un système de fichiers).
MicroPython est un langage de haut niveau facilement lisible et intégrant de fonctionnalités modernes et avancées telles qu'un environnement interactif (REPL), la gestion des nombres flottants, les listes et dictionnaires, des générateurs, la gestion des exceptions etc.
L'environnement REPL de python offre aux phases de conceptions et aux tests une grande réactivité/souplesse/facilité de réalisation.
Pour les performances, il est possible de créer des modules en C et en assembleur.
Il va falloir:
Récupérer la dernière version du firmware sur:
Le firmware doit être flashé sur l'ESP via esptool le programme du constructeur (Espressif))
création d'un environnement virtuel Python
python3 -m venv esptool source esptool/bin/activate pip3 install esptool
Brancher la carte
afficher les messages système:
dmesg | tail
[19606.286934] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [19606.286938] usb 1-4: Product: CP2102 USB to UART Bridge Controller [19606.286941] usb 1-4: Manufacturer: Silicon Labs [19606.286944] usb 1-4: SerialNumber: 0001 [19606.338930] usbcore: registered new interface driver usbserial_generic [19606.339009] usbserial: USB Serial support registered for generic [19606.344277] usbcore: registered new interface driver cp210x [19606.344917] usbserial: USB Serial support registered for cp210x [19606.345122] cp210x 1-4:1.0: cp210x converter detected [19606.347886] usb 1-4: cp210x converter now attached to ttyUSB0
Ici la carte est attachée par le système sur le port ttyUSB0.
Tester la connexion
esptool.py --port /dev/ttyUSB0 flash_id
Si tout se passe correctement on obtient un résultat du type:
esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting........__
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, Coding Scheme None
Crystal is 40MHz
MAC: 30:ae:a4:41:69:4c
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
sudo adduser my_user dialout
newgrp dialout
Si Micropython est installé pour la première fois, il faut effacer entièrement la mémoire flash
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
Le firmware peut alors être installé:
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 micropython-esp32-firmware-file.bin
Micropython est écrit en C99, il est sous licence open source. les sources sont disponibles sur github
Il faut maintenant interagir avec Micropython s’exécutant sur le microcontrôleur ESP32. Le REPL Micropython est disponible via le port série: il faut donc un programme capable de lire/écrire sur le port série:
Presser Ctrl+D pour rebooter le microcontroleur, il affiche alors sur le port série la version de Micropython:
PY: soft reboot
MicroPython v1.12-663-g9883d8e81 on 2020-08-11; ESP32 module with ESP32
Type "help()" for more information.
from machine import Pin led = Pin(2, Pin.OUT) led.on() led.off()