- Descrição: O Sensor de Cor TCS230 (TCS3200) é um módulo composto…
Como usar com Arduino – Shield WiFi ESP8266
– Descrição:
O Shield WiFi ESP8266 Módulo ESP-12E para Arduino (também conhecido como ESP8266 ESP-12E UART Wireless WIFI Shield TTL Converter) foi desenvolvido com a finalidade de facilitar a conexão do Arduino a redes WiFi através do ESP8266 modelo ESP-12E. Este shield se encaixa perfeitamente no Arduino Uno, Arduino Mega 2560, Leonardo e outros modelos. Além disso, não há necessidade de alimentar o shield externamente, pois o mesmo já é alimentado pelo Arduino.
O Módulo ESP8266 é um dispositivo IoT (Internet das Coisas) que consiste de um microprocessador ARM de 32 bits com suporte embutido à rede WIFI e memória flash integrada. Essa arquitetura permite que ele possa ser programado de forma independente, sem a necessidade de outras placas microcontroladoras como o Arduino, por exemplo. Vale ressaltar que o ESP8266 além de ser programado em LUA (linguagem de programação desenvolvida no Brasil), também é compatível com o ambiente de programação (IDE) do Arduino.
Geralmente, é necessário montar um circuito com vários componentes e fiação para interligar um ESP8266 ao Arduino, contudo, ao utilizar o Shield WiFi ESP8266 Módulo ESP-12E para Arduino o trabalho se resume apenas em acoplar a placa em cima do Arduino, posicionar as vias da DIP switch de acordo com o modo de funcionamento do shield e programar o Arduino para se conectar a redes WiFi.
Um dos grandes diferenciais do Shield WiFi ESP8266 Módulo ESP-12E para Arduino está na possibilidade de utilizá-lo sozinho, logo, caso você queira desenvolver um projeto independente do Arduino, poderá fazer de forma simples, pois ele possui toda pinagem do ESP-12E disponível, inclusive os pinos para conexão de um conversor USB serial.
OBS: para que o Shield WiFi ESP8266 Módulo ESP-12E possa atribuir WiFi ao Arduino, é necessário que o módulo esteja com um firmware (código) que possa receber comandos AT. Se você adquiriu o Shield WiFi ESP8266 Módulo ESP-12E em nossa loja e não enviou nenhum código para o shield, o mesmo já vai estar com o firmware que aceita comandos AT e você pode prosseguir na prática. Caso você tenha adquirido o Shield WiFi ESP8266 Módulo ESP-12E em outra loja ou já tenha carregado algum código no módulo, acesse a postagem Upgrade de Firmware no Shield WiFi ESP8266 para Arduino, execute os passos e em seguida retorne para continuar.
– Especificações e características:
– Controlador: ESP8266 ESP-12E
– Compatibilidade: Arduino Uno, Arduino Mega 2560, Leonardo e outros
– Tensão de operação (shield conectado ao Arduino): 5VDC
– Tensão de operação (standalone com conversor USB serial): 3.3VDC
– Nível lógico: 3.3V (não tolerante a 5V)
– Velocidade de clock: 80MHz / 160MHz
– Memória: 32Mb (4 megabytes)
– Portas digitais (GPIO): 11
– Entrada analógica (ADC): 1
– GPIO: função PWM, I2C e SPI
– Pinos UART: 2
– Suporte a redes: 802.11 b/g/n
– Potência de saída: +20dBm no modo 802.11b
– Antena embutida
– Alcance: ~90m
– Processador: Arm 32 bits
– Comunicação: TCP IP
– Criptografia: WEP, WPA, TKIP, AES
– Modo de operação: STA / AP / STA+AP
– Aplicações:
Projetos com Arduino em que seja necessário conectar a placa a internet através de conexão WiFi (sem fio) para desenvolvimento de projetos que necessitam controlar algo remotamente ou obter informações de outros dispositivos para exibir em tempo real ou armazenar em uma base de dados.
– Proposta da prática:
Utilizar o Shield WiFi ESP8266 para atribuir WiFi ao Arduino, fazer conexão a um webserver e acessar uma página web que possui um botão para ligar / desligar um LED. O estado atual deste LED também será exibido na página.
– Lista dos itens necessários:
01 – Arduino (MEGA 2560 R3 / Uno / Leonardo)
01 – Shield WiFi ESP8266 Módulo ESP-12E para Arduino
01 – LED Difuso 5mm Vermelho
– Esquema de ligação da prática:
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Biblioteca:
– Importando bibliotecas para o ambiente de programação do Arduino:
Arduino – Importando bibliotecas para a IDE
– 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. Se você não sabe como ter acesso a esta informação no Windows, sugiro que leia a postagem Descobrindo a faixa de IP do seu roteador e em seguida retorne para continuar.
3) Se estiver utilizando o Arduino Leonardo, vá até as linhas 19 e 20 do código, e mude a palavra Serial para Serial1.
4) Coloque todas as vias da DIP switch na posição OFF e faça o carregamento do código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
#include "WiFiEsp.h" //INCLUSÃO DA BIBLIOTECA NECESSÁRIA PARA FUNCIONAMENTO DO CÓDIGO 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 //(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 WiFi.init(&Serial); //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 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='https://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='https://blogmasterwalkershop.com.br/arquivos/artigos/sub_wifi/webpagecss.css' />"); //REFERENCIA AO ARQUIVO CSS (FOLHAS DE ESTILO) client.println("<title>MasterWalker Shop - Shield 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='https://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>Shield WiFi ESP8266 para Arduino</font></p>"); //ESCREVE O TEXTO NA PÁGINA client.println("<p style='line-height:2'><font>(ESP8266 ESP-12E UART Wireless WIFI Shield TTL Converter)</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 } |
5) Terminado o carregamento do código no Arduino, desconecte o cabo USB da placa, coloque as vias P1 e P2 do shield na posição ON e conecte o cabo USB ao Arduino novamente.
6) 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.
7) Alterne entre os comandos para acender e apagar o LED.
8) Para esta postagem utilizei o Arduino Mega 2560, contudo, o resultado final será o mesmo caso você esteja utilizando outra placa Arduino que permita o acoplamento do shield.
9) Enquanto as vias P1 e P2 do shield estiverem na posição ON, você não poderá fazer o envio de códigos para o Arduino, pois a serial nativa vai estar ocupada. Lembre-se de toda vez que mudar a posição das vias da DIP switch, pressionar o botão ESP-RST ou o RESET do Arduino.
– Resultado final:
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Como usar com Arduino – Sensor de Corrente (AC e DC) ACS712 (5A / 20A / 30A)
Próxima postagem: Como usar com Arduino – Transdutor Buzzer Piezoelétrico SFM-27
Boa tarde.
Gostaria de saber se conectado a placa uma ve a Arduíno todas as porta ficam a diposição ou há portas que não pderei usar. Poderia me confimar, e informar caso seja usadas, quais são essas portas?
Olá Luís Vanderlei.
Agradeço pelo comentário!
Os pinos utilizadas pelo Shield são os RX e TX, 0 e 1 respectivamente.
ola amigo, boa noite gostaria de saber se vc escreve codigo para Arduino Mega com WiFi Embutido ESP8266, preciso de um codigo para acionar todas as entradas via pagina web, gostaria de sabe o valor para escrever o codigo
Na hora de carregar o programa para o arduino da o seguinte erro:
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
Ocorreu um erro enquanto o sketch era carregado
Olá Filipe.
Agradeço pelo comentário!
Veja se a sua placa é o Shield WiFi ESP8266 (Moer):
https://blogmasterwalkershop.com.br/embarcados/esp8266/shiald-e-shield-wifi-esp8266-sera-que-tem-diferenca
Hi there, awesome project.
I’m working on a project where I collect data from sensors and I would like to send the data to a database. The problem is that I am stuck at sending the data from the Arduino to the Wifi Shield, so they can be forwarded to the database. How would I be able to do that? I managed to figure out how to send data from the shield to the database, but cannot figure out sending data from Arduino to shield.
Any help would be highly appreciated.
Thank you.
Olá! É possível utilizar o protocolo Modbus TCP/IP com este Shield e associar com um supervisório tipo ScadaBR? Obrigado.
Esse código funciona apenas para uma rede interna? Em caso afirmativo, como faço para controlar o led pela internet (redes wifi diferentes)?
Olá Gabriel.
Agradeço pelo comentário!
Somente para rede interna.
Pesquise por NAT para poder acessar externamente.
Olá Euler ,
Muito bom o post, porém estou com algumas dúvidas , este código deve ser baixado no Arduino e não na placa correto ?
Estou utilizando o modelo “shiald”, posso conectar o shield diretamente no arduino, ou preciso conectar o RX, TX através dos jumpers?
Através do monitoramento da serial, ele não passa dessa mensagem:
AT+CIPSTATUS
Olá Lucas.
Agradeço pelo comentário!
Conforme está informado no tutorial, o shield deve estar com o firmware de comandos AT.
No Arduino é carregado o código da postagem.
Euler, boa noite. Estou com o mesmo problema do colega. Não passa da mensagem CIPSTATUS. Conforme relatado em outro post, não consegui atualizar firmware de forma alguma. Realizei diversas vezes todos os passos. Estou utilizando Arduino Mega como intermédio. Conferi todos os cabos, ligações, posições da chave DIP, porém sem sucesso. Placa shiald more. Me ajuda, por favor. Obrigado desde já.
Buenas tardes seguí la practica y todo funciono muy bien, muchas gracias.
Una pregunta : ¿Donde puedo obtener mas documentación para usar esta placa? Es decir donde estan comandos como :
WiFiEspClient client = server.available();
Gracias.
Hola Agustin.
¡Gracias por el comentario!
Por ahora, el lugar con más información sobre este escudo está aquí en el blog. Si desea conocer todas las características de ESP8266 (corazón del escudo) puede comenzar por:
https://arduino-esp8266.readthedocs.io/en/latest/
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html
https://www.espressif.com/sites/default/files/documentation/esp8266-technical_reference_en.pdf
https://github.com/esp8266/Arduino
Olá!
Gostaria de saber se nesse processo consigo comunicar dois arduinos ?
Por exemplo, tenho dois aduinos um em casa extremidade de minha casa ambos com dois botões, digamos que um vermelho e outro verde e quando um botão de cada um for acionado e as cores se corresponderem ele emita um som, por isso lhe pergunto se eles podem se comunicar através do EPS8266?
Fraternalmente.
Olá Flávio.
Agradeço pelo comentário!
Consegue sim.
me precipitei, desculpe. O mesmo cabo curto que usei no mega nao funcionou no Uno que acabou funcionando com um cabo mais longo, n’ao sei qual a mágica, mas pode ser defeito no cabo. valeu!
Provavelmente o cabo está defeituoso.
Vlw!!!
Euler, parabéns pelos posts. Funcionou apenas no arduino Mega. Testei no leonardo, nano e Uno não funcionou . Essa shield só funciona mesmo no mega? poderia confirma isso? preciso que ele funcione placa menor, uno por exemplo. valeu ! obrigado
Olá Daniel.
Agradeço pelo comentário!
Conforme informado no texto, o shield é compatível com todas as versões de Arduino em que a placa possa ser acoplada.
Boa tarde,
Estou com problema no passo 6.
A porta serial imprime a seguinte mensagem:
12:21:10.674 -> f怘⸮AT
12:21:12.691 -> AT
12:21:14.689 -> AT
12:21:16.720 -> AT
12:21:18.753 -> AT
12:21:25.822 -> AT+CWDHCP_CUR=1,0
12:21:27.335 -> AT+CIPSTA_CUR=”172.20.10.4″
12:21:29.858 -> AT+CIPSTATUS
Utilizo o IP indicado porém não há conexão. Como devo prosseguir?
Olá Guilherme.
Agradeço pelo comentário!
Recomendo que faça novamente o processo de upgrade de firmware do shield,reinstale a biblioteca WiFIESP-mod e que confira a posição das vias da DIP switch.
Olá Euler,
No código a velocidade estava 9600. Trocando para 115200 passou a funcionar!
Obrigado
Show de bola!
Vlw!!!
É possível fazer tudo isso a partir de um Macbook?
Olá João.
Agradeço pelo comentário!
Sim, é possível.
Olá eu consigo salvar dados em algum banco de dados com esse Shield? Alguem tem algum exemplo pra compartilhar pra me ajudar?
Olá Rodrigo.
Agradeço pelo comentário!
O shield utilziado junto ao Arduino apenas faz o intermédio do Arduino com a rede local ou internet. Portanto, é possível sim transmitir / receber dados para um banco de dados.
Pesquise por exemplos de código utilizando o Arduino e o ESP-01 com banco de dados e poderá aplicar perfeitamente junto ao shield e o Arduino.
Professor, por acaso esse módulo ESP-12E ESP8266 pode se conectar diretamente ao arduino (sem shield) e prover wi-fi? Comprei achando que sim. 🙁
Olá Rodrigo.
Agradeço pelo comentário!
Sim, qualquer versão do ESP8266 pode ser utilizada para atribuir WiFi ao Arduino.
oi, eu estou tentando aprender a usar o skatch do seu escudo wifi Entrei em tudo e funciona até a metade.
Não consigo concatenar as strings para iniciar o comando relay.
Eu precisaria de uma mão, ficaria grato
Gostaria de enviar o arquivo para que você possa conferir
obrigado
Olá Attilio.
Agradeço pelo comentário!
Como assim funciona até a metade? Poderia dar mais detalhes sobre o problema que está tendo?
Quais strings deseja concatenar? Para qual finalidade?
Para usar com o módulo relé, o código não mudaria muita coisa.
Bom dia,
obrigado pela resposta oportuna.
Gostaria de enviar os 2 arquivos, mas não sei o email. o primeiro arquivo funciona corretamente com a blindagem ethernet; o segundo, como eu disse antes, consegui fazê-lo funcionar apenas pela metade. Se ele não vê os arquivos, ele não consegue entender neste meio.
Mas se estiver tentando utilizar o código de ethernet shield com este shield wifi da postagem, não irá funcionar.
Você pode usar aqui no campo de pergunta a tag code conforme mostrado no link abaixo e deixar o seu código para que seja analisado:
https://www.w3schools.com/tags/tag_code.asp
Dúvidas sobre os itens usados nas práticas aqui do Blog, devem ser passadas através de perguntas nas postagens para que eu ou outro usuários possam tentar ajudar.
Bom dia,
Gostaria de publicar o código fonte, mas não sei como
Você pode usar aqui no campo de pergunta a tag code conforme mostrado no link abaixo e deixar o seu código para que seja analisado:
https://www.w3schools.com/tags/tag_code.asp