Você está na página 1de 29

ESP8266

do Rui, em portugus

Tabela de contedos
1. Introduo
2. NodeMCU
i. Gravar do Linux
ii. Gravar do Windows
3. ESplorer
4. Comandos AT
i. Referncia
5. Tutoriais
i. Twitter
ii. Servidor web
iii. Cliente-servidor
iv. Home Automation Server
6. Comprando hardware
7. Mais fontes

ESP8266 do Rui, em portugus

O que este livro?


O principal crdito dado a Rui Santos:
Exposio, em portugus, do bsico sobre o mdulo wifi ESP8266;
Traduo de contedo do site randomnerdtutorials.com, de Rui Santos;
Obra derivada de outra sob a licena CC BY-NC-SA 3.0;
Obra liberada sob a licena CC BY-NC-SA 4.0, por compatibilidade de licena.
Alexandre Magno apenas um tradutor e organizador. Este livro basicamente a traduo reformatada e simplificada do
site de Rui.
Tambm so usadas outras referncias, indiretamente.

ATENO! USE POR SUA PRPRIA CONTA E RISCO.


Autor e tradutor no garantem que todas as informaes encontradas aqui estejam corretas.

Introduo

ESP8266 do Rui, em portugus

NodeMCU
um firmware alternativo para o ESP8266 que embute no chip um framework para programao de controle mediante
scripts Lua.
Pode ser gravado por Arduino ou programador FTDI de 3.3 volts.

Esquema com programador FTDI

RX TX
TX RX
CH_PD 3.3V
GPIO 0 GND
VCC 3.3V
GND GND

NodeMCU

ESP8266 do Rui, em portugus

Gravar o NodeMCU usando Windows


O software gravador para Windows um projeto no GitHub, com verses para 32 bits e 64 bits.

Talvez voc precise realizar alguma configurao avanada. Mas, em geral, o uso do nodemcu-flasher bem simples:
basta pressionar o boto Flash e aguardar a concluso (sinal verde).

Gravar do Windows

ESP8266 do Rui, em portugus

ESPlorer gerenciador para NodeMCU


como uma sofisticada interface grfica Java para o Luatool. Possibilita o envio facilitado dos scripts LUA para o chip
mdulo ESP8266.
Inclui LUA para NodeMCU e MicroPython. Suporta todos os comandos AT.

Sistemas operacionais suportados


Windows (x86, x86-64)
Linux (x86, x86-64, ARM soft & hard float)
Solaris (x86, x86-64)
Mac OS X (x86, x86-64, PPC, PPC64)

Lista de recursos
Sintaxe colorida para LUA
Sintaxe colorida para Python
Temas para o editor de cdigos: default, dark, Eclipse, IDEA, Visual Studio
Desfazer/Refazer
Auto-compleo de cdigo Ctrl+Space
Envio de dados ao ESP82266 com validao
Exemplos de cdigo
Log detalhado
E muito mais!

Instalao
Ateno! Voc precisar do Java (SE verso 7 ou superior).
1. Baixe o ESPlorer
2. Descompacte o ZIP
3. Acesse o diretrio raiz
4. Execute ESPlorer.jar

Envio de script LUA


1. Conecte o programador FTDI ao computador
2. Configure o baud raute para 9600
3. Selecione a porta do programador (COM3, por exemplo)
4. Pressione Open/Close
5. Selecione a aba NodeMCU+MicroPtyhon
6. Copie seu script LUA dentro do ESPlorer
7. Simplesmente clique o boto Send to ESP
Voc dever ver uma mensagem "Posted Tweet"
S necessrio ateno ao que est em vermelho na imagem a seguir:

ESplorer

ESP8266 do Rui, em portugus

ESplorer

ESP8266 do Rui, em portugus

Para usar ESP8266 com Arduino


Controlando por comandos AT...

Certifique-se de ter um sketch em branco:

void setup() {}
void loop() {}

Dica eltrica
No projeto final, no alimente o mdulo com os 3.3 V do Arduino. Use uma fonte ou bateria, ou divida a tenso para do
pino RX.

Para gravar firmware


O circuito acima dever ser mudado: GPIO 0 ser conectado a GND .

Comandos AT

ESP8266 do Rui, em portugus

Referncia de comando AT para o ESP8266

Referncia

ESP8266 do Rui, em portugus

Sobre os "tutoriais"
Este livro no rene muitas instrues discursivas. Cada "tutorial" na realidade um conjunto de notas rpidas
estruturado, contendo imagens, esquemas e referncias. O objetivo maior aprender com a prtica, quando o leitor
dever estar aplicando os conhecimentos tericos que j possui, para manter o hardware intacto.

Contedo interessante, mas externo


SP8266 + 2 relay module + usb charger, por pawelka
As simple as possible two channels switcher controlled from web
The Button - a WiFi connected push button

Tutoriais

10

ESP8266 do Rui, em portugus

Twitter a partir do ESP8266


A dica usar o servio gratuito IFTTT, um plataforma que viabiliza controle para uma variedade de servios web e apps.
Enviar uma requisio HTTP ao IFTTT pode significar disparar um gatinho para o envio de um e-mail ou a publicao de
um tweet pr-configurados.

Criando a conta no IFTTT


1. Acesse ifttt.com
2. Clique o boto Sign Up no meio da pgina.
3. Preencha o(s) formulrio(s) seguindo em frente

Configurando a ao exemplo
Ou: criando o "recipiente".
1. Conecte sua conta ao Maker Channel
2. Conecte sua conta ao Twitter Channel
O resultado dever ser uma tela assim:

Twitter

11

ESP8266 do Rui, em portugus

Voc dever preencher o recipiente com informaes suas:


1. Digite "post_tweet" para o nome do evento
2. Edite o texto desejado para o ESP8266 enviar como tweet
3. Pressione o boto "Add"

Twitter

12

ESP8266 do Rui, em portugus

Chave secreta
Ser necessria para a realizao das requisies.
1. Acesse ifttt.com/maker
2. Copie a chave secreta e a guarde em local seguro
No exemplo, a chave : b6eDdHYblEv2Sy32qLwe

Twitter

13

ESP8266 do Rui, em portugus

A tela para o conhecimento da chave secreta como na imagem abaixo:

Uso
Substitua a chave secreta na URL de ao (requisio para o recipiente):
https://maker.ifttt.com/trigger/post_tweet/with/key/YOUR_API_KEY

Assim:
https://maker.ifttt.com/trigger/post_tweet/with/key/b6eDdHYblEv2Sy32qLwe

Teste

Twitter

14

ESP8266 do Rui, em portugus

Exemplo: cdigo LUA verso 1


O mdulo dever estar com NodeMCU
Use o ESPlorer para fazer a transferncia do arquivo
No esquea de editar a linha 5 com suas credenciais de rede
No esquea de editar a linha 13 com sua chave secreta

-- Rui Santos
-- Complete project details at http://randomnerdtutorials.com
wifi.setmode(wifi.STATION)
wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")

-- A simple http client


conn = nil
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) end)
conn:connect(80,"maker.ifttt.com")
conn:on("connection", function(conn, payload)
conn:send("POST /trigger/post_tweet/with/key/YOUR_API_KEY HTTP/1.1\r\nHost: maker.ifttt.com\r\nConnection: keep-alive\r\nAccept: */*\r\
conn:close()
print('Posted Tweet')

Limitao: o Twiter no permite o envio de tweets repetidos.

Exemplo: cdigo LUA verso 2


Lembre-se dos mesmo requisitos da verso 1

-- Rui Santos
-- Complete project details at http://randomnerdtutorials.com
wifi.setmode(wifi.STATION)
wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")

Twitter

15

ESP8266 do Rui, em portugus

-- A simple http client


conn = nil
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) end)
conn:connect(80,"maker.ifttt.com")
conn:on("connection", function(conn, payload)
conn:send("POST /trigger/post_tweet/with/key/YOUR_API_KEY HTTP/1.1\r\n"..
"Host: maker.ifttt.com\r\nConnection: close\r\nAccept: */*\r\nContent-Type: application/json\r\n" ..
"Content-Length: 17\r\n\r\n{\"value1\":true}\r\n") end)
conn:close()
print('Posted Tweet')

O parmetro value1 est sendo enviado com valor True .


IFTTT suporta at trs parmeteros: value1 , value2 e value3 . Eles servem customizar tweets e torn-los nicos.

Twitter

16

ESP8266 do Rui, em portugus

Ligando LED por pgina web


ESP8266 funciona como servidor web com controle sobre seus pinos GPIO.

Esquema

Cdigo do init.lua
No esquecer de editar as credenciais, logo no incio.

Servidor web

17

ESP8266 do Rui, em portugus

wifi.setmode(wifi.STATION)
wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD")
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
buf = buf.."<h1> ESP8266 Web Server</h1>";
buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF1\"><button>OFF</button></a></p>"
buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>ON</button></a>&nbsp;<a href=\"?pin=OFF2\"><button>OFF</button></a></p>"
local _on,_off = "",""
if(_GET.pin == "ON1")then
gpio.write(led1, gpio.HIGH);
elseif(_GET.pin == "OFF1")then
gpio.write(led1, gpio.LOW);
elseif(_GET.pin == "ON2")then
gpio.write(led2, gpio.HIGH);
elseif(_GET.pin == "OFF2")then
gpio.write(led2, gpio.LOW);
end
client:send(buf);
client:close();
collectgarbage();
end)
end)

Acesso
Durante a inicializao o endereo IP informado no console.

Para mais informaes, assista a vdeo no Youtube.

Servidor web

18

ESP8266 do Rui, em portugus

Comunicando dois ESP8266


O servidor um ponto-de-acesso; o cliente estao. Neste exemplo eles estabelecem uma comunicao sem fio o
cliente diz "Ol!".

Esquema para comunicao serial

Cdigo LUA do servidor


Observar SSID=test e Password=12345678 .

-- Rui Santos
-- Complete project details at http://randomnerdtutorials.com
-- ESP8266 Server

Cliente-servidor

19

ESP8266 do Rui, em portugus

print("ESP8266 Server")
wifi.setmode(wifi.STATIONAP);
wifi.ap.config({ssid="test",pwd="12345678"});
print("Server IP Address:",wifi.ap.getip())
sv = net.createServer(net.TCP)
sv:listen(80, function(conn)
conn:on("receive", function(conn, receivedData)
print("Received Data: " .. receivedData)
end)
conn:on("sent", function(conn)
collectgarbage()
end)
end)

O servidor fica continuamente esperando por conexes. Quando alguma estabelecida com sucesso, ele recebe
mensagem e a imprime no console de comunicao serial.

Cdigo LUA do cliente


-- Rui Santos
-- Complete project details at http://randomnerdtutorials.com
-- ESP8266 Client
print("ESP8266 Client")
wifi.sta.disconnect()
wifi.setmode(wifi.STATION)
wifi.sta.config("test","12345678") -- connecting to server
wifi.sta.connect()
print("Looking for a connection")
tmr.alarm(1, 2000, 1, function()
if(wifi.sta.getip()~=nil) then
tmr.stop(1)
print("Connected!")
print("Client IP Address:",wifi.sta.getip())
cl=net.createConnection(net.TCP, 0)
cl:connect(80,"192.168.4.1")
tmr.alarm(2, 5000, 1, function()
cl:send("Hello World!")
end)
else
print("Connecting...")
end
end)

O cliente fica continuamente procurando pelo ponto-de-acesso. Quando o localiza, estabelece conexo e passa a enviar
"Hello world!" como mensagem a cada 5 segundos.

Demonstrao

Cliente-servidor

20

ESP8266 do Rui, em portugus

esquerda, a janela de output do ESPlorer. direita, um terminal de comunicao serial estabelecida com o PuTTY.

Cliente-servidor

21

ESP8266 do Rui, em portugus

Home Automation Server


um servidor de automao residencial feito especialmente para o ESP8266, pelo Random Nerd Tutorials, fonte deste
contedo. provvel que o autor do software de servio seja o prrpio Rui Santos! O sistema permite controlar os pinos
GPIO de um mdulo ESP8266 a partir de qualquer lugar do mundo, atravs da Internet.

Registro
gratuito e necessrio.
1. Acesse app.homeautomationserver.com/register
2. Preencha todos os detalhes do cadastro e os submeta
3. Confirme: no e-mail, clique o link de confirmao

Contas criadas ainda com a verso antiga do servio continuam a vigorar. Voc pode resetar a senha, caso prefira.

Adio de dispositivo
Logo que voc entra no sistema...

Home Automation Server

22

ESP8266 do Rui, em portugus

Se a primeira vez para aquele dispositivo, voc precisar habilit-lo ao servidor com um cdigo auto-gerado:

Siga as instrues que aparecem aps o clique no boto cinza:


1. Grave o firmware NodeMCU no ESP8266
2. Carregue nele o cdigo que foi auto-gerado
Para o teste, sugerido que voc experimente a seguinte montagem:

Home Automation Server

23

ESP8266 do Rui, em portugus

Teste

Home Automation Server

24

ESP8266 do Rui, em portugus

Note que h uma limitao no sistema:


Os pinos GPIO do ESP8266 sero atualizados a cada 20 segundos. Respeite o limite de chamadas API, para no
sobrecarregar o servidor.

Home Automation Server

25

ESP8266 do Rui, em portugus

Coisas que voc pode estar comprando


ESP8266 (ESP-01) V090, o que tem dois LEDs prximo antena

Protoboard
Arduino
Ou programador FTDI

Comprando hardware

26

ESP8266 do Rui, em portugus

Ou adaptador conversor USB to TTL CH340, talvez a opo mais barata

Comprando hardware

27

ESP8266 do Rui, em portugus

Mdulo rel 3.3 V


Palavras-chave para sites como eBay: ESP8266, FT232RL

Comprando hardware

28

ESP8266 do Rui, em portugus

Mais fontes de aprendizado


Algumas delas, gratuitas, j esto de alguma forma presentes aqui no livro.

Grtis
Getting Started With The ESPlorer IDE, por Rui Santos

Pago
Home Automation Using ESP8266, por Rui Santos

Arduino e outros dispositivos


Sempre contedos gratuitos e muito seletos.
21 Arduino Modules You Can Buy For Less Than $2, por Rui Santos
5 Ways to Power Up your Arduino, por Rui Santos
Arduino Starter Kit Manual, por Earthshine Electronics
A Complete Beginners Guide to the Arduino

Mais fontes

29