Construction d'un émetteur V5

Serveur Wifi

  ESP8266

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



Organisation générale des communications mbed <-> esp8266 <-> browser

Le serveur esp8266 gère la mise en page (html) et la communication avec le browser (protocole http). Le mbed fournit les données .

Communication browser <-> esp8266

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).

Programmes

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

Communication esp8266 <-> mbed

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.



Réalisation Hardware: module NodeMCU

Ici  un cable USB se connecte directement au module NodeMCU pour le flasher.
On alimente le nodeMCU à partir d'une tension de 6,5V prélevée sur le circuit imprimé RCCL, commutée par un interrupteur et alimentant la pin Vin du NodeMCU.

Je relie la pin Rx du mbed à D8 et la pin TX à D7. Ceci sont les pins alternatives de la porte série du esp8266; il y a une seule porte , connectée normalement à D9/D10 mais ici le programme utilise la porte alternative D7/D8.
Ceci facilite la mise au point du programme: le câble usb reste connecté, le convertisseur usb monté sur la plaque nodeMCU est relié en permanence , les pins alternatives restent connectées en permanence aux pins Rx/Tx du Mbed, on laisse l'émetteur sous tension  ....et tout se passe très confortablement.
 

© Copyright 2011-2015 Robert Spilleboudt   - Tous droits réservés.

Projet rccl - Licence GPL V2