Feather Huzzah ESP8266 sous MicroPython + DHT11
Petite journée détente... aujourd'hui, je voulais mesurer l'humidité et la température de ma cave avec un Feather-Huzzah-ESP8266 sous MicroPython et un DHT11.
La raison d'un tel prototype
Nous envisageons de créer un petit réseau de capteur WiFi (en Python) + Solution d'affichage sur Raspberry-Pi (en Python aussi).
Mais j'ai aussi une bonne raison toute personnelle de le faire.
Avec le changement récent de la chaudière (pour une version super économe), nous avons eu moins de déperdition de chaleur autour de la dite chaudière.
La température de la cave à chuter drastiquement.
L'humidité à trouvé, là, une occasion idéale de s'installer... elle est montée en flèche... avec le risque d'apparition de moisissure.
Après une isolation du vide ventilé et l'organisation d'une ventilation forcée (gestion manuelle), mais un petit monitoring ce serait sympa.
Le montage et le code est simple... mais la toute première mise en oeuvre d'un ESP8266 en MicroPython + connexion WiFi + WebRepl est nettement plus long!
Le Montage DHT11
Une fois la connexion REPL (ou WebRepl) établie, vous pourrez tester ce senseur très facilement.
Ce qui à affiché:
ESP8266 avec MicroPython
La première étape est de placer le Firmware MicroPython sur un ESP8266.
Nous ne nous étendrons pas sur cette partie du sujet (pas encore).
En attendant, le tutoriel "How To Load MicroPython on a Board" fait très bien l'affaire.
C'est les possesseur de machine Linux et Mac qui aurons la vie facile :-)
RShell
Le deuxième étape est d'utiliser RShell. C'est un outil développer par le créateur de WiPy. RSheel est un outil interactif (en ligne de commande) qui permet de faire du transfert de fichier avec un MicroPython, édition de fichier et session REPL via une simple connexion série.
C'est tout simplement magique même si cela demande un peu d'entraînement.
Dans rshell, l'ESP8266 sera vu comme une carte pyboard.
Pour accéder à l'espace de stockage de la carte il faudra utiliser le préfix "/pyboard". Ainsi /pyboard/main.py permet d'accéder au fichier main.py sur l'ESP8266.
Sans le préfix "/pyboard", le fichier sera considéré comme un fichier local du pc.
Notre ESP8266 en MicroPython est accessible sur le port série /dev/ttyUBS0 (nous utilisons Linux).
Nous utilisons donc la commande rshell suivante depuis un terminal pour lancer un rshell interactif avec l'ESP8266:
rshell --port /dev/ttyUSB0 --baud 115200 --buffer-size 128 --editor nano
le paramètre "editor" permet de fixer l'éditeur de texte à utiliser.
C'est pratique car la commande "edit /pyboard/boot.py" saisie dans rshell permet:
Cela corrompt rapidement l'échange de donnée... et j'ai souvent eu l'espace de stockage fichier (la flash) corrompu sur l'ESP8266. Donc --buffer-size 128 !!
Le fichier boot.py
Voici un fichier boot.py dans lequel vous devez placer votre SSID (identifiant WiFi) et mot de passe WiFi. C'est lui qui gère la connexion WiFi. N'oublier pas de modifier les paramètre Mon_SSID_WiFi et Mon_mot_de_passe_WiFi
N'oubliez de laisser une ligne vide en fin de fichier.
Utiliser rshell pour copier le fichier sur l'ESP8266
Vous pouvez le copier assez facilement sur l'ESP8266 via la liaison série (sur /dev/ttyUBS0 ) grâce aux commandes rshell suivante (oui, il faut installer et utiliser rshell... prenez le temps... ce sera super pratique à l'avenir).
Commandes rshell:
Redémarrer votre ESP8266
C'est le moment de redémarrer votre ESP8266. Le mieux c'est de le débrancher et de le rebrancher.
Pour les initiés, vous devez savoir qu'un soft-reboot (Ctrl-D) ne convient pas à l'initialisation de la connexion WiFi + WebRepl.
Si tout se passe bien, vous devriez voir apparaître votre ESP8266 sur votre réseau WiFi. Son nom commence par "ESP_" suivit de la fin de son adresse MAC.
Trouver son ESP8266 sur le réseau
Vous pouvez utiliser les informations disponibles sur votre Box-WiFi ou retournée par l'utilitaire fing ou encore nmap.
Cela vous permet d'avoir soit son adresse IP, soit son nom d'hôtes sur le réseau.
Télécharger le client WebRepl
En vous rendant sur le github suivant, vous pourrez télécharger le client WebRepl.
Il vous suffira d'ouvrir le fichier webrepl.html dans votre navigateur internet (FireFox dans notre cas) pour démarrer le client.
Vous avez l'opportunité de démarrer WebRepl depuis une session interactive.
Etablir une session WebRepl
Pour le reste, vous n'avez plus qu'a saisir l'adresse IP (ou le nom) de votre ESP8266 dans l'interface WebRepl.
WebRepl permet d'établir une connexion REPL par l'intermédiaire d'une interface HTTP. C'est simple et efficace.
A noter qu'a la toute première connexion, vous devrez initialiser le mot de passe qui sécurise la connexion... puis vous reconnecter.
Vous pouvez maintenant saisir vos commandes d'essais, envoyer un fichier (ou en téléverser un).
C'est un long parcours... peut être un peu escarpé (il y a beaucoup de choses nouvelles)... mais avec beaucoup de savoir à la clé.
Happy Electronic Hacking
Dominique
Feather-Huzzah-ESP8266 |
La raison d'un tel prototype
Nous envisageons de créer un petit réseau de capteur WiFi (en Python) + Solution d'affichage sur Raspberry-Pi (en Python aussi).
Mais j'ai aussi une bonne raison toute personnelle de le faire.
Avec le changement récent de la chaudière (pour une version super économe), nous avons eu moins de déperdition de chaleur autour de la dite chaudière.
La température de la cave à chuter drastiquement.
L'humidité à trouvé, là, une occasion idéale de s'installer... elle est montée en flèche... avec le risque d'apparition de moisissure.
Après une isolation du vide ventilé et l'organisation d'une ventilation forcée (gestion manuelle), mais un petit monitoring ce serait sympa.
Le montage et le code est simple... mais la toute première mise en oeuvre d'un ESP8266 en MicroPython + connexion WiFi + WebRepl est nettement plus long!
Le Montage DHT11
Une fois la connexion REPL (ou WebRepl) établie, vous pourrez tester ce senseur très facilement.
import machine import dht d = dht.DHT11( machine.Pin(4) ) d.measure() d.temperature() d.humidity()
Ce qui à affiché:
- 25 (degrés Celcius) pour temperature()
- 44 (humidité relative) pour humidity()
ESP8266 avec MicroPython
La première étape est de placer le Firmware MicroPython sur un ESP8266.
Nous ne nous étendrons pas sur cette partie du sujet (pas encore).
En attendant, le tutoriel "How To Load MicroPython on a Board" fait très bien l'affaire.
C'est les possesseur de machine Linux et Mac qui aurons la vie facile :-)
RShell
Le deuxième étape est d'utiliser RShell. C'est un outil développer par le créateur de WiPy. RSheel est un outil interactif (en ligne de commande) qui permet de faire du transfert de fichier avec un MicroPython, édition de fichier et session REPL via une simple connexion série.
C'est tout simplement magique même si cela demande un peu d'entraînement.
- https://github.com/dhylands/rshell
Ce lien contient toutes les informations d'utilisations et d'installation nécessaire.
Dans rshell, l'ESP8266 sera vu comme une carte pyboard.
Pour accéder à l'espace de stockage de la carte il faudra utiliser le préfix "/pyboard". Ainsi /pyboard/main.py permet d'accéder au fichier main.py sur l'ESP8266.
Sans le préfix "/pyboard", le fichier sera considéré comme un fichier local du pc.
Notre ESP8266 en MicroPython est accessible sur le port série /dev/ttyUBS0 (nous utilisons Linux).
Nous utilisons donc la commande rshell suivante depuis un terminal pour lancer un rshell interactif avec l'ESP8266:
rshell --port /dev/ttyUSB0 --baud 115200 --buffer-size 128 --editor nano
le paramètre "editor" permet de fixer l'éditeur de texte à utiliser.
C'est pratique car la commande "edit /pyboard/boot.py" saisie dans rshell permet:
- de télécharger boot.py de l'ESP8266,
- puis l'éditer localement avec nano (éditeur de texte)
- et pour finir synchroniser les changements sur l'ESP8266 après avoir quitté l'éditeur.
Cela corrompt rapidement l'échange de donnée... et j'ai souvent eu l'espace de stockage fichier (la flash) corrompu sur l'ESP8266. Donc --buffer-size 128 !!
Le fichier boot.py
Voici un fichier boot.py dans lequel vous devez placer votre SSID (identifiant WiFi) et mot de passe WiFi. C'est lui qui gère la connexion WiFi. N'oublier pas de modifier les paramètre Mon_SSID_WiFi et Mon_mot_de_passe_WiFi
def do_connect(): import network wlan = network.WLAN(network.STA_IF) wlan.active(True) if not wlan.isconnected(): print('connecting to network...') wlan.connect("Mon_SSID_WiFi", "Mon_mot_de_passe_WiFi") while not wlan.isconnected(): pass print('network config:', wlan.ifconfig()) do_connect() import gc import webrepl webrepl.start() gc.collect()
N'oubliez de laisser une ligne vide en fin de fichier.
Utiliser rshell pour copier le fichier sur l'ESP8266
Vous pouvez le copier assez facilement sur l'ESP8266 via la liaison série (sur /dev/ttyUBS0 ) grâce aux commandes rshell suivante (oui, il faut installer et utiliser rshell... prenez le temps... ce sera super pratique à l'avenir).
Commandes rshell:
- rm /pyboard/boot.py
- cp boot.py /pyboard/boot.py
Redémarrer votre ESP8266
C'est le moment de redémarrer votre ESP8266. Le mieux c'est de le débrancher et de le rebrancher.
Pour les initiés, vous devez savoir qu'un soft-reboot (Ctrl-D) ne convient pas à l'initialisation de la connexion WiFi + WebRepl.
Si tout se passe bien, vous devriez voir apparaître votre ESP8266 sur votre réseau WiFi. Son nom commence par "ESP_" suivit de la fin de son adresse MAC.
Trouver son ESP8266 sur le réseau
Vous pouvez utiliser les informations disponibles sur votre Box-WiFi ou retournée par l'utilitaire fing ou encore nmap.
Cela vous permet d'avoir soit son adresse IP, soit son nom d'hôtes sur le réseau.
Télécharger le client WebRepl
En vous rendant sur le github suivant, vous pourrez télécharger le client WebRepl.
Il vous suffira d'ouvrir le fichier webrepl.html dans votre navigateur internet (FireFox dans notre cas) pour démarrer le client.
Vous avez l'opportunité de démarrer WebRepl depuis une session interactive.
Etablir une session WebRepl
Pour le reste, vous n'avez plus qu'a saisir l'adresse IP (ou le nom) de votre ESP8266 dans l'interface WebRepl.
WebRepl permet d'établir une connexion REPL par l'intermédiaire d'une interface HTTP. C'est simple et efficace.
A noter qu'a la toute première connexion, vous devrez initialiser le mot de passe qui sécurise la connexion... puis vous reconnecter.
Vous pouvez maintenant saisir vos commandes d'essais, envoyer un fichier (ou en téléverser un).
C'est un long parcours... peut être un peu escarpé (il y a beaucoup de choses nouvelles)... mais avec beaucoup de savoir à la clé.
Happy Electronic Hacking
Dominique
Écrire un commentaire