Outils pour utilisateurs

Outils du site


dev:esp:esp32:micropython

ESP32: Micropython

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.

Installer Micropython sur l'ESP32

A partir des binaires

Il va falloir:

  1. Récupérer le binaire Micropython (firmware) compilé pour l'esp32.
  2. Flasher le binaire sur le microcontrôleur via esptool.

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

Premiere installation

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...
Pour pouvoir utiliser le port série, l'utilisateur doit appartenir au groupe dialout. Si ce n'est pas le cas:
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
Il est possible de réduire le débit en ajoutant l'option --baud à la ligne de commande en cas d'erreurs lors du flashage (par exemple baisser à 115200 en ajoutant l'option --baud 115200).

A partir des sources

Micropython est écrit en C99, il est sous licence open source. les sources sont disponibles sur github

Hello World

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:

  • picocom -b 115200 /dev/ttyUSB0
  • screen /dev/ttyUSB0 115200
  • minicom -D /dev/ttyUSB0

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()

Références

dev/esp/esp32/micropython.txt · Dernière modification : 2021/04/04 08:53 de 77.192.232.26