Nous avons vu que le NodeMCU ESP32 était facilement programmable à l’aide de l’IDE Arduino. Nous allons voir comment le programmer avec MicroPython. L’intérêt d’utiliser Python pour programmer un ESP32 est de l’utiliser à son plein potentiel.
Avant de suivre ce tutoriel, il vous faut, au préalable, installer Python 3.
Nous allons voir dans ce tutoriel comment configurer l’ESP32, comment utiliser un terminal pour tester des commandes Python. Enfin, nous verrons deux méthodes pour charger et lancer des scripts Python sur le microcontrôleur.
Présentation de MicroPython
MicroPython est une implémentation de Python 3 créée pour le fonctionner dans l’environnement des microcontrôleurs et leurs contraintes. Il possède un sous-ensemble des librairies Python ainsi que des librairies pour s’interfacer avec le hardware de bas niveau ainsi que les interfaces réseau. (ex: Wifi)
Cartes supportant MicroPython:
- ESP8266 Boards (ex: NodeMCU ESP8266)
- PyBoard
- Micro:Bit
- Teensy 3.X
- WiPy – Pycom
- Raspberry Pi Pico
Installer MicroPython avec Thonny IDE
La méthode la plus simple pour installer et utiliser MicroPython sur ESP32 (et autre microcontrôleur) est d’utiliser le logiciel Thonny IDE. En effet vous pouvez installer le firmware à partir de l’interface du logiciel et l’utiliser pour développer votre code et le téléverser sur la carte.
Télécharger le firmware correspondant à votre microcontrôleur.
Pour installer le firmware, allez dans le menu « Run » et sélectionnez « Select interpreter… »
Appuyer ensuite sur « Install or update firmware » en bas à droite
Sélectionnez votre carte et le fichier contenant le firmware précédemment téléchargé. Puis appuyez sur « Install »
Une fois le firmware installé, vous pouvez entrer des commandes Python dans la console.
Vous pouvez aussi écrire votre script et le lancer sur la carte depuis Thonny. Copiez le code suivant dans l’éditeur
import sys import time def main(): print("Program is running ") time.sleep(0.5) if __name__=="__main__": print("{} initialized".format(sys.platform)) while(1): try: main() except KeyboardInterrupt: print("Program stopped") sys.exit(0)
Pour lancer le script, allez dans « Run>Run current script » ou F5. Renommer le script main.py
Le code devrait se lancer automatiquement
Lorsque vous redémarrez l’IDE, vous pouvez ouvrir les fichiers présents sur la carte que vous pouvez retrouver avec la commande
import os
os.listdir()
N.B.: Pour pouvoir programmer le microcontrôleur avec Arduino IDE, vous devez téléverser un code Arduino. Cela aura pour effet de recharger le bootloader dans la flash.
Installer le firmware sur l’ESP32 par lignes de commande
Pour utiliser MicroPython, nous allons effacer la mémoire flash de l’ESP32 et installer le firmware. Pour cela, nous allons nous servir de l’outil esptool (.py ou .exe selon ce que vous souhaitez utiliser)
- Installer esptool.py
python3 -m pip install esptool
ou esptool.exe (disponible a l’installation du package esp sur Arduino IDE)
- Effacer la mémoire flash (Attention: le nom du port peut être différent du vôtre)
python3 -m esptool --chip esp32 --port COM9 erase_flash
- Télécharger le firmware, puis, entrer la ligne de code suivante (Attention: le nom du port et l’adresse du fichier peuvent être différents des vôtres)
python3 -m esptool --chip esp32 --port COM9 --baud 460800 write_flash -z 0x1000 C:\Users\ADMIN\Downloads\esp32-idf3-20210202-v1.14.bin
Pour pouvoir communiquer et programmer l’ESP avec MicroPython, il nous faut installer un terminal ou un IDE. Nous allons voir, ici, l’utilisation de PuTTy et de TeraTerm.
Utilisation de différents outils pour communiquer et programmer votre ESP32
Une fois votre microcontrôleur configuré avec Micropyhton, vous pouvez utiliser différents outils pour programmer en Python. Des terminaux comme TeraTerm ou Putty et des IDE comme VS Code, uPyCraft ou Thonny.
Installer le Terminal TeraTerm sur Windows
Télécharger et installer TeraTerm
Ouvrir TeraTerm puis sélectionner le port série correspondant au microcontrôleur.
Configurer, ensuite, la communication série dans Setup> Serial Port …
Vous pouvez maintenant utiliser le terminal pour entrer des commandes Python et les exécuter sur l’ESP32
Installation du terminal PuTTy
Télécharger et installer PuTTy
Ouvrir Putty puis sélectionner le port série correspondant au microcontrôleur.
Configurer, ensuite, la communication série
Vous pouvez maintenant utiliser le terminal pour entrer des commandes Python et les exécuter sur l’ESP32
Les terminaux PuTTy et TeraTerm sont deux bonnes options pour tester quelques commandes Python mais pas pour réaliser un programme complet.
Créer un script Python et le télécharger avec ampy
Nous allons écrire un code simple afin de tester le téléversement d’un code sur ESP32. Il y a deux fichiers qui sont traités différemment par l’ESP32 : boot.py et main.py. Par défaut, seul le boot.py est présent. Le boot.py s’exécute en premier puis le main.py est exécuté à son tour. Si vous souhaitez créer un script qui s’exécute au démarrage vous devez l’appeler main ou le lancer dans main. Si vous ne souhaitez pas qu’il s’exécute au démarrage appelez-le autrement.
import sys import time def main(): print("Program is running ") time.sleep(0.5) if __name__=="__main__": print("{} initialized".format(sys.platform)) while(1): try: main() except KeyboardInterrupt: print("Program stopped") sys.exit(0)
Nous allons ensuite installer ampy qui va nous permettre de charger un fichier sur le microcontrôleur.
python3 -m pip install adafruit-ampy
Une fois ampy installé, vous pouvez l’utiliser dans une invite de commande avec la fonction « put » pour charger un fichier en spécifiant son chemin et son nom.
ampy -d 0.5 --port COM9 put <file_directory>\main.py
N.B.: Si vous rencontrez l’erreur « ampy.pyboard.PyboardError: could not enter raw repl », vous pouvez augmenter le délai à 1 ou 2 (i,e « -d 1 » ou « -d 2 »)
Si vous vous connectez à l’ESP32 avec un terminal, vous verrez alors le programme qui s’exécute. (vous pouvez arrêter le script avec Ctrl+C)
Le script main.py va s’exécuter à chaque redémarrage. Pour le supprimer, entrez la commande suivante dans le terminal
import os
os.remove('main.py')
Utilisation de l’IDE uPyCraft
Lorsqu’on développe un code et qu’il est nécessaire de le tester, il est compliqué de passer par l’invite de commande pour le charger à chaque essai. Il existe un IDE pour Python, similaire à l’IDE Arduino: uPyCraft que vous pouvez utiliser comme éditeur et comme terminal pour vous interfacer avec le microcontrôleur.
- Télécharger et ouvrir uPyCraft
- Dans Tools> Preferences, vérifiez la configuration du port série
- Dans Tools>Serial, sélectionnez le port série utilisé par le microcontrôleur
Une fois le microcontrôleur connecté à l’interface, vous pouvez utiliser la console comme terminal
Vous pouvez aussi créer et éditer un fichier contenant le script Python. Une fois le code écrit, vous pouvez le charger et l’exécuter en appuyant sur F5. Pour valider le téléversement du code, il peut être nécessaire d’appuyer sur le bouton reset de la carte. Vous pouvez arrêter le code en appuyant sur Ctrl+C dans la console.
N.B.: Vous pouvez redémarrer le script sans faire un reset, en entrant la commande
exec(open('main.py').read(), globals())
Supprimer le fichier
Si vous souhaitez que le script ne se déclenche pas au redémarrage, il faut supprimer le code main.py en utilisant la commande dans un terminal ou dans l’IDE
import os
os.remove('main.py')
Remettre la configuration par défaut
Pour pouvoir programmer le microcontrôleur avec Arduino IDE, vous devez supprimer le fichier main.py s’il existe et téléverser un code Arduino. Cela aura pour effet de recharger le bootloader dans la flash.
Pour utiliser de nouveau MicroPython, il faudra effacer la mémoire flash et charger le firmware.