Flasher MicroPython sur un ESP32

C'est connu, les plateformes ESP32 sont nettement plus puissante que les ESP8266. Donc pourquoi ne pas flasher MicroPython sur un ESP32.

En guise d'exemple, nous allons flasher MicroPython pour ESP32 sur un Feather ESP32 Huzzah et sur un ESP32-DEVKIT-LIPO d'Olimex.

ESP32-DEVKIT-LIPO d'Olimex et Feather ESP32 Huzzah d'Adafruit

Pour flasher la plateforme il est préférable d'utiliser l'utilitaire esptool .

Installer esptool

esptool est un utilitaire Python. Le plus simple reste encore d'utiliser une machine Linux comme un Raspberry-Pi pour intaller pip.

pip install esptool

Il peut être nécessaire d'installer esptool en mode administrateur (en utilisant un sudo). 

esptool étant normalement compatible avec python3, il est également possible d'utiliser pip3 pour installer esptool.

Télécharger le firmware

Il faut ensuite télécharger le dernier firmware MicroPython stable pour ESP32. Celui-ci est disponible dans la section téléchargement de MicroPython.org / esp32.

A l'heure de l'écriture de cet article la dernière version stable est v1.13 .
Téléchargez le fichier binaire de la version v1.13 puis placez le dans le répertoire courant.

Brancher l'ESP32 sur votre ordinateur Linux / Raspberry-Pi

Une fois l'ESP32 brancher, celui-ci apparaît dans la liste des périphériques, souvent sous le nom /dev/ttyUSB0 ou /dev/ttyUSB1 .

En consultant les logs de débogages du kernel avec ma commande dmesg, il est possible d'identifier exactement le périphérique en question.


Dans le cas de ESP32-DEVKIT-LIPO d'Olimex son convertisseur USB-Série ch341 est attaché au périphérique /dev/ttyUSB0

Effacer la Flash de l'ESP32

La première chose à faire est d'effacer le contenu de la mémoire Flash.

esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash

Flasher le firmware MicroPython

La commande permet de flasher le firmware à partir de l'adresse 0x1000 (faudrait pas écraser le bootloader de l'ESP32)

esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-idf3-20200902-v1.13.bin

Session REPL (ligne de commande)

Voila, si tout s'est bien passé alors MicroPython est présent sur votre ESP32.

Comme le convertisseur USB-Série n'est pas capable d'exposer le système de fichier une fois connecté sur le PC, il est vivement conseillé d'utiliser un outil comme RShell (transfert de fichiers + terminal) ou Putty (terminal)

Test simple

Sur un ESP32-DEVKIT-LIPO d'Olimex les numéros de GPIO sont indiqués sous la carte. Brancher une LED sur le GPIO19 par l'intermédiaire d'une résistance de 1 KOhms (pour limiter le courant).

Il est possible d'allumer et éteindre la LED à l'aide de quelques ligne de code dans une session REPL

MicroPython v1.13 on 2020-09-02; ESP32 module with ESP32
Type "help()" for more information.
>>> 
>>> from machine import Pin
>>> led = Pin( 19, Pin.OUT )
>>> led.value( 1 ) # Allumer LED
>>> led.value( 0 ) # Eteindre LED

Et voilà, le reste du fonctionnement de la plateforme MicroPython, des multiples bus et autre est identique aux autres plateformes MicroPython.

Bon amusement

Aucun commentaire