Sunday, April 26, 2015

ESP8266 ESP-01 relay control using Web server or MQTT / IOT

Build with ESP8266 ESP-01 Arduino IDE (https://github.com/esp8266/Arduino)

# turn off relay
curl -X PUT http://eclipse.mqttbridge.com/murilo/esp/rele/off

# turn on relay
curl -X PUT http://eclipse.mqttbridge.com/murilo/esp/rele/on

# control relay from Android
https://play.google.com/store/apps/details?id=at.tripwire.mqtt.client&hl=en
publish murilo/esp/rele/on   - turn on relay
publish murilo/esp/rele/off  - turn off relay



See source code...

Saturday, April 25, 2015

ESP8266 ESP-01 esptool.py no Linux


A primeira ferramenta para o ESP-01 no Linux é o esptool.py.
No esptool dá para fazer a manutenção completa do ESP-01

root@murix-System-Product-Name:~/Downloads# wget https://raw.githubusercontent.com/themadinventor/esptool/master/esptool.py
--2015-04-25 17:33:39--  https://raw.githubusercontent.com/themadinventor/esptool/master/esptool.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.27.75.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.27.75.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 23964 (23K) [text/plain]
Saving to: ‘esptool.py’

100%[===============================================================================================================================>] 23.964      --.-K/s   in 0,006s 

2015-04-25 17:33:40 (3,88 MB/s) - ‘esptool.py’ saved [23964/23964]

root@murix-System-Product-Name:~/Downloads# chmod +x esptool.py



root@murix-System-Product-Name:~/Downloads# ./esptool.py --port /dev/ttyUSB0 read_mac
Connecting...
MAC: 18:fe:34:9f:13:f3
root@murix-System-Product-Name:~/Downloads#


https://github.com/nodemcu/nodemcu-firmware/releases/tag/0.9.6-dev_20150406

root@murix-System-Product-Name:~/Downloads# ./esptool.py --port /dev/ttyUSB0 write_flash 0x0 nodemcu_integer_0.9.6-dev_20150406.bin
Connecting...
Erasing flash...
Writing at 0x00066400... (100 %)

Leaving...
root@murix-System-Product-Name:~/Downloads#

Monday, April 20, 2015

Tiva C + Stellaris: pinout

As placas Tiva C e Stellaris possuem alguns "problemas".
O primeiro são os resistores R9 e R10 que precisam ser removidos para não dar curto entre os GPIOs.
O segundo é o pinmux da USART1 e USART4 que iniciam em conflito, então é preciso remapear a USART1 para o conector J1, para que a USART4 funcione no conector J4.
O terceiro é o U4 presente somente nas Stellaris (na Tiva C já vem de fabrica sem ele), que precisa ser removido para permitir a placa ligar tensões abaixo de 5V (ex: bateria).
Resolvidos esses "problemas" é só partir para desenvolvimento.
Estão disponíveis:
8x UART - Serial
4x I2C - Wire
3x SPI
12x ADC - analogRead
44x GPIO - digitalRead/Write
23x PWM - analogWrite
Tiva C + Stellaris: pinout

Sunday, April 19, 2015

pipe view - usando dd com barra de progresso

Para ver o progresso de ferramentas como `dd`, apresento o `pv`.
O pv (pipe view) mostra a quantidade e velocidade dos bytes que passam em um pipe.

Muito simples de usar, basta passar o pv entre os pipes dos comandos.

Exemplo com dd:
root@murix:~/Downloads# dd if=archlinux-2015.04.01-dual.iso | pv | dd of=/dev/sdd bs=4M

 37MB 0:00:08 [17.1MB/s] [         <=>                                                ]


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&amp;usp=drive_web&amp;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 &gt;= 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

Thursday, April 9, 2015