{{tag>dev esp32 micropython todo}} ====== 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: - Récupérer le binaire Micropython (firmware) compilé pour l'esp32. - Flasher le binaire sur le microcontrôleur via esptool. Récupérer la dernière version du firmware sur: *[[https://micropython.org/download/esp32/]] Le firmware doit être flashé sur l'ESP via **esptool** le programme du constructeur (Espressif)) * [[https://github.com/espressif/esptool]] 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 * https://github.com/micropython/micropython ===== 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 ===== * http://micropython.org/ * http://docs.micropython.org/en/latest/ * http://docs.micropython.org/en/latest/esp32/tutorial/intro.html#esp32-intro * https://www.youtube.com/watch?v=w15-EQASP_Y * https://www.youtube.com/watch?v=5W3WvXAmDJc