ESP8266 8266_petit.jpgESP012
 
Sommaire


Pas  de programme : pour démarrer Pas de programme : pour démarrer
_8266_00  blink : la fameuse led qui cligonte _8266_00 blink : la fameuse led qui cligonte
Serial à 74880 bauds ! Serial à 74880 bauds !
_8266_01  porte de garage _8266_01 porte de garage
ATTENTION ! Problèmes techniques sur les sorties ATTENTION ! Problèmes techniques sur les sorties
_8266_02  webserver plus esthétique _8266_02 webserver plus esthétique
_8266_03_webserver _8266_03_webserver
_8266_05_UDP _8266_05_UDP
_8266_07_AP_webserver  : En mode point d _8266_07_AP_webserver : En mode point d'accès
_8266_06_grafcet _8266_06_grafcet
_8266_08 _8266_08
_8266_EEPROM _8266_EEPROM
_8266_deep_sleep _8266_deep_sleep
_8266_ _8266_
Wemos  D1 mini Wemos D1 mini
La page principale ... La page principale ...
Cette page regroupe les commentaires sur les différents programmes que j'ai testé sur ESP8266 NodeMCU type ESP12-E, en mode autonome, par chargement à partir de l'IDE ARDUINO (voir page 8266_A).
****************

   
Vers le début Vers Page 2 Vers sommaire Pas de programme : pour démarrer
Il faut d'abord vérifier que l'alimentation est suffisante. Comme dit plus haut, une alimentation spécifique fournissant au moins 300 mA sous 3,3 V est nécessaire. Le régulateur parfois fourni semble suffisant pour tester, en alimentant avec du 5V, mais pas au-delà.
On mets donc sous tension notre 8266. Normalement, la led bleue s'allume, et on devrait voir apparaître dans l'ether un réseau WiFi dont le SSID est "ESP_ccbbaa" ou "AI-THINKER-ccbbaa" ou "FaryLink_ccbbaa", ccbbaa étant les 3 derniers octets de la Mac address de la bête. On peut s'y connecter (pas de mot de passe), mais comme aucun programme n'est derrière, on ne peut donc rien n'en faire !
MAIS, on peut déjà programmer la connexion WiFi avec le port série : voir page 8266_A

   
Vers le début Vers Page 2 Vers sommaire _8266_00 blink : la fameuse led qui cligonte
On démarre souvent la programmation en C par un "print ("Hello World!");". Ici, comme avec ARDUINO, on va faire clignoter la led. Ceci permet de vérifier que la chaine d'alimentation, les 2 BP indispensables (RESET et GPIO00) et la liaison avec le programmateur (GND, TXD, RXD) fonctionnent correctement. Ceci permet également de voir si l'IDE est complet.

https://iot-playground.com/blog/2-uncategorised/38-esp8266-and-arduino-ide-blink-example
http://www.instructables.com/id/Blink-for-ESP8266-native-like-arduino-using-Window/
 
Serial à 74880 bauds !
Lors du boot, l'ESP envoie quelques informations. Pour les lire correctement, il faut mettre le port série à 74880 bauds (ou 112500 selon quartz).
Il est alors judicieux d'utiliser ceci dans les programmes :

Serial.begin(74880); // pour avoir les infos de boot en clair

   
Vers le début Vers Page 2 Vers sommaire _8266_01 porte de garage
Cet exemple est une version modifiée du serveur web référencé ci-dessous. Il montre que l'on peut rapidement créer un récepteur de télécommande pour tout système automatique tel une porte de garage. L'émetteur n'est rien d'autre qu'un PC ou un smartphone, qui se connecte au WiFi local, puis on accède à une page HTML.
http://linuxfr.org/news/internet-des-objets-l-esp8266-et-ma-porte-de-garage
 
ATTENTION ! Problèmes techniques sur les sorties


SECTION A AFFINER !
Pour Wemos D1 / TE441 et ESP12-E breakout :
* Toutes les entrées sorties sont en 3,3 Volts. Elles sont protégées jusqu'à 6 volts, mais une adaptation 5V/3,3V est toujours préférable (pour I2C par exemple). Elles sont à tirer au VCC et à utiliser en logique INVERSE (sauf GPIO15, voir plus bas).
* Toutes les entrées sorties sont utilisables pour INTERUPTIONS/pwm/I2C/one-wire (sauf ...)
* SAUF ! GPIO16-D0. Donc ne pas utiliser GPIO16-D0 pour toute application de communication (SoftSerial par exemple).
* GPIO16 est particulière, car utilisée dans le mode 'deep sleep' pour réveiller le module (à relier à RST dans ce cas-là)
* Au démarrage, les Entrées Sorties sont à l'état haut et en mode INPUT, il faut en tenir compte pour les interfaces de sorties qui seront de préférence traités avec des opto-coupleurs reliés au VCC (sauf GPIO15).
* Toutes les GPIO sont à utiliser en logique INVERSE (sauf GPIO15)
* GPIO15 est particulière, car tirée au GND, et à utiliser en logique NORMALE
* Au démarrage, il faut que GPIO0 soit tiré au VCC et GPIO15 au GND.
(copie de 10_gpio.htm dans la section domotique_1)

L'ESP a au démarrage son port gpio0 tiré à +3.3V.
Si GPIO0 est à la masse au démarrage, l'ESP démarre en mode 'flashage'.
Si vous l'utilisez pour la commande à niveau logique haut (+3.3V), il suffirait d'un reboot pour ouvrir le garage (sympa la sécurité).
Donc j'utilise une commande inverse (par mise à la masse comme pour la led bleue).
L'ESP ne peut pas démarrer normalement si la GPIO0 est à la masse (même au travers d'une résistance et d'une diode (Base-Emetteur d'un transistor par exemple)) de ce fait nous allons utiliser un optocoupleur et la patte de masse de l'entrée de l'opto sera reliée à notre gpio. La patte d'entrée de l'opto étant reliée au travers d'une résistance au 3.3v. Comme ça lorsque l'ESP démarre la gpio est reliée au +3.3V, et tout va bien !

REMARQUE : En fait, sur l'ESP12-E, il faut tirer GPIO0 au VCC, et GPIO15 à la masse. Sinon au démarrage on se retrouve dans un mode de programmation.
Je n'ai pas eu de problèmes avec d'autres GPIO. La logique INVERSE est cependant très répandue sur les sorties (actif pour GND).

Interfaces d'entrées et de sorties
   
Vers le début Vers Page 2 Vers sommaire _8266_02 webserver plus esthétique
Webserver pour allumer une lampe, mais avec une page qui comporte des liens pour allumer/éteindre la led.

   
Vers le début Vers Page 2 Vers sommaire _8266_03_webserver
Encore un webserver, avec plus de gestion, en particulier l'entrée analogique et du traitement local.

   
Vers le début Vers Page 2 Vers sommaire _8266_05_UDP
Première tentative GerDom.
GerDom AOUT 2017 - débuts -
type de carte : NodeMCU 1.0 (ESP12-E Module)

Ce module est un SUPER-BOUTON ou télécommande
Le potentiometre sur l'entrée ADC permet de choisir une commande à envoyer
Le BP sur GPIO0 valide l'envoi
La led bleue dit ok pour l'envoi
Les leds Rouge et Verte donnent le compte-rendu : rouge = OFF verte = ON
Mettre debugc=1 pour calibrer ...

Les 3 leds peuvent être commandées par 'R''P''L' = RVB

Evolutions :
- intégrer les bibliothèques GoodFields
- _PWM_light sorties PWM pour les leds ? OUI ! IO12(R),? ?IO15(G),IO13(B)
- utiliser les 3 sorties pour q_nb SIPOPLEXAGE pour plus de sorties
- _CAPTEUR gérer d'autres entrées (sonnette, alarme, portail auto, portail piéton)
- gérer lcd série sur sortie UART1_TXD (GPIO2)
- gérer plusieurs SSID

Hardware :
- alimentation type 'blind meter' avec arrêt automatique
- 2x batteries LiIon + régulation 3,3V
- chargeur ..

From :
http://www.esp8266.com/viewtopic.php?f=29&t=2222
https://github.com/esp8266/Arduino/blob/master/doc/esp8266wifi/udp-examples.rst
PWM
analogWrite(pin, value) enables software PWM on the given pin.
PWM may be used on pins 0 to 15.
Call analogWrite(pin, 0) to disable PWM on the pin.
Value may be in range from 0 to 1023.
0 to 255 is normal on an Arduino board, as it's an 8bit ADC,
but ESP8266 is 10 bit so 1023 is full duty cycle.
http://www.esp8266.com/wiki/doku.php?id=esp8266_gpio_pin_allocations#pwm


   
Vers le début Vers Page 2 Vers sommaire _8266_07_AP_webserver : En mode point d'accès
L'intérêt de ce mode est que l'on peut construire une application qui fournira des pages web directement à un smartphone : super-interface !
La partie WiFi démarre en 'mode AP', c'est à dire qu'il génère son propopre WiFi. On n'a donc pas bvesoin d'une infrastructure WiFi existante (intéréssant sur un véhicule, ou en pleine campagne ...).
Les pages web comportent des bar-graphes à base de tables html.

Serveur Web en mode AP :
https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-guide/example-sketch-ap-web-server
   
Vers le début Vers Page 2 Vers sommaire _8266_06_grafcet
Intégration dans GerDom : permet de créer
- un MAXI-bouton à 32 fonctions
- un émetteur et un récepteur pour commander 4 bandeaux de leds en PWM
- un capteur de températures et Isolation à 3 capteurs DS18B20. Le suivi graphique est bien sûr assuré par le serveur PHP GerDom sur Pi3.
Pas d'afficheur (pas encore !)

Intégration des routines GerDom.

   
Vers le début Vers Page 2 Vers sommaire _8266_08
Version 'stable' avec GerDom en DECEMBRE 2017.

   
Vers le début Vers Page 2 Vers sommaire _8266_EEPROM
   
Vers le début Vers Page 2 Vers sommaire _8266_deep_sleep
   
Vers le début Vers Page 2 Vers sommaire _8266_

   
Vers le début Vers Page 2 Vers sommaire Wemos D1 mini
https://escapequotes.net/esp8266-wemos-d1-mini-pins-and-diagram/