Saturday, April 18, 2015

ESP8266 ESP-01 review

O módulo ESP-01 v090 utiliza o SoC ESP8266 para prover um roteador e estação WiFi do tamanho de uma porta USB e custa menos de 3 dólares.

ESP-01 conectado no PC pelo Prolific PL2303

SDK oficial
http://espressif.com/new-sdk-release/

Segundo o datasheet do ESP8266
https://nurdspace.nl/images/e/e0/ESP8266_Specifications_English.pdf
O máximo permitido em qualquer pino é 3.6V
Portanto para ligar em I/O de 5V (ex: Arduino) precisa usar um shift level de 5v para 3.3v.
Pelo que vi alguns makers ligam direto no i/o 5v sem shift level, e funciona, mas a risco de queimar o esp8266. Testei ligando no PL2303 com i/o de 3.3v e com i/o de 5v e funcinou, para minimizar a change de queimar resolvi continuar usando o 3.3v que está dentro das especificações.

Pinout do ESP-01
Existem 2 modos de operações: o normal e o gravação de firmware.
Quem determinar o modo de operação é o GPIO0 durante o boot.
Se GPIO0 estiver em Low durante o boot, vai em entrar em modo de gravação.
Se GPIO0 estiver em High durante o boot, vai em entrar em modo normal.
Depois do boot dá para usar o GPIO0 como uma saída digital, mas eu não gosto de usar esse pinos de gravação para outras finalidades pois em alguns casos ocorrem problemas.

O pino CH_PD (chip select) deve se ligado ao VCC senão o ESP8266 fica travado antes do boot.
ESP-01 com pullup de 2.2k no CH_PD.

Também é preciso garantir a corrente necessária para o funcionamento do ESP8266, que no pico de transmissão pode chegar até 300mA
ModeMinTypicalMaxUnits
802.11b, CCK 1Mbps, POUT=+19.5dBm215mA
802.11b, CCK 11Mbps, POUT=+18.5dBm197mA
802.11g, OFDM 54Mbps, POUT=+16dBm145mA
802.11n, MCS7, POUT =+14dBm135mA
802.11b, packet size of 1024 bytes, -80dBm60mA
802.11b, packet size of 1024 bytes, -70dBm60mA
802.11b, packet size of 1024 bytes, -65dBm62mA
Standby0.9uA
Deep sleep10mA
Saving mode DTIM 11.2mA
Saving mode DTIM 30.86mA
Shutdown0.5uA

É possível ligar o RTS do PL2303 no RST do ESP-01 e o DTR do PL2303 no GPIO0 do ESP-01, assim dá para controlar o modo de operação dinamicamente pela serial sem ficar mexendo nos fios.
https://github.com/themadinventor/esptool/blob/master/esptool.py
# RTS = CH_PD (i.e reset)
# DTR = GPIO0

Firmware com Comandos AT
http://www.electrodragon.com/w/ESP8266_Firmware

Código para Arduino/Energia
http://www.electrodragon.com/w/ESP8266_with_Arduino

Firmware com script Lua:
https://github.com/nodemcu/nodemcu-firmware

Ferramenta de gravação de firmware:
https://github.com/nodemcu/nodemcu-flasher
Existe uma opção de gravar o firmware que vem embutido nessa ferramenta, que no caso é umas das últimas versões do nodemcu com suporte a Lua.

nodemcu firmware programmer
Firmware com AT versão 0.952
AT version:0.21.0.0
SDK version:0.9.5
https://drive.google.com/folderview?id=0B_ctPy0pJuW6fnVLeGYzWmhzeGtZa1hwTF9zakJUOEdNejVhcFZXYi02Zk5GLXp6ckRNZkE&usp=drive_web&tid=0B3dUKfqzZnlwRjFaNTUzZFptbzg#list

nodemcu firmware programmer configurar para gravar o firmware AT 0.952

Log do firmware que veio pré instalado no ESP-01:
não tem como sabe qual a versão do AT e nem do SDK que compilou, já que o AT+GMR não retorna nada muito útil.

OK
AT+RST


OK
7!aSÊS:6à;Ì;!ÕýAÆ [ýÊêþ
[Vendor:www.ai-thinker.com Version:0.9.2.4]

ready
AT+GMR

0018000902-AI03

OK

Log do firmware AT versão 0.952:


AT+RST


OK

 ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 816, room 16 
tail 0
chksum 0x8d
load 0x3ffe8000, len 788, room 8 
tail 12
chksum 0xcf
ho 0 tail 12 room 4
load 0x3ffe8314, len 288, room 12 
tail 4
chksum 0xcf
csum 0xcf

2nd boot version : 1.2
  SPI Speed      : 40MHz
  SPI Mode       : QIO
  SPI Flash Size : 4Mbit
jump to run user1

rlŽ‚ÿ
Ai-Thinker Technology Co. Ltd.

ready
AT+GMR

AT version:0.21.0.0
SDK version:0.9.5

OK

O firmware acima foi compilado com o SDK 0.9.5 com parser AT 0.21 cabe em 512kb de flash
ESP8266 SDK (esp_iot_sdk_v0.9.5_15_01_23) released
com o SDK 1.0.0 entrou o parser AT 0.22 cabe em 512kb de flash
ESP8266 SDK (esp_iot_sdk_v1.0.0_15_03_20) released
como o SDK >= 1.0.1 os novos comandos AT precisam de pelo menos 1024kb de flash.



Ferramenta de exploração com suporte a Nodemcu/Lua e comandos AT
http://esp8266.ru/esplorer/

Esplorer tool



API do Arduino para ESP8266
https://github.com/esp8266/arduino

Arduino IDE com suporte a ESP8266


Onde comprar:
http://lista.mercadolivre.com.br/esp8266
http://www.banggood.com/buy/Esp8266.html
http://www.aliexpress.com/wholesale?SearchText=esp8266
http://www.dx.com/s/esp8266
http://www.seeedstudio.com/depot/s/esp8266.html