Microcontroleur ESP8266 - WiFI
(Wikipédia)
L’ESP8266 est un circuit intégré à microcontrôleur avec connexion WiFi développé par le fabricant chinois Espressif.
En août 2014, les passionnés d’électronique commencèrent à s’intéresser à la version ESP-01 de ce circuit électronique produite par une entreprise tierce, AI-Thinker. Ce circuit intégré de taille réduite permet de connecter son propre microcontrôleur à un réseau WiFi et d’établir des connexions TCP/IP avec des commandes Hayes. Cependant, à cette époque, la documentation était disponible uniquement en chinois, mais ceci ne découragea pas les aficionados qui furent attirés par son prix modique. Ainsi de nombreuses personnes se mirent à explorer les possibilités de l’ESP8266 et commencèrent la traduction de la documentation.
À la fin octobre 2014, Espressif proposa un kit de développement logiciel (SDK) permettant de programmer le circuit sans recourir à l’utilisation d’un microcontrôleur additionnel. Depuis lors, Espressif a sorti quantité de nouvelles versions du SDK et le propose en deux variantes : une variante basée sur RTOS et une autre basée sur les fonctions de rappel (callbacks).
En août 2014, les passionnés d’électronique commencèrent à s’intéresser à la version ESP-01 de ce circuit électronique produite par une entreprise tierce, AI-Thinker. Ce circuit intégré de taille réduite permet de connecter son propre microcontrôleur à un réseau WiFi et d’établir des connexions TCP/IP avec des commandes Hayes. Cependant, à cette époque, la documentation était disponible uniquement en chinois, mais ceci ne découragea pas les aficionados qui furent attirés par son prix modique. Ainsi de nombreuses personnes se mirent à explorer les possibilités de l’ESP8266 et commencèrent la traduction de la documentation.
À la fin octobre 2014, Espressif proposa un kit de développement logiciel (SDK) permettant de programmer le circuit sans recourir à l’utilisation d’un microcontrôleur additionnel. Depuis lors, Espressif a sorti quantité de nouvelles versions du SDK et le propose en deux variantes : une variante basée sur RTOS et une autre basée sur les fonctions de rappel (callbacks).
Caractéristiques
L’ESP8266 est décliné en plusieurs variantes. Un exemple de caractéristiques est indiqué ci-dessous.
- 32-bit RISC CPU: Tensilica Xtensa LX106, 80 MHz
- 64 KiB of instruction RAM, 96 KiB of data RAM
- External QSPI flash - 512 KiB to 4 MiB (up to 16MiB is supported)
- IEEE 802.11 b/g/n Wi-Fi
- Integrated TR switch, balun, LNA, power amplifier and matching network
- WEP or WPA/WPA2 authentication, or open networks
- 16 GPIO pins
- SPI, I²C
- I²S interfaces with DMA (sharing pins with GPIO)
- UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2
- 1 10-bit ADC
Programmation
L’ESP8266 peut se programmer de plusieurs façons :
- Avec des scripts Lua, interprétés ou précompilés, avec le firmware NodeMCU
- En C, avec l’IDE Arduino1
- En JavaScript, avec le firmware Espruino
- En MicroPython, avec le firmware MicroPython 2
- En C, avec le SDK d’Espressif
- En C, avec le SDK esp-open-sdk3 basé sur la chaîne de compilation GCC
Famille
La famille des ESP 8266 est numérotée de comme suit "ESP-XX, où XX donne le modèle. Certains sont motés sur sur circuit imprimés (Etched on PCB). Certains disposent d'une antenne gravée dans le PCB, d'antenne céramique, ...
Un tableau donne les modèles courants.
On aura besoin, pour expérimenter ces composants, de les alimenter en 3.3V et de les relier à un PC ou un terminal (TTY) par liaison série RS232C. Pour commencer l'évaluation de ces composants, on peut choisir un composant tout en un, tel que le NodeMCU.
La prise OTG (usb) apporte la tension d'alimentation 5V et et assure la transmission série avec un PC. Sur ce dernier, on aura installé le driver (COM/USB) CP2102.
En effet,
On aura besoin, pour expérimenter ces composants, de les alimenter en 3.3V et de les relier à un PC ou un terminal (TTY) par liaison série RS232C. Pour commencer l'évaluation de ces composants, on peut choisir un composant tout en un, tel que le NodeMCU.
La prise OTG (usb) apporte la tension d'alimentation 5V et et assure la transmission série avec un PC. Sur ce dernier, on aura installé le driver (COM/USB) CP2102.
En effet,
- les PC actuels ne sont plus équipés de sortie RS232C.
- les logiciels de communication et de programmation distante des PC ne communiquent que par liaisons série (COMx sur PC, ttyxx sur Unix et OS X).
Board ID | pins | pitch | form factor | LEDs | Antenna | Ant.Socket | Shielded | dimensions mm |
---|---|---|---|---|---|---|---|---|
ESP-01 | 8 | .1“ | 2×4 DIL | Yes | Etched-on PCB | No | No | 14.3 x 24.8 |
ESP-02 | 8 | .1” | 2×4 notch | No? | None | Yes | No | 14.2 x 14.2 |
ESP-03 | 14 | 2mm | 2×7 notch | No | Ceramic | No | No | 17.3 x 12.1 |
ESP-04 | 14 | 2mm | 2×4 notch | No? | None | No | No | 14.7 x 12.1 |
ESP-05 | 5 | .1“ | 1×5 SIL | No | None | Yes | No | 14.2 x 14.2 |
ESP-06 | 12+GND | misc | 4×3 dice | No | None | No | Yes | ? |
ESP-07 | 16 | 2mm | 2×8 pinhole | Yes | Ceramic | Yes | Yes | 20.0 x 16.0 |
ESP-08 | 14 | 2mm | 2×7 notch | No | None | No | Yes | 17.0 x 16.0 |
ESP-08 New | 16 | 2mm | 2×8 notch | No | None | No | Yes | 18.0 x 16.0 |
ESP-09 | 12+GND | misc | 4×3 dice | No | None | No | No | 10.0 x 10.0 |
ESP-10 | 5 | 2mmm? | 1×5 notch | No | None | No | No | 14.2 x 10.0 |
ESP-11 | 8 | 1.27mm | 1×8 pinhole | No? | Ceramic | No | No | 17.3 x 12.1 |
ESP-12 | 16 | 2mm | 2×8 notch | Yes | Etched-on PCB | No | Yes | 24.0 x 16.0 |
ESP-12-E | 22 | 2mm | 2×8 notch | Yes | Etched-on PCB | No | Yes | 24.0 x 16.0 |
ESP-13 | 18 | 1.5mm | 2×9 | ? | Etched-on PCB | No | Yes | ? x ? |
ESP-14 | 22 | 2mm | 2×8 + 6 | 1 | Etched-on PCB | No | Yes | 24.3 x 16.2 |
WROOM-02 | 18 | 1.5mm | 2×9 | No | Etched on PCB | No | Yes | 20.0 x 18.0 |
WT8266-S1 | 18 | 1.5mm | 3×6 | 1 | Etched on PCB | No | Yes | 15.0 x 18.6 |
Brochage
Pin | Name | Alternate Functions | Notes |
---|---|---|---|
1 | GND | ||
2 | NC | ||
3 | UTXD | SPICS1, GPIO1, CLK_RTC | Typically used as serial uart0 TX |
4 | URXD | I2SO_DATA, GPIO3, CLK_XTAL | Typically used as serial uart0 RX |
5 | GPIO16 | XPD_DCDC, RTC_GPIO0, EXT_WAKEUP, DEEPSLEEP | Connected to XPD_DCDC ESP pin, can also be connected to ESP EXT_RSTB (reset) pin by closing jumper near pin 8; Reset pin is active low and has an internal weak pull-up; Connecting jumper is required to wake-up ESP from deep-sleep: RTC produces pulse on XPD_DCDC pin that needs to be fed into EXT_RSTB pin |
6 | CH_PD | Power-down: low input powers down chip, high powers up; tie high for normal operation or module will not function | |
7 | ANT | Wifi Antenna, do not connect | |
8 | VCC | 3.3V input (pin 8 is between antenna and ESP chip) | |
9 | GPIO14 | MTMS, I2SI_WS, SP_CLK | |
10 | GPIO12 | MTDI, I2SI_DATA, MISO | |
11 | GPIO13 | MTCK, I2SI_BCK, MOSI | |
12 | GPIO15 | MTDO, I2SO_BCK, SP_CS | At boot: must be low to enter flash or normal boot (high enters special boot modes) |
13 | GPIO2 | I2SO_WS, U1TXD, U0TXD | At boot: must be high to enter flash or normal boot (low enters special boot modes); Typically is used as uart1 TX for debug logging |
14 | GPIO0 | SPICS2, CLK_OUT | At boot: low causes bootloader to enter flash upload mode; high causes normal boot |
ESP 8266 Modèle ESP-07
Ce composant contient un émetteur WiFI avec une connexion antenne et une interface serie. Il ne nécessite pas obligatoirement une connexion à un microprocesseur. Il est piloté via l'interface série TXD/TXD. Il fonctionne selon 3 modes, dont un seul nous suffira. Pour travailler dans ce mode, il suffit de connecter les broche GPIOxx d'une certaine façon indiquée plus bas.
Le pas du CI n'étant pas un multiple de 2.54mm, un adaptateur sera bien utile pour un placement sur une platine VERO. Sur l'adaptateur acheté, il y a une erreur de marquage : GPIO04 et GPIO05 sont inversés.
Les interconnexion du mode "normal flash" sont déjà faites sur la carte
- Résistance de 10K entre CHPD et VCC, pour rendre actif (Chip Select) le ESP8266.
- Résistance de 10K (pullup) entre GPIO2 et GND
- GPIO15 à GND pour le mode flash démarrage normal.
ESP 8266 Modèle ESP-01
Label | Signal |
---|---|
VCC | 3.3V (max 3.6V) Alimentation |
GND | Ground |
TXD | Transmit Data (3.3V) |
RXD | Receive Data (3.3V) |
CH_PD | Chip Power down: (Power down si LOW) |
GPIO0 | General Purpose I/O 0 |
GPIO2 | General Purpose I/O 2 |
RST (GPIO16) | /Reset (si = LOW) |
Liens internes
http://www.element14.com/community/groups/internet-of-things/blog/2014/11/19/esp8266-wi-fi-arduino-upload-to-xively
http://www.ebay.com/itm/Mini-ATmega328-USB-Nano-V3-0-I-O-Expansion-sensor-Shield-Module-For-Arduino-/141635152511
http://www.ebay.fr/itm/Nano-Terminal-Adapter-for-the-Arduino-Nano-V3-0-AVR-ATMEGA328P-AU-Module-Board-/400387932408?pt=LH_DefaultDomain_0&hash=item5d38fb00f8
http://www.ebay.fr/itm/1Pcs-Nano-I-O-Expansion-Sensor-Shield-for-Arduino-Nano-UNO-R1-Duemilanove-2009-/271571933863?pt=LH_DefaultDomain_3&hash=item3f3af2daa7
http://christinefarion.com/wp-content/uploads/2014/12/Screenshot-2014-12-26-12.52.22.png
http://www.instructables.com/id/Envolysis/
https://www.google.fr/search?safe=off&q=ESP-01+firmware&ei=8eorVevfMoneasuxgdAC#safe=off&q=ESP-01+firmware+instructable
http://playground.boxtec.ch/doku.php/wireless/esp8266
http://www.instructables.com/id/ESP8266-ADC-Analog-Sensors/
Voir ici
http://www.ebay.com/itm/Mini-ATmega328-USB-Nano-V3-0-I-O-Expansion-sensor-Shield-Module-For-Arduino-/141635152511
http://www.ebay.fr/itm/Nano-Terminal-Adapter-for-the-Arduino-Nano-V3-0-AVR-ATMEGA328P-AU-Module-Board-/400387932408?pt=LH_DefaultDomain_0&hash=item5d38fb00f8
http://www.ebay.fr/itm/1Pcs-Nano-I-O-Expansion-Sensor-Shield-for-Arduino-Nano-UNO-R1-Duemilanove-2009-/271571933863?pt=LH_DefaultDomain_3&hash=item3f3af2daa7
http://christinefarion.com/wp-content/uploads/2014/12/Screenshot-2014-12-26-12.52.22.png
http://www.instructables.com/id/Envolysis/
https://www.google.fr/search?safe=off&q=ESP-01+firmware&ei=8eorVevfMoneasuxgdAC#safe=off&q=ESP-01+firmware+instructable
http://playground.boxtec.ch/doku.php/wireless/esp8266
http://www.instructables.com/id/ESP8266-ADC-Analog-Sensors/
Voir ici
Mode Modem AT
Pour commander ce module, connexion à un terminal série peut suffire à l'expérimentation.
Label | Signal |
---|---|
VCC | 3.3V (max 3.6V) Alimentation |
GND | Ground |
TXD | Transmit Data (3.3V) |
RXD | Receive Data (3.3V) |
CH_PD | HIGH |
GPIO0 | NC (Pullup 3.3V) |
GPIO2 | NC (Pullup 3.3V) |
RST (GPIO16) | NC (Pullup 3.3V) |
Il est recommandé d'appliquer des niveaux de 3.3V sur les lignes Rx et TX
Commandes principales.
Setup.
Via l'interface série ( mais aussi via une interface SPI), les connades suivantes permettent le setup du composant et sont utilisation.- AT+RST restart the module, received some strange data, and "ready"
- AT+CWMODe=3 change the working mode to 3, AP+STA, only use the most versatile mode 3 (AT+RST may be necessary when this is done.)
Join Router
- AT+CWLAP search available wifi spot
- AT+CWJAP=“you ssid”, “password” join my mercury router spot
- AT+CWJAP=? check if connected successfully, or use AT+CWJAP?
TCP Client
- AT+CIPMUX=1 turn on multiple connection
- AT+CIPSTART=4,"TCP","192,168.1.104",9999 connect to remote TCP server 192.168.1.104 (the PC)
- AT+CIPMODE=1 optionally enter into data transmission mode
- AT+CIPSEND=4,5 send data via channel 4, 5 bytes length (see socket test result below, only "elect" received), link will be "unlink" when no data go through
TCP Server
- AT+CIPSERVER=1,9999 setup TCP server, on port 9999, 1 means enable
- AT+CIFSR check module IP address
- PC as a TCP client connect to module using socket test, send data
Sources et références
Bibliographie
[ 2] Daves Old Computers - ALTAIR 8800 - Documentation (Dave Dunfield.)
[ 3] Home Computer & Video Game Museum