MicroPython sur l'ESP8266-EVB (Evaluation Board) d'Olimex
ESP8266-EVB d'Olimex |
Nous allons utiliser une machine Linux (Linux Mint) pour Flasher l'ESP8266. Mais vous pouvez réaliser cela à partir d'un simple Raspberry-Pi.
Il nous faudra:
- Un ESP8266-EVB - carte d'évaluation disponible ici chez MCHobby
- Une alimentation 5V - pour alimenter la carte et l'ESP8266
- Un câble Console 3.3V - aussi appelé USB-Série-TTL disponible chez MC Hobby.
câble Console 3.3V |
Nous aurons besoin de différents éléments logiciels (dont ESPTool).
Si vous manquez d'informations, vous pouvez consulter notre tutoriel Flasher MicroPython sur ESP8266 (sur le wiki de MCHobby).
Installer ESPTool
Nous aurons besoin de l'outil ESPtool pour flasher notre ESP8266, celui-ci s'installe avec l'outil PIP (Python Install Package) disponible sur les distributions Linux.
sudo pip install esptool
Il s'agit d'un utilitaire Python 2.7 mais également compatible Python 3, il devrait donc être possible de l'installer avec l'utilitaire pip3.
Firmware MicroPython
Il est également nécessaire de télécharger le dernier firmware MicroPython pour ESP8266 disponible sur http://micropython.org/download/#esp8266
Firmware MicroPython - disponible sur MicroPython.org |
A l'heure de l'écriture de ces lignes, la dernière version disponible (et flashée) est la 1.9.4 (avec Async.io).
Nous allons donc télécharger le fichier esp8266-20180511-v1.9.4.bin, nom à remplacé par la version du jour.
cd ~ wget http://micropython.org/resources/firmware/esp8266-20180511-v1.9.4.bin
Activer le Mode Flash sur la carte
Pour effacer la mémoire Flash et pour téléverser le Firmware MicroPython. il est nécessaire d'activer l'ESP8266 en Mode Flash.
Sur un ESP8266 Olimex il faut maintenir le bouton GPIO 0 enfoncé avant de mettre la carte sous tension puis relâcher le bouton GPIO 0. Voila, la carte est en mode Flash.
ESP8266-EVB (Evaluation Board) |
Nous allons commencer par brancher le câble console USB sur le port série de l'ESP8266. Ce port est disponible sur le connecteur UEXT de la carte ESP8266-EVB.
Connecter le convertisseur USB-vers-Série sur le port UEXT |
Connecter le convertisseur USB-vers-Série sur le port UEXT de ESP8266-EVB (Evaluation Board) |
~ $ dmesg
..
[314212.993727] usb 2-2: Product: USB-Serial Controller
[314212.993731] usb 2-2: Manufacturer: Prolific Technology Inc.
[314213.370802] usbcore: registered new interface driver usbserial
[314213.370812] usbcore: registered new interface driver usbserial_generic
[314213.370819] usbserial: USB Serial support registered for generic
[314213.374407] usbcore: registered new interface driver pl2303
[314213.374417] usbserial: USB Serial support registered for pl2303
[314213.374430] pl2303 2-2:1.0: pl2303 converter detected
[314213.374956] usb 2-2: pl2303 converter now attached to ttyUSB0
Messages qui indique que le périphérique série est attaché sur /dev/ttyUSB0 .
Effacer la Flash
La première opération nécessaire est l'effacement de la mémoire FLASH de l'ESP8266 à l'aide de l'utilitaire ESPTool.
Placez la carte en mode Flash comme indiqué ci-avant.
Ensuite, saisissez la commande suivante:
esptool.py --port /dev/ttyUSB0 erase_flash
ce qui produit le contenu suivant indiquant que l'opération s'est bien déroulée.
$ esptool.py --port /dev/ttyUSB0 erase_flash esptool.py v2.0.1 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266 Uploading stub... Running stub... Stub running... Erasing flash (this may take a while)... Chip erase completed successfully in 2.5s Hard resetting...
Après l'opération de Flash, il est important de réinitialiser la plateforme. Comme il n'y a pas de bouton RESET, il faut alors faire un cycle d'alimentation pour arriver au même résultat. Débranchez l'alimentation puis rebranchez là, voila, la carte est réinitialisée.
Flasher le FirmWare MicroPython
Cette seconde opération permet de flasher le Firmware MicroPython sur l'ESP8266, toujours avec l'aide de l'utilitaire ESPTool.
Placez la carte en mode Flash comme indiqué ci-avant.
Ensuite, saisissez la commande suivante:
cd ~ esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect -fm dio 0 esp8266-20180511-v1.9.4.bin
Ce qui produit le résultat suivant indiquant que le FirmWare est bien flashé:
$ esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect -fm dio 0 esp8266-20180511-v1.9.4.bin esptool.py v2.0.1 Connecting........_____....._____....._____.. Detecting chip type... ESP8266 Chip is ESP8266 Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 2MB Flash params set to 0x0230 Compressed 604872 bytes to 394893... Wrote 604872 bytes (394893 compressed) at 0x00000000 in 35.3 seconds (effective 137.1 kbit/s)... Hash of data verified. Leaving... Hard resetting...
Après l'opération de Flash, il est important de réinitialiser la plateforme. Il faut alors faire un cycle d'alimentation pour réinitialiser la plateforme.
Connexion à l'ESP8266 via le port série
Maintenant que le FirmWare MicroPython est actif sur la carte, une ligne de commande MicroPyhton dite REPL est disponible sur le port série.
Le plus simple est d'utiliser la commande screen .
screen /dev/ttyUSB0 115200
Lorsque vous avez terminé d'utiliser screen, il est possible de le quitter (sur la plupart des versions) en utilisant la combinaison de touches Ctrl a puis k puis y (pour oui) -OU- presser Ctrl a puis taper :quit et presser le retour clavier.
Une fois connecté sur le REPL série essayez de presser le retour clavier (pour confirmer une première commande "vide") et vous devriez voir l'invite REPL >>> .
Vous pouvez saisir la fonction help() puis presser le retour clavier, cela affiche un message d'aide sur la plupart des cartes MicroPython.
Si vous n'arrivez pas a obtenir l'invite REPL >>> alors vous pouvez essayez de saisir la combinaison de touche Ctrl c plusieurs fois (cela interrompt le script/programme en cours d'exécution sur la carte).
Voila, c'est tout en ce qui concerne la connexion REPL, vous êtes maintenant prêt à écrire vos premières lignes de code MicroPython!
RShell, l'utilitaire avancé
Screen permet uniquement d'utiliser l'invite de commande.
Il existe également l'utilitaire RSHELL agissant comme un interpréteur de commande permettant de transférer et manipuler des fichiers via le port série de l'ESP8266.
Les sessions REPL sont également possible depuis l'utilitaire RShell. RShell réclame un peu d'investissement mais je vous assure que c'est un temps utilement investit.
Voyez notre tutoriel RShell (en Français) sur le Wiki de MCHobby.
Attention, il faut absolument réduire la taille du buffer d'échange à 128 octets car nous avons constaté que le buffer par défaut écrase et corrompt le système de fichier.
rshell --port /dev/ttyUSB0 --baud 115200 --buffer-size 128 --editor nano
Interagir avec l'ESP8266-EVBComme indiqué sur le graphique ci-dessous, le relais est sur le GPIO 5 et le bouton sur le GPIO 0.
Voici le contenu de la sessions REPL permettant de changer l'état du relais
Module relais de la carte ESP8266-EVB |
>>> from machine import Pin >>> relay = Pin(5, Pin.OUT) >>> relay.value( 1 ) # Relais activé >>> relay.value( 0 ) # Relais inactif >>> relay.value( 1 ) # Relais activé >>> relay.value( 0 ) # Relais inactif >>> relay.value( 1 ) # Relais activé >>> relay.value( 0 ) # Relais inactif
La lecture de l'entrée bouton se fait sur le GPIO 0.
Entrée bouton de la carte ESP8266-EVB |
Par conséquent:
- Switch OUVERT : GPIO 0 = HIGH (3.3v)
- Switch FERME : GPIO 0 = LOW (0v)
>>> from machine import Pin >>> from time import sleep_ms >>> btn = Pin( 0, Pin.IN, pull=Pin.PULL_UP ) >>> while True: >>> print( '--' if btn.value()==1 else 'PRESSE' ) >>> sleep_ms( 300 )Ce qui produit les résultats suivants dans la session REPL:
-- PRESSE PRESSE PRESSE -- -- -- -- -- PRESSE -- -- PRESSE -- -- -- --
Ca roule, c'est absolument génial! Il ne reste plus qu'à l'intégrer dans votre prochain projet.
Le connecteur UEXT
Nous allons aussi nous pencher sur le connecteur UEXT. Celui-ci nous intéresse plus particulièrement parce qu'il transporte le bus I2C.
Connecteur UEXT et correspondance avec GPIO de l'ESP8266 |
UEXT est une interface standardisé qui permet de brancher facilement des senseurs et cartes d'extensions. Nous aurons l'occasion d'y revenir prochainement dans d'autres articles mais pour l'instant nous inspecter ce connecteur.
En savoir plus sur MicroPython
MC Hobby produit de nombreux tutoriels sur MicroPython, tutoriels couvrant plusieurs plateformes microcontrôleurs.
Venez découvrir les autres tutoriels MicroPython disponible sur notre Wiki.
Où acheter
- ESP8266-EVB d'Olimex disponible de stock chez MCHobby
- ESP8266-DEV d'Olimex disponible de stock chez MCHobby
Écrire un commentaire