Você está na página 1de 4

Licensed to Leandro Moretti de Lima - leandromoretti60@gmail.com - 438.406.

458-67

Ligação ESP com Arduino

O Módulo WiFi ESP8266 ESP-01 também pode ser utilizado junto ao Arduino para agregar
conexão sem fio a placa e tornar os projetos muito mais interessantes. O módulo tem suporte
as redes WiFi 802.11 b/g/n e criptografia WPA e WPA2.

Com a plataforma embarcada conectada a rede sem fio, você poderá integrar seus projetos
com smartphone e tablets, seja Android ou iOS.

OBS: para que o ESP8266 ESP-01 possa atribuir WiFi ao Arduino, é necessário que o módulo
esteja com um firmware (código) que possa receber comandos AT.

– Lista dos itens necessários:

 01 – Arduino com Cabo USB


 01 – Módulo WiFi ESP8266 ESP-01
 01 – LED Difuso 5mm Vermelho
 01 – Resistor de 150Ω
 03 – Resistor de 10KΩ
 01 – Protoboard
 05 – Cabos Jumper macho-macho
 05 – Cabos Jumper macho-fêmea

– Esquema de ligação da prática:


Licensed to Leandro Moretti de Lima - leandromoretti60@gmail.com - 438.406.458-67

– Código:

1) Antes de carregar o código no Arduino você deverá inserir o nome da sua rede WiFi na linha
char* ssid = “NOME DA SUA REDE WIFI”; e a senha deverá inserir na linha char* password =
“SENHA DA SUA REDE WIFI“;.

2) O código está configurado para utilizar IP estático, portanto, na linha


WiFi.config(IPAddress(192,168,0,110)); você deverá substituir o IP 192,168,0,110 por um
endereço IP disponível na sua rede sem fio.

3) Após o código ser carregado, abra o monitor serial, em seguida abra o navegador no seu
computador, smartphone ou tablet, copie o endereço IP mostrado em “IP address set” no
monitor serial, cole no navegador e acesse para que a página seja carregada.

4) Alterne entre os comandos para acender e apagar o LED.

#include "WiFiEsp.h" //INCLUSÃO DA BIBLIOTECA


#include "SoftwareSerial.h"//INCLUSÃO DA BIBLIOTECA

SoftwareSerial Serial1(6, 7); //PINOS QUE EMULAM A SERIAL, ONDE O PINO 6 É O RX E O PINO 7 É O TX

char ssid[] = "NOME_DA_SUA_REDE_WIFI"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO
char pass[] = "SENHA_DA_SUA_REDE_WIFI";//VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO

int status = WL_IDLE_STATUS; //STATUS TEMPORÁRIO ATRIBUÍDO QUANDO O WIFI É INICIALIZADO


E PERMANECE ATIVO
//ATÉ QUE O NÚMERO DE TENTATIVAS EXPIRE (RESULTANDO EM WL_NO_SHIELD) OU QUE UMA
CONEXÃO SEJA ESTABELECIDA
Licensed to Leandro Moretti de Lima - leandromoretti60@gmail.com - 438.406.458-67

//(RESULTANDO EM WL_CONNECTED)

WiFiEspServer server(80); //CONEXÃO REALIZADA NA PORTA 80

RingBuffer buf(8); //BUFFER PARA AUMENTAR A VELOCIDADE E REDUZIR A ALOCAÇÃO DE


MEMÓRIA

int statusLed = LOW; //VARIÁVEL QUE ARMAZENA O ESTADO ATUAL DO LED (LIGADO / DESLIGADO)

void setup(){
pinMode(LED_BUILTIN, OUTPUT); //DEFINE O PINO COMO SAÍDA (LED_BUILTIN = PINO 13)
digitalWrite(LED_BUILTIN, LOW); //PINO 13 INICIA DESLIGADO
Serial.begin(9600); //INICIALIZA A SERIAL
Serial1.begin(9600); // initialize serial for ESP module
WiFi.init(&Serial1); //INICIALIZA A COMUNICAÇÃO SERIAL COM O SHIELD WIFI ESP8266
WiFi.config(IPAddress(192,168,0,110)); //COLOQUE UMA FAIXA DE IP DISPONÍVEL DO SEU ROTEADOR

//INÍCIO - VERIFICA SE O SHIELD ESTÁ ACOPLADO AO ARDUINO, CONECTA A REDE SEM FIO E
INICIA O WEBSERVER
if(WiFi.status() == WL_NO_SHIELD){
while (true);
}
while(status != WL_CONNECTED){
status = WiFi.begin(ssid, pass);
}
server.begin();
//FIM - VERIFICA SE O SHIELD ESTÁ ACOPLADO AO ARDUINO, CONECTA A REDE SEM FIO E INICIA
O WEBSERVER
}

void loop(){
WiFiEspClient client = server.available(); //ATENDE AS SOLICITAÇÕES DO CLIENTE

if (client) { //SE CLIENTE TENTAR SE CONECTAR, FAZ


buf.init(); //INICIALIZA O BUFFER
while (client.connected()){ //ENQUANTO O CLIENTE ESTIVER CONECTADO, FAZ
if(client.available()){ //SE EXISTIR REQUISIÇÃO DO CLIENTE, FAZ
char c = client.read(); //LÊ A REQUISIÇÃO DO CLIENTE
buf.push(c); //BUFFER ARMAZENA A REQUISIÇÃO

//IDENTIFICA O FIM DA REQUISIÇÃO HTTP E ENVIA UMA RESPOSTA


if(buf.endsWith("\r\n\r\n")) {
sendHttpResponse(client);
break;
}
if(buf.endsWith("GET /H")){ //SE O PARÂMETRO DA REQUISIÇÃO VINDO POR GET FOR IGUAL A
"H", FAZ
digitalWrite(LED_BUILTIN, HIGH); //ACENDE O LED
statusLed = 1; //VARIÁVEL RECEBE VALOR 1(SIGNIFICA QUE O LED ESTÁ ACESO)
}
else{ //SENÃO, FAZ
if (buf.endsWith("GET /L")) { //SE O PARÂMETRO DA REQUISIÇÃO VINDO POR GET FOR IGUAL A
"L", FAZ
digitalWrite(LED_BUILTIN, LOW); //APAGA O LED
statusLed = 0; //VARIÁVEL RECEBE VALOR 0(SIGNIFICA QUE O LED ESTÁ APAGADO)
}
}
}
}
client.stop(); //FINALIZA A REQUISIÇÃO HTTP E DESCONECTA O CLIENTE
}
}

//MÉTODO DE RESPOSTA A REQUISIÇÃO HTTP DO CLIENTE


void sendHttpResponse(WiFiEspClient client){
client.println("HTTP/1.1 200 OK"); //ESCREVE PARA O CLIENTE A VERSÃO DO HTTP
Licensed to Leandro Moretti de Lima - leandromoretti60@gmail.com - 438.406.458-67

client.println("Content-Type: text/html"); //ESCREVE PARA O CLIENTE O TIPO DE CONTEÚDO(texto/html)


client.println("");
client.println("<!DOCTYPE HTML>"); //INFORMA AO NAVEGADOR A ESPECIFICAÇÃO DO HTML
client.println("<html>"); //ABRE A TAG "html"
client.println("<head>"); //ABRE A TAG "head"
client.println("<link rel='icon' type='image/png'
href='http://blogmasterwalkershop.com.br/arquivos/artigos/sub_wifi/icon_mws.png'/>"); //DEFINIÇÃO DO ICONE
DA PÁGINA
client.println("<link rel='stylesheet' type='text/css'
href='http://blogmasterwalkershop.com.br/arquivos/artigos/sub_wifi/webpagecss.css' />"); //REFERENCIA AO
ARQUIVO CSS (FOLHAS DE ESTILO)
client.println("<title>MasterWalker Shop - Modulo WiFi ESP8266 para Arduino</title>"); //ESCREVE O TEXTO
NA PÁGINA
client.println("</head>"); //FECHA A TAG "head"

//AS LINHAS ABAIXO CRIAM A PÁGINA HTML


client.println("<body>"); //ABRE A TAG "body"
client.println("<img alt='masterwalkershop'
src='http://blogmasterwalkershop.com.br/arquivos/artigos/sub_wifi/logo_mws.png' height='156' width='700' />");
//LOGO DA MASTERWALKER SHOP
client.println("<p style='line-height:2'><font>Modulo WiFi ESP8266 para Arduino</font></p>"); //ESCREVE O
TEXTO NA PÁGINA
client.println("<font>ESTADO ATUAL DO LED</font>"); //ESCREVE O TEXTO NA PÁGINA

if (statusLed == HIGH){ //SE VARIÁVEL FOR IGUAL A HIGH (1), FAZ


client.println("<p style='line-height:0'><font color='green'>LIGADO</font></p>"); //ESCREVE "LIGADO" NA
PÁGINA
client.println("<a href=\"/L\">APAGAR</a>"); //COMANDO PARA APAGAR O LED (PASSA O
PARÂMETRO /L)
}else{ //SENÃO, FAZ
if (statusLed == LOW){ //SE VARIÁVEL FOR IGUAL A LOW (0), FAZ
client.println("<p style='line-height:0'><font color='red'>DESLIGADO</font></p>"); //ESCREVE
"DESLIGADO" NA PÁGINA
client.println("<a href=\"/H\">ACENDER</a>"); //COMANDO PARA ACENDER O LED (PASSA O
PARÂMETRO /H)
}
}
client.println("<hr />"); //TAG HTML QUE CRIA UMA LINHA NA PÁGINA
client.println("<hr />"); //TAG HTML QUE CRIA UMA LINHA NA PÁGINA
client.println("</body>"); //FECHA A TAG "body"
client.println("</html>"); //FECHA A TAG "html"
delay(1); //INTERVALO DE 1 MILISSEGUNDO
}

Você também pode gostar