ESP8266
ESP012
Sommaire
| Une révolution ? Un Ethernet "série" programmable |
Nota : je discute du domaine du 'système domotique GoodFields', qui communique en UDP. (voir chapitre 22 de ARDUINO)
ESP8266 ESP-12 est une véritable petite bête 'de course' :
* 4M de mémoire flash (ARDUINO 32K). Avec l'IDE ARDUINO, on ne voit que 1M, mais cela suffira ...
* horloge à 80 Mhz (ARDUINO 8 ou 16Mhz)
* 80ko de RAM dont 50 utilisable (ARDUINO 2ko)
* 17 E/S dont 10 utilisables dont 1 en analogique 10 bits et toutes PWM
Dans certains cas, il suffira tout seul (sans ARDUINO) pour faire :
* une télécommande
* un capteur autonome (station météo)
* un relais télécommandable (ou prise ou bandeau leds ou porte de garage ou arrosage ...)
* une horloge murale
Une bonne argumentation:
https://www.baldengineer.com/esp8266-5-reasons-to-use-one.html
Une bonne présentation:
https://www.ekito.fr/people/presentation-de-l-esp8266/
Une bonne carte de développement (19$):
https://www.adafruit.com/product/2821
Un vrai guide pour démarrer :
https://projetsdiy.fr/esp8266-guide-de-choix-achat-projets-diy/
Esp Easy : un IOT tout prêt !
https://projetsdiy.fr/esp-easy-objet-connecte-domotique-esp8266/
Et moins cher évidemment (7€) :
https://www.amazon.fr/gp/product/B01ELFAF1S/ref=ox_sc_act_title_4?smid=A29EZVB447EKA7&psc=1
https://www.fais-le-toi-meme.fr/fr/electronique/materiel/esp8266-arduino-wifi-2-euros
https://www.fais-le-toi-meme.fr/fr/electronique/tutoriel/programmes-arduino-executes-sur-esp8266-arduino-ide
http://arduino.esp8266.com/versions/1.6.5-1160-gef26c5f/doc/reference.html
 | | Une carte avec le programmateur intégré XCSOURCE Carte de développement Module Sans Fil ESP8266 D1 Mini NodeMcu Lus WiFi pour Arduino TE441 Wemos D1 |
https://www.amazon.fr/gp/product/B01ELFAF1S/ref=ox_sc_act_title_4?smid=A29EZVB447EKA7&psc=1
https://arduino103.blogspot.com/2017/11/lesp8266-facon-wemos.html?m=1
Notes ATTENTION :
ESP12E ou ESP12F ou Wemos D1 sont en logique 3,3V. PAs de compatibilité directe avec le 5V. Prévoir des interfaces pour les bus I2C, et pour le TX/RX si le programmateur est en 5V.
 | | Il faut utiliser le module ESP8266-ESP12 avec sa carte support (breakout) qui permet de planter tout ça sur une breadboard ... |
 | | Et voilà l'arrière ... avec le régulateur 3,3V fourni |
On peut programmer la bête en 'stand-alone' avec l'IDE ARDUINO v1.8.0+ ... voir plus loin.
Consommation : mesure sur le 5 Volts du CP2102 : moins de 10 à 20 mA pointe,
prévoir en moyenne 50 à 60 mA annoncé jusqu'à 215 mA sur la datasheet sur le 3,3V,
donc alimentation de l'Arduino en 3,3v un peu juste en dehors de tests (50mA maxi). Dans la pratique une alimentation 3,3V autonome est nécéssaire, sinon on a des aléas nombreux ...
Il existe des modes d'économie d'énergie (deep sleep) ... à creuser si on peut (transmetteurs de capteurs par exemple)
| Premiers essais en mode AT |
Montage initial
* Soudure du esp8266 sur sa plaque (breakout).
* Le régulateur sous la plaque : 6206A 1601/33 n'est utile que si vous alimentez en 5 Volts, il faut alors supprimer le pont R2 (0 Ohms) qui shunte le VCC avec l'alim du ESP12 lui-même. Un inconvénient de ce régulateur est que le 3,3V n'est pas facilmenet accessible dans ce cas-là pour les interfaces extérieurs au breakout.
Si on ne met pas le régulateur et que l'on laisse R2, il faut fournir du 3,3V (250mA au moins).
R1 = 103 = 10kOhms tire le GPIO15 au GND
R3 = 103 = 10kOhms tire le CH_PC au VCC (validation I2C du module)
Fct Fil Pin ESP Pin MiniPRO
--- ------ ------- ----------
GND marron GND 1-GND
3V3 rouge VCC 3-VCC
TXD orange RXD 4-RX
RXD jaune TXD 5-TX
RST vert REST 6-DTR ce reset ne marche pas, voir plus loin (il faut tirer le REST au VCC)
Mise sous tension : 1 puis 2 bips sur la led bleue ... bon ok.
Dans un premier temps, je m'aperçois qu'un wifi a démarré : AI-THINKER-132B04 (Farylink... avec les D1 TE441)
Je tente une connexion avec mon PC, ok, ca marche !
Carte réseau sans fil Connexion réseau sans fil :
Suffixe DNS propre à la connexion. . . :
Adresse IPv4. . . . . . . . . . . . . .: 192.168.4.2
Masque de sous-réseau. . . . . . . . . : 255.255.255.0
Passerelle par défaut. . . . . . . . . : 192.168.4.1
Je tente http://192.168.4.1 NON, cela ne marche pas ! En telnet ou SSH non plus. BON.
En fait, on a des possibilités d'upgrade du firmware ... et peut-être plus ?
Sur l'IDE ARDUINO :
Outils, type de carte, en bas on trouve l'ESP8266, je prends 'Generic ESP8266 module'.
Mais on a aussi, qui marche : NodeMCU 1.0(ESP-12E Module)
Je sélectionne COM10 (mon interface CP2102), je lance le moniteur série à 115200 bauds
et j'obtiens une réponse...se terminant par 'Ai-Thinker Technology Co. Ltd. ready'
Je tente ATI, réponse : ERROR. Tout va bien ! ou presque !
Mettre dans l'option nouvelle ligne en bas, 'Les deux, NL et CR'
AT
OK
Ca marche !
Ensuite, il va falloir trouver de la doc ...
Des exemples sympas
Les commandes AT
http://www.espressif.com/en/products/hardware/esp8266ex/resources
COMMANDES PRINCIPALES
=====================
Starting test :
Command Description
AT+GMR output the firmware revision number
AT+CWMODE=3 Set Wifi mode to both Access Point and STAtion
AT+CWLAP List Access Points
AT+CWJAP=“SSID”,“password**************
Other commands :
Command Description
AT Test AT startup
AT+RST Restart module
AT+GMR View version info
AT+GSLP Enter deep-sleep mode
ATE AT commands echo or not
AT+RESTORE Factory reset
AT+UART UART configuration, [@deprecated]
AT+UART_CUR UART current configuration
AT+UART_DEF UART default configuration, save to flash
AT+SLEEP Sleep mode
AT+WAKEUPGPIO Set a GPIO to wake ESP8266 up from light-sleep mode
AT+RFPOWER Set maximum value of RF TX Power
AT+RFVDD Set RF TX Power according to VDD33
*** First AT Commands ***
The first AT command you will want to try is:
it will output the firmware revision number similar to:
0018000902-AI03.
000902 means firmware version 0.9.2, 0018 is the version level of the AT command support.
Then, you may want to list the Access Points that are visible from your ESP module:
AT+GMR
AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
Ai-Thinker Technology Co. Ltd.
Jun 13 2016 11:29:20
OK
AT+RST
OK
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : DIO
SPI Flash Size & Map: 32Mbit(512KB+512KB)
jump to run user1 @ 1000
grabouillas !
Ai-Thinker Technology Co. Ltd.
ready
* passage en mode client du Wifi, par défaut il est 'AP'
AT+CWMODE_CUR=1
OK
(AT+CWMODE_DEF=1 pour mettre en flash)
* scan des Wifi
AT+CWLAP
+CWLAP:(2,"chilesse_1",-63,"00:24:d4:c9:9c:f0",10,-16,0)
+CWLAP:(0,"FreeWifi",-64,"00:24:d4:c9:9c:f1",10,-16,0)
+CWLAP:(5,"FreeWifi_secure",-62,"00:24:d4:c9:9c:f2",10,-16,0)
OK
* connection au réseau désiré
AT+CWJAP_CUR="chilesse_1","*****************"
WIFI CONNECTED
WIFI GOT IP
OK
* Voir IP
AT+CIPSTA_CUR?
+CIPSTA_CUR:ip:"192.168.0.33"
+CIPSTA_CUR:gateway:"192.168.0.254"
+CIPSTA_CUR:netmask:"255.255.255.0"
OK
* Forcage IP
AT+CWDHCP_CUR=0
AT+CIPSTA_CUR=,,
AT+CIPSTA_CUR="192.168.0.151","192.168.0.254","255.255.255.0"
******* émission UDP (page59)
AT+CIPSTART="UDP",,,,
AT+CIPSEND=
datas ...
* J'essaie un envoi spécifique au PC (qui tourne sur GERDOMUDP.EXE):
AT+CIPSTART="UDP","192.168.0.23",1000,1001
AT+CIPSEND=20
0XM-Message de test1
>>CA MARCHE !!!
* décrocher le lien UDP :
AT+CIPCLOSE
OK
* J'essaie un envoi sur adresse multicast :
AT+CIPSTART="UDP","192.168.0.255",1000,1001
AT+CIPSEND=20
0XM-Message de test2
OK
>>CA MARCHE !!!
Conclusion : UDP send et receive
* Résumé des commandes à passer pour paramétrer en FLASH
AT+RESTORE reset 'usine' si besoin
* configuration WiFi
AT+CWMODE_DEF=1
AT+CWJAP_DEF="chilesse_1","*****************"
AT+CIPSTA_DEF="192.168.0.151","192.168.0.254","255.255.255.0"
éventuellement : AT+CIPSTA_CUR? pour voir les adresses IP
* envoi en UDP @IP-broadcast sur le port 1000, reception aussi sur le 1000
AT+CIPSTART="UDP","192.168.0.255",1000,1000
AT+CIPSEND=20
>0blabla_10_blabla_20
* réception sur le port 1000: +IPD,n:données
+IPD,4:0ZU-
* arrêt de l'UDP
AT+CIPCLOSE
* Il est judicieux d'utiliser la commande AT+CIPSENDEX plutôt que AT+CIPSEND.
La longueur est alors le maximum que l'on peut envoyer. Les données doivent se terminer par un NULL (caractère \0)
AT+CIPSENDEX=50
>
blabla\0 emission
Mode transparent
Ce mode permet de 'bloquer' la transmission permanente entre le WiFi et la voie série.
On en sort par +++
AT+RESTORE reset 'usine' si besoin
* modification UART série (pour mini PRO dont c'est la vitesse maximale)
AT+UART_DEF=57600,8,1,0,0
* paramétrage
AT+CWMODE_DEF=1
AT+CWJAP_DEF="chilesse_1","*****************"
Nb : on est en DHCP par défaut, si on ne veut pas, faire :
AT+CIPSTA_DEF="192.168.0.151","192.168.0.254","255.255.255.0"
Eventuellement pour voir les adresses IP :
AT+CIPSTA_CUR? ou AT+CIPSTA_DEF?
Jusque là, tout est en mémoire, et donc après redémarrage, on n'a plus besoin de le renvoyer.
* communication UDP
AT+CIPSTART="UDP","192.168.0.255",1000,1000,0
AT+CIPMODE=1
AT+CIPSEND
blabla\0 emission
+IPD,20:ZAW-SHACK reception
* CLOSE si besoin, reprendre ensuite au CIPSTART
AT+CIPCLOSE
Voici, on est donc arrivé à une interface WiFi pilotable par une simple voie série, donc adjoignable à un ARDUINO MiniPRO 3,3V pour le faire communiquer. BRAVO.
Avec un arduino mini pro en 3.3v j'essaie d'intégrer un ESP dans le réseau GerDom. On peut prévoir une sortie en PWM pour piloter une lampe, un bouton poussoir pour la commander localement et envoyer sur les bus GerDom une commande générale d'allumage des lampes de tous les modules. A terme, on pourra envisager d'avoir un afficheur 2 lignes de 16 caractères, 2 boutons CHOIX ET VALIDATION , un bouton rotatif ... une sortie pour actionner un relais ...
Également, il est possible de se passer de l'Arduino car l'ESP peut porter un programme et possède des entrées sorties...
Alimentation 3.3 ou 5 volts ?
La carte break-out de l'ESP12 possède un régulateur. Il est parfois court-circuité par une résisatnce de 0 Ohms. On peut donc l'alimenter en 3,3V , ou en 5V si on dessoude cette résistance.
Par contre, il faut savoir que les GPIO sont en 3,3V !
Interface série
L'ESP12 a deux interfaces série : un TX+RX et un TX seulement. Le premier est utilisable avec les commandes AT comme dans les essais cités. Le second (TX seulement) semble être fait pour envoyer des infos à un afficheur série ....
| Utilisation en autonome directe, Mise en oeuvre hardware |
Mais, comme on peut le constater, l'ESP8266 a des GPIO, autrement dit des entrées sorties.
Mis à part toutes les E/S occupées basiquement (Interfaces série UART, SPI, HSPI, I2C, I2S, IR remote control, ...) et qui peuvent être (peut-être) réutilisées à autre chose, on a au moins :
* TOUT pin 6 ADC input 10 bits = 1024 points (chapitre 4 de la doc référencée ci-dessous)
* sorties PWM avec 10 bits soit 0 à 1023
* 1 led câblée sur GPIO2, mais connectée en inverse au VCC
* 1 BP pour le reset, (NON)
La mise en oeuvre doit respecter quelques précautions, en particulier ceci peut expliquer qu'en mode 'test-plateforme' on ait eu quelques aléas et déboires :
* alimentation 3,3V indépendante 250 mA minimum (pas la sortie de l'ARDUINO qui est limitée à 50 mA)
* résistances de tirage à mettre en place, voir ci-dessous (le breakout comporte le tirage de GPIO15 au GND et CH_PD au VCC)
Minimal Hardware Setup for Bootloading and Usage
PIN |
Resistor |
Serial Adapter |
VCC |
|
VCC (3.3V) |
GND |
|
GND |
TX or GPIO2(1) |
|
RX |
RX |
|
TX |
GPIO0 |
PullUp(2) |
DTR + Bouton poussoir local |
Reset(3) |
PullUp(2) |
RTS |
GPIO15(4) |
PullDown(2) |
|
CH_PD |
PullUp(2) |
Notes :
PullUp : résistance de 10K vers le VCC
PullDown : résistance de 10K vers le GND
(1) GPIO2 is alternative TX for the boot loader mode
(2) PullUP inclus sur le breakout. Validation du module(voir I2C). Directly connecting a pin to VCC or GND is not a substitute for a PullUp or PullDown resistor, doing this can break upload management and the serial console, instability has also been noted in some cases.
(3) Reset is also named RSBT or REST (adding PullUp improves the stability of the module)
(4) PullDown inclus sur le breakout. GPIO15 is also named MTDO
 | | Voici le schema pour programmation directe NB: le système avec DTR et CTS ne marche pas. Il faut appuyer sur les boutons pour mettre GPIO0 à la masse pendant le reset pour flasher. Voir plus loin un montage qui permet cela... |
pour avoir le reset automatique pour programmer
http://www.arduinesp.com/blink
Par contre, mon programmateur n'a qu'une sortie pour le reset ... pas le DTR et CTS !?
| Problèmes techniques sur les sorties |
Pour que l'ESP démarre normalement sur le programme chargé en flash, il faut que ces 3 ports soient correctements tirés.
Si vous utilisez ces ports, je vous conseille l'usage décrit dans la 5° colonne ci-dessous.
fonction |
ESP8266 ESP12E |
tirage |
D1 TE441 |
Usage conseillé |
Flash mode |
GPIO0 |
10k Pull-up 3.3V |
D3 |
BP au GND |
BUILTIN_LED |
GPIO2 |
10k Pull-up 3.3V |
D4 |
Led inverse ou BP au GND |
SS |
GPIO15 |
10k Pull-down GND |
D8 |
Sortie directe ou BP au + |
GPIO0 : L'ESP ne peut pas démarrer si la GPIO0 est à la masse (on est alors en mode flashage). L'usage pour un BP est idéal, il servira pour passer en mode flashage, mais aussi comme bouton de validation dans l'application.
de ce fait nous allons utiliser un optocoupleur et la patte de masse de l'entrée de l'opto sera reliée à notre GPIO0. La patte d'entrée de l'opto étant reliée au travers d'une résistance au 3.3v. Comme cela, lorsque l'ESP démarre, la gpio est reliée au +3.3V
GPIO2 : c'est la led bleue sur la carte. Elle est utilisée lors du boot. Un usage en entrée est possible (BP au GND), mais il peut aussi servir de sortie série pour une LCD série (c'est Serial1).
GPIO15 : peut servir pour une sortie directe (1 transistor et un relais par exemple), ou un BP (au +3,3V).
NB : 12 mA maxi sur les sorties (une led rouge avec 150 Ohms au moins)
| Programmation du ESP8266 en autonome |
https://create.arduino.cc/projecthub/jaiprak/control-led-from-web-app-using-esp8266-serial-wifi-module-cdf419
https://www.fais-le-toi-meme.fr/fr/electronique/tutoriel/programmes-arduino-executes-sur-esp8266-arduino-ide
EEPROM
En fait, émulation en flash d'une EEPROm de 4ko :
http://esp8266.github.io/Arduino/versions/2.0.0/doc/libraries.html#eeprom
This is a bit different from standard EEPROM class. You need to call EEPROM.begin(size) before you start reading or writing, size being the number of bytes you want to use. Size can be anywhere between 4 and 4096 bytes.
EEPROM.write does not write to flash immediately, instead you must call EEPROM.commit() whenever you wish to save changes to flash. EEPROM.end() will also commit, and will release the RAM copy of EEPROM contents.
EEPROM library uses one sector of flash located just after the SPIFFS.
Three examples included.
| IDE Chargement à partir de l'IDE ARDUINO |
Now you'll need to put the board into bootload mode. You'll have to do this before each upload. There is no timeout for bootload mode, so you don't have to rush!
1.Hold down the GPIO0 button, the red LED will be lit
2.While holding down GPIO0, click the RESET button
3.Release RESET, then release GPIO0
4.When you release the RESET button, the red LED will be lit dimly, this means its ready to bootload
Once the ESP board is in bootload mode, upload the sketch via the IDE
En fait c'est assez simple :
* tirer le port GPIO0 au VCC par une résistance (10 à 47 k)
* mettre un BP entre ce GPIO0 et la masse
* mettre un BP entre le REST/RESET et la masse
Pour Flasher, lancer le téléversement sur l'IDE ARDUINO, puis
* tenir le BP GPIO0 appuyé
* appuyer sur le RESET (la led bleue donne un tout petit flash)
* lâcher tout : on est en flashage (la led bleue clignote rapidement pendant le flashage)
Bon, on s'est bien ammusé à programmer l'ESP, mais on voudrait retourner au mode AT !
http://electroniqueamateur.blogspot.fr/2015/08/reinstallation-du-firmware-de-lesp8266.html
http://www.esp8266.com/wiki/doku.php?id=esp8266_gpio_pin_allocations
pinMode(), digitalRead(), digitalWrite(), analogWrite() work as usual.
Pin numbers correspond directly to the esp8266 GPIO pin numbers. To read GPIO2, call digitalRead(2);
All digital IO pins are protected from over-voltage with a snap-back circuit connected between the pad and ground. The snap back voltage is typically about 6V, and the holding voltage is 5.8V. This provides protection from over-voltages and ESD. The output devices are also protected from reversed voltages with diodes.
At startup, pins are configured as INPUT.
GPIO0-GPIO15 can be INPUT, OUTPUT, or INPUT_PULLUP.
GPIO16 can be INPUT, OUTPUT, or INPUT_PULLDOWN_16. It is also XPD for deepSleep() (perhaps via a small capacitor.)
Note that GPIO6-GPIO11 are typically used to interface with the flash memory ICs on most esp8266 modules, so these pins should not generally be used.
analogRead(A0) reads the value of the ADC channel connected to the TOUT pin.
Analog ADC
ESP8266EX also integrates a generic purpose 10-bit analog ADC. The ADC range is from 0V to 1.0V. It is typically used to measure the voltages from the sensor or battery status. The ADC cannot be used when the chip is transmitting. Otherwise the voltage may be inaccurate. (From Expressif datasheet CH 8.5)
sleep
ESP.deepSleep(microseconds, mode) will put the chip into deep sleep.
mode is one of WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED.
(GPIO16 needs to be tied to RST to wake from deepSleep.)
http://esp8266.github.io/Arduino/versions/2.0.0/doc/libraries.html
| Brochage ESP12E 'standard GerDom' |
ESP12E Pin |
Function |
|
MP(0) |
ESP12-E brochage et utilisation 'standard GerDom'
BP RESET RST * TXD * GPIO1 prog Serial
POT ADC * RXD * GPIO3 prog Serial
EN * (+) * GPIO5 I2C, Bus 1 Fil DS1820
Q3 BP16 GPIO16 * * GPIO4 I2C, BP4
Q2 GPIO14 * (+) * GPIO0 BP0 et DHT11/22
Q0=LAMPE GPIO12 * TXD1(+) * GPIO2 LED2 ou sortie Serial
Q1=REMOTE GPIO13 * (-) * GPIO15 Q3(sens direct)
VCC * + - * GND
* * * * * *
CSO MISO GPIO09 GPIO10 MOSI SCLK
(+) tirage au VCC
(-) tirage au GND
LED2 : sortie Serial pour afficheur série ou LED (led bleue de la carte)
BP0 : indispensable pour RESET+BP0 pour flashage, utilisable ensuite comme 'VALIDATION'
BP4 :
BP16 : sortie pour relier au RESET si on utilise le mode DeeepSleep
BP16 : sortie pour relier au RESET si on utilise le mode DeeepSleep
| Démarrage d'un "XCSOURCE" D1 TE441 ou Wemos D1 mini |
Janvier 2018 : Nouveau ! voir aussi ESP32 Thing chez Sparkfun !
Site sympa pour ce module :
https://wiki.wemos.cc/products:d1:d1_mini
https://picclick.fr/Wemos-D1-Mini-NodeMcu-WIFI-ESP8266-Development-Board-272626109070.html
ATTENTION ! Le brochage est légèrement différent de l'ESP12-E breakout, et sérigraphié autrement.
Les broches 5V/3.3V et GND ne sont pas compatibles !
*** Donc ne pas intervertir directement ! ***
Wemos D1 Pin |
Fonction Wemos D1 |
Fonction ESP-8266 |
MP(0) |
. |
MP(0) |
Fonction ESP-8266 |
Fonction Wemos D1 |
Wemos D1 Pin |
RST |
Reset |
RST |
(0) |
| | |
(0) |
TXD |
TXD |
TX |
A0 |
Analog input, max 3.3V |
A0 1V max(1) |
(0) |
| | |
(0) |
RXD |
RXD |
RX |
D0 |
GPIO16 |
CH_PD |
(3) |
| | |
(0) |
GPIO5 |
GPIO5, SCL |
D1 |
D5 |
GPIO14, SCK |
GPIO16,CH_PD |
. |
| | |
(0) |
GPIO4, SCA |
GPIO4 |
D2 |
D6 |
GPIO12, MISO |
GPIO14,SCK |
. |
| | |
(0) |
GPIO0, 10k Pull-up |
GPIO0, 10k Pull-up |
D3 |
D7 |
GPIO13, MOSI |
GPIO12,MISO |
. |
| | |
(0) |
GPIO2, 10k Pull-up, LED |
GPIO2, 10k Pull-up, LED |
D4 |
D8 |
GPIO15, 10k Pull-down, |
GPIO13,MOSI |
. |
| | |
Non! |
GPIO15 |
GND |
G |
3V3 |
3.3V |
VCC 5V ou 3V3 |
(2) |
| | |
Non! |
GND |
VCC 5V |
5V |
Wemos D1 Pin |
Fonction Wemos D1 |
Fonction ESP-8266 |
MP(0) |
. |
MP(0) |
Fonction ESP-8266 |
Fonction Wemos D1 |
Wemos D1 Pin |
(0) Même Position entre D1 et ESP12-E breakout
(1) Sur le Wemos D1 ou TE441 : 3,2V (pas 3,3V ! diviseur intégré) : Sur le ESP12-E 1V seulement !
(2) sur l'ESP12-E breakout, VCC=3,3V power, On peut cependant avoir un régulateur 3,3V intégré, alors la pin VCC est 5V !
(3) sur l'ESP12-E breakout, Select
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)
* Toutes les entrées sorties sont utilisables popour INTERUPTIONS/pwm/I2C/one-wire
!* 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 (reliée à RST)
* 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 ! Au démarrage, il faut que GPIO0 soit tiré au VCC et GPIO15 au GND. En tenir compte encore pour les E/S.
Le nom exact (pour trouver sur Amazon pour moins de 8 euros) est :
"Carte de développement Module Sans Fil ESP8266 D1 Mini NodeMcu Lus WiFi pour Arduino TE441"
ou :
"Wemos D1 Mini"
Il s'agit d'une carte avec un ESP12E, avec un régulateur 3,3v, un bouton reset et un programmateur intégrés. Une prise micro-USB permet de l'utiliser très rapidement. ATTENTION ! le brochage est légèrement différent de l'ESP12E+ breakboard et le repérage des GPIO différent aussi ! Egalement, le circuit de reset est intégré, et l'IDE maîtrise donc le flashage automatique !
Dans un premier temps, on démarre l'IDE ARDUINO, puis après avoir sélectionné le bon port (COM15 chez moi), on ouvre le terminal série (icone à droite de l'IDE), et on règle la vitesse à 74880 (c'est bizarre, mais c'est comme ça !), vérifier que l'on a une fin de ligne (les deux NL et CR).
On reboote avec le reset et on obtient :
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 2408, room 16
tail 8
chksum 0xe5
load 0x3ffe8000, len 776, room 0
tail 8
chksum 0x84
load 0x3ffe8310, len 632, room 0
tail 8
chksum 0xd8
csum 0xd8
2nd boot version : 1.6
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 32Mbit(512KB+512KB)
jump to run user1 @ 1000
rf cal sector: 1017
rf[112] : 00
rf[113] : 00
rf[114] : 01
SDK ver: 2.0.0(5a875ba) compiled @ Aug 9 2016 15:12:27
phy ver: 1055, pp ver: 10.2
)ÍNOã
* On est content ! A la fin, c'est un peu crypté ... En fait, la voie série commute à 115200 bauds. Donc, passer à cette vitesse et rebooter, on a alors du charabia (qui est à 74880 bds) puis :
ready
* C'est mieux ! on tape AT, on obtient OK ou ERROR. Insister pour avoir OK, puis essayer AT+GMR :
AT
OK
AT+GMR
AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(5a875ba)
Farylink Technology Co., Ltd. v1.0.0.2
May 11 2017 22:23:58
OK
Voir ensuite au-dessus comme pour l'ESP12E.
On trouve des composants additionnels et des infos aussi ici :
https://www.ebay.fr/itm/263231972352?rmvSB=true
http://boutique.dol-fablab.com/produit/xcsource-carte-de-developpement-module-sans-fil-esp8266-d1-mini-nodemcu-lus-wifi-pour-arduino-te441/
Voir les docs et schémas ici :
 | | Câblage direct avec un programmateur type 2102 : |
 | | Brochage de l'ESP12 |
 | | Brochage de l'ESP12 |
 | | ARDUINO 5V - Serial - ESP8266 |
Site sympa pour le module D1 TE441 XCSOURCE :
https://wiki.wemos.cc/products:d1:d1_mini
ARDUINO contre ESP12 :
http://linuxfr.org/news/nodemcu-esp8266-une-alternative-a-l-arduino
Getting Started
http://www.instructables.com/id/Getting-Started-with-the-ESP8266-ESP-12/
On peut programmer la bête en 'stand-alone' avec l'IDE ARDUINO v1.8.0 :
http://www.instructables.com/id/Programming-the-ESP8266-12E-using-Arduino-software/
http://www.instructables.com/id/Programming-the-ESP8266-12E-using-Arduino-software/step2/Installing-the-CP120x-Drivers/
http://linuxfr.org/news/internet-des-objets-l-esp8266-et-ma-porte-de-garage
http://www.fais-le-toi-meme.fr/fr/electronique/materiel/esp8266-arduino-wifi-2-euros
http://www.instructables.com/id/Getting-Started-with-the-ESP8266-ESP-12/
Une carte compatible ARDUINO avec ESP8266 :
https://www.amazon.fr/gp/product/B01FVKTL9O/ref=pe_3039911_204369341_em_1p_4_ti
Autres cartes de développement :
https://www.amazon.fr/NodeMCU-Development-Internet-ESP8266-ESP-12E/dp/B01GCK3J40/ref=pd_sim_147_2?_encoding=UTF8&psc=1&refRID=J0CFEFNJ9PZSJ68GETTF
https://www.amazon.fr/gp/product/B01FVKTL9O/ref=pe_3081061_212136151_em_1p_0_im
https://www.amazon.fr/gp/product/B01ELFAF1S/ref=pe_3081061_212136151_em_1p_1_im
https://www.amazon.fr/gp/product/B01GCK3J40/ref=pe_3081061_212136151_em_1p_2_im
Téléversement ... câblage
https://create.arduino.cc/projecthub/ROBINTHOMAS/esp8266-esp-01-webserver-7248ca
https://www.mathieulefebvre.fr/?post/2016/02/15/Cr%C3%A9ation-d-une-breadboard-de-programmation-pour-ESP-01
https://andrologiciels.wordpress.com/materiels-android/esp8266/
http://www.evola.cc/prise-en-main-du-module-wifi-esp8266-avec-arduino/
Documentations
Flashing firmware
https://pixhawk.org/peripherals/8266
Ressources
http://www.espressif.com/en/products/hardware/esp8266ex/resources
Météo
https://create.arduino.cc/projecthub/hgpt/wireless-weather-station-arduiono-esp8266-thingspeak-2b6d4a
IDE
http://www.instructables.com/id/Programming-the-ESP8266-12E-using-Arduino-software/
http://www.instructables.com/id/Programming-the-ESP8266-12E-using-Arduino-software/step2/Installing-the-CP120x-Drivers/
http://www.instructables.com/id/Getting-Started-with-the-ESP8266-ESP-12/
http://www.esp8266.com/viewforum.php?f=25
WEMOS D1 mini
https://projetsdiy.fr/wemos-d1-mini-esp8266-test/
ESP01
http://linuxfr.org/news/internet-des-objets-l-esp8266-et-ma-porte-de-garage
http://www.fais-le-toi-meme.fr/fr/electronique/materiel/esp8266-arduino-wifi-2-euros
https://www.allaboutcircuits.com/projects/update-the-firmware-in-your-esp8266-wi-fi-module/
https://nurdspace.nl/ESP8266#Translated_datasheet
ESP01 ESP12-E ESP12-F ESP32
https://projetsdiy.fr/esp8266/#.Wctp5027odU
IOT MQQT kit (Internet Of Things)
https://www.amazon.fr/gp/product/B01N1XBXTZ/ref=pe_3081121_215533371_em_1p_3_im
https://projetsdiy.fr/esp-easy-objet-connecte-domotique-esp8266/
https://blog.guiguiabloc.fr/index.php/2014/11/13/mqtt-faites-communiquer-vos-objets-simplement/
Un tas d'idées :
http://benlo.com/esp8266/esp8266Projects.html
Répéteur WiFi automesh !
https://github.com/martin-ger/esp_wifi_repeater
Flash firmware dowload tools:
https://www.espressif.com/en/products/hardware/esp32/resources
ESP01 :
auto-reset :
http://hallard.me/esp8266-autoreset/
https://www.allaboutcircuits.com/projects/breadboard-and-program-an-esp-01-circuit-with-the-arduino-ide/
https://www.instructables.com/id/ESP-01-Module-Programming-Board/
https://blog.3sigma.fr/arduino/esp8266-comment-televerser-facilement-un-programme/
http://idehack.com/blog/programmer-lesp8266-esp-01-avec-le-logiciel-arduino/
https://www.instructables.com/id/How-to-use-the-ESP8266-01-pins/
http://carrefour-numerique.cite-sciences.fr/fablab/wiki/doku.php?id=trucs_astuces:programmer_un_esp8266_avec_l_environnement_arduino_genuino
https://www.electroschematics.com/the-mighty-esp-01-adapter/
Dernière mise à jour : 11:40:14 18/09/2020