Site icon AranaCorp

Programmez un ESP8266 avec MicroPython

Nous avons vu que le NodeMCU ESP8266 é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 ESP8266 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’ESP8266 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:

Installer le firmware sur l’ESP8266

Pour utiliser MicroPython, nous allons effacer la mémoire flash de l’ESP8266 et installer le firmware. Pour cela, nous allons nous servir de l’outil esptool (.py ou .exe selon ce que vous souhaitez utiliser)

python3 -m pip install esptool

ou esptool.exe (disponible a l’installation du package esp sur Arduino IDE)

python3 -m esptool --port COM9 erase_flash
python3 -m esptool --port COM9 --baud 460800 write_flash --flash_size=detect 0 C:\Users\ADMIN\Downloads\esp8266-20210202-v1.14.bin

Pour pouvoir communiquer et programmer l’ESP avec MicroPython, il nous faut installer un terminal. Nous allons voir, ici, l’utilisation de PuTTy et de TeraTerm.

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’ESP8266

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. Pour pouvoir communiquer avec l’ESP8266, il faut sélectionner None dans Flow control sous Serial

Vous pouvez maintenant utiliser le terminal pour entrer des commandes Python et les exécuter sur l’ESP8266

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 ESP8266. Il y a deux fichiers qui sont traités différemment par l’ESP8266 : 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 appellez-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’ESP8266 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.

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 code 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

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 flash et charger le firmware.

Sources

Quitter la version mobile