C'est un petit module Wifi, léger et très bon marché et en même temps un
microprocesseur 32 bits puissant. Il dispose du software adéquat pour
réaliser un petit serveur.
La meilleure source d'information est le livre
de Neil Kolban .
J'ai utilisé le module NodeMCU parce qu'il est facile à programmer
et comporte son propre régulateur de tension (voir par exemple
ici
).J
Pour le software j'ai utilisé le IDE Arduino, complété par le support du
esp8266. Toutes les explications se retrouvent dans le livre de Kolban.
Ensuite j'ai remplacé le IDE Arduino par PlatformIO
: c'est considérablement meilleur pour gérer plusieurs projets.
Voici les paramètres pour ce NodeMCU
[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
framework = arduino
;upload_speed = 115200
upload_port=/dev/ttyUSB0
upload_speed = 460800
build_flags = -Wl,-Tesp8266.flash.4m.ld cette ligne est importante:
elle répartit la mmoire flash de 4 MB de ce NodeMCU en 3 MB SPIFFS
(fichiers ) et 1MB pour le programme.
L'utilisation de platformio est simple
Créer un projet , mettre les programmes source dans le folder src et les fichiers destinés au SPIFFS dans le folder data
- build pour compiler un programme
- upload
Le serveur esp8266 gère la mise en page (html) et la communication avec le browser (protocole http). Le mbed fournit les données .
Le esp8266 est un serveur wifi . Un browser se connecte à ce serveur et envoie une demande . Le programme du esp8266 examine cette demande et envoie en réponse une page que le browser affiche.
Les programmes sont écrits en C++ , les messages en dialecte HTML
5, en utilisant très peu de programmation dans la page web (JavaScript).
Ce serveur dispose de fichiers (SPIFFS ...regardez la documentation de
Kolban).
Du côté mbed, tout le traitement est dans le programme wifi.cpp. (qui est disponible avec les programmes RCCL_V5)
Les programmes du esp8266 sont disponibles ici
Lorsque le esp8266 a reçu une demande, il a souvent besoin de consulter le mbed. La communication se fait par une porte UART.
Le protocole est simple :
- une ligne est un string suivi d'un signe "|".
Le string est éventuellement séparé en plusieurs zones séparées par un
signe "tab"
-si le message comporte plusieurs lignes:
* après l'envoi de chaque ligne, le programme attend un message de confirmation (éventuellement un seul *).
* près la dernière ligne et la réception de la confirmation, le programme envoie une ligne vide (seulement "|")
Le esp8266 comporte un grand buffer pour la réception des messages...par contre le mbed est plus pauvre. Ceci est la raison de ce transfert ligne par ligne.
Projet rccl - Licence GPL V2