- Descrição: O Módulo (Transmissor e Receptor) Super Heterodino RF 433MHz é…
Comunicando o Shield WiFi ESP8266 com o Arduino através da Serial Nativa
A partir dos passos abaixo você vai aprender a comunicar o Shield WiFi ESP8266 com o Arduino através da Serial Nativa (hardware serial do Arduino) e obter informações do servidor web que vai estar sendo executado no ESP8266.
Na postagem Conhecendo o Shield WiFi ESP8266 para Arduino foi feito um apanhado geral sobre a placa. Logo, recomendo que você leia a postagem caso ainda não tenha lido. Além disso, é extremamente importante que você leia também a postagem Shiald e Shield WiFi ESP8266? Será que tem diferença?, pois se tratando do Shield WiFi ESP8266 (também conhecido como ESP8266 ESP-12E UART Wireless WIFI Shield TTL Converter), é possível encontrar no mercado pelo menos três placas que aparentemente são iguais, mas na verdade estas placas possuem alguns pontos que as diferem, até mesmo na questão de funcionamento com o Arduino através de comunicação pela serial nativa.
Para utilizar o Shield WiFi ESP8266 com o Arduino através da serial nativa (pinos D0 e D1) é necessário que um código seja carregado no shield e que no Arduino seja carregado um outro código para enviar, receber e interpretar os dados trafegados através da serial nativa. Nesta postagem vamos carregar o código de um webserver no Shield WiFi ESP8266 e no Arduino será carregado um código responsável por receber as informações vindas do shield através da serial nativa, e exibir estas mensagens no monitor serial.
Para conectar o Shield WiFi ESP8266 ao computador, é necessário utilizar um conversor USB serial. Caso você não possua um conversor USB serial convencional, poderá utilizar o conversor do Arduino Uno R3 como intermédio. Há vários modelos de conversores USB serial no mercado, mas para esta postagem utilizei o Adaptador Conversor USB Serial TTL PL2303HX.
– Utilizando o conversor USB serial do Arduino Uno R3 como intermédio:
Se for utilizar o conversor USB serial do Arduino Uno R3 com Cabo USB, além da placa você irá precisar de:
01 – Shield WiFi ESP8266 ESP-12E para Arduino
04 – Cabos Jumper macho-fêmea
OBS: antes de montar o esquema de ligação com o Arduino, você deverá carregar um código em branco na placa para garantir que o conversor USB serial não esteja sendo utilizado. Carregue o código abaixo em seu Arduino e prossiga:
1 2 3 4 5 6 7 8 9 |
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: } |
OBS: fique atento na hora de conectar o pino de alimentação 3.3V do shield ao Arduino.
– Utilizando o Adaptador Conversor USB Serial TTL PL2303HX:
Caso for utilizar o conversor USB Serial convencional, irá precisar do seguintes itens:
01 – Adaptador Conversor USB Serial TTL PL2303HX
01 – Shield WiFi ESP8266 ESP-12E para Arduino
04 – Cabos Jumper fêmea-fêmea
OBS: O PL2303 possui alimentação 5V e 3V3. Utilize a alimentação 3V3 e ignore o pino 5V.
Após efetuar um dos esquemas de ligação acima, basta conectar o cabo USB (ao Arduino e ao computador) ou o conversor USB serial ao computador.
Em seguida acesse o ‘Painel de Controle’ do Windows, ‘Gerenciador de Dispositivos’, e na janela que abrir vá até ‘Portas (COM e LPT)’. Você poderá ver o dispositivo conectado e o número da porta COM em que ele foi alocado. A título de demonstração, conectei tanto o Arduino quanto o conversor USB serial no computador e na imagem abaixo você pode ver como os dispositivos aparecem no gerenciador:
Se estiver utilizando o PL2303HX e o mesmo não estiver sendo reconhecido pelo o Windows, acesse a postagem Conversor USB Serial TTL PL2303HX – Instalação no Windows 10, veja como resolver e em seguida retorne para continuar.
Caso você não tenha instalado o pacote de bibliotecas do ESP8266 na IDE do Arduino, clique no link abaixo para fazer o download do arquivo ZIP:
Download Arduino core for ESP8266 WiFi chip
Se você não sabe como instalar bibliotecas na IDE do Arduino, basta clicar no link abaixo, seguir os passos, importar a biblioteca e retornar para continuar:
Arduino – Importando bibliotecas para a IDE
Copie o código abaixo e cole na IDE do Arduino:
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 |
#include <ESP8266WiFi.h> //INCLUSÃO DE BIBLIOTECA #include <WiFiClient.h> //INCLUSÃO DE BIBLIOTECA #include <ESP8266WebServer.h> //INCLUSÃO DE BIBLIOTECA #include <ESP8266mDNS.h> //INCLUSÃO DE BIBLIOTECA const char* ssid = "NOME_DA_SUA_REDE_WIFI"; //VARIÁVEL QUE ARMAZENA O NOME DA REDE SEM FIO EM QUE VAI CONECTAR const char* password = "SENHA_DA_SUA_REDE_WIFI"; //VARIÁVEL QUE ARMAZENA A SENHA DA REDE SEM FIO EM QUE VAI CONECTAR ESP8266WebServer server(80); //CRIA UM OBJETO PARA LIDAR COM AS REQUISIÇÕES HTTP NA PORTA 80 //MÉTODO RESPONSÁVEL POR ENVIAR A INFORMAÇÃO A PÁGINA WEB void handleRoot() { //ENVIA A MENSAGEM PARA A PÁGINA WEB SEMPRE QUE UMA REQUISIÇÃO HTTP FOR SOLICITADA server.send(200, "text/plain", "A MasterWalker Shop se preocupa com o seu aprendizado!"); Serial.print("Resposta do Shield WiFi ESP8266: "); //IMPRIME O TEXTO NA SERIAL Serial.println("Requisição HTTP executada"); //IMPRIME O TEXTO NA SERIAL } //MÉTODO RESPONSÁVEL POR INFORMAR QUANDO OCORRER O ERRO 404 void handleNotFound() { String message = "Arquivo não encontrado\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); } void setup(void) { Serial.begin(9600); //INICIALIZA A SERIAL WiFi.mode(WIFI_STA); //DEFINE O MODO DE OPERAÇÃO (STATION) WiFi.begin(ssid, password); //PASSA OS PARÂMETROS PARA A FUNÇÃO QUE VAI FAZER A CONEXÃO COM A REDE SEM FIO Serial.println(""); //QUEBRA DE LINHA NA SERIAL //AGUARDA PELA CONEXÃO while (WiFi.status() != WL_CONNECTED) { delay(500); //INTERVALO DE 500 MILISSEGUNDOS Serial.print("."); //IMPRIME O CARACTERE NA SERIAL } Serial.println(""); //QUEBRA DE LINHA NA SERIAL Serial.print("Conectado a rede WiFi: "); //IMPRIME O TEXTO NA SERIAL Serial.println(ssid); //IMPRIME NA SERIAL O NOME DA REDE SEM FIO Serial.print("Endereço IP: "); //IMPRIME O TEXTO NA SERIAL Serial.println(WiFi.localIP()); //IMPRIME NA SERIAL O ENDEREÇO IP PARA CONEXÃO //VERIFICA A INICIALIZAÇÃO DO mDNS if (MDNS.begin("esp8266")) { Serial.println("Status do mDNS: iniciado"); //IMPRIME O TEXTO NA SERIAL } server.on("/", handleRoot); // CHAMA A FUNÇÃO handleRoot QUANDO O CLIENTE SOLICITAR UM URI "/" server.on("/inline", []() { server.send(200, "text/plain", "trabalhando perfeitamente"); }); //CHAMA A FUNÇÃO handleNotFound QUANDO O CLIENTE SOLICITAR UM URI DIFERENTE DE "/" server.onNotFound(handleNotFound); server.begin(); //INICIALIZA O SERVIDOR WEB Serial.println("Status do servidor HTTP: iniciado"); //IMPRIME O TEXTO NA SERIAL Serial.println("*********************************"); //IMPRIME OS CARACTERES NA SERIAL } void loop(void) { server.handleClient(); //CHAMA A FUNÇÃO RESPONSÁVEL POR ATENDER AS REQUISIÇÕES } |
Você deverá inserir o nome da sua rede WiFi na linha const char* ssid = “NOME_DA_SUA_REDE_WIFI”; e a senha deverá inserir na linha const char* password = “SENHA_DA_SUA_REDE_WIFI”;:
No menu “Ferramentas” selecione a opção “Placa” e selecione o “NodeMCU 1.0 (ESP-12E Module)”:
Ainda no menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que sua placa foi alocada:
Veja que no meu caso a placa foi alocada na COM3, porém, o seu Arduino / adaptador conversor USB serial pode ter sido alocado em uma COM de outro valor. Caso não saiba em qual porta COM sua placa foi alocada, basta retornar no menu Iniciar do Windows, acessar a opção Dispositivos e Impressoras e verificar a porta em que seu Arduino / adaptador conversor USB serial está conectado, retornar na IDE e selecionar a porta COM.
A configuração final deverá ficar similar a da imagem abaixo:
Para fazer o carregamento de códigos no Shield WiFi ESP8266 é necessário que as vias P3 e P4 da DIP switch do shield estejam na posição ON. Portanto, coloque estas vias na posição ON e em seguida pressione o botão ESP-RST da placa:
Clique no botão para enviar o código ao shield e aguarde o carregamento.
OBS: se ao tentar carregar o código no shield receber os erros espcomm_sync failed / espcomm_open failed / espcomm_upload_mem failed, verifique se as vias P3 e P4 estão na posição ON e pressione novamente o botão ESP-RST.
Terminado o carregamento do código no shield, desconecte o Arduino ou adaptador conversor USB serial do computador e em seguida remova os cabos que estão conectados ao shield. Em seguida, conecte o cabo USB ao Arduino e ao computador.
Copie o código abaixo e cole na IDE do Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <SoftwareSerial.h> //INCLUSÃO DE BIBLIOTECA SoftwareSerial serialESP8266(0, 1); //PINOS QUE EMULAM A SERIAL (PINO 0 É O RX E PINO 1 É O TX) void setup() { Serial.begin(9600); //INICIALIZA A SERIAL serialESP8266.begin(9600); //INICIALIZA A SOFTWARESERIAL } void loop() { if (serialESP8266.available()) { //SE SOFTWARESERIAL HABILITADA, FAZ String msg = serialESP8266.readString(); //VARIÁVEL RECEBE AS INFORMAÇÕES VINDAS PELA SOFTWARESERIAL Serial.println(msg); //IMPRIME O TEXTO NA SERIAL } } |
No menu “Ferramentas” selecione a opção “Placa” e selecione o “Arduino/Genuino Uno” caso não esteja configurado. Ainda no menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que seu Arduino foi alocado.
Clique no botão para enviar o código ao Arduino e aguarde o carregamento.
Terminado o carregamento do código no Arduino, desconecte o cabo USB da placa, acople o shield ao Arduino, coloque as vias P3 e P4 do shield na posição OFF e conecte o cabo USB ao Arduino novamente.
Para que o Shield WiFi ESP8266 se comunique com o Arduino através da serial nativa é necessário que as vias P1 e P2 da DIP switch do shield estejam na posição ON. Portanto, coloque estas vias na posição ON e em seguida pressione o botão ESP-RST da placa.
OBS: 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, presionar o botão ESP-RST ou o RESET do Arduino.
Imediatamente abra o monitor serial da IDE do Arduino para acompanhar as informações do Shield WiFi ESP8266:
Com o monitor serial aberto você poderá acompanhar as ações que estão sendo executadas no webserver carregado no Shield WiFi ESP8266. Caso não seja apresentado nenhuma informação quando abrir o monitor serial, pressione novamente o botão ESP-RST.
Veja que na serial é mostrado o nome da rede WiFi em que o shield está conectado, o endereço IP para se conectar ao webserver, o status do mDNS e o status do servidor HTTP:
Copie o endereço IP mostrado no monitor serial, abra o seu navegador de internet, cole o endereço IP e dê ENTER para acessar. Uma página web similar a da imagem abaixo será carregada:
Retorne ao monitor serial e veja que uma nova informação foi carregada:
Sempre que uma requisição HTTP for solicitada ao webserver, a informação da imagem acima será apresentada no monitor serial.
Veja no vídeo abaixo o resultado final:
Caso queira carregar um código no Arduino sem ter que desacoplar o shield, basta colocar as quatro vias (P1 / P2 / P3 / P4) na posição OFF, presionar o botão ESP-RST e fazer o envio do código.
Caso não sucesso ao final deste tutorial, leia a postagem Shiald e Shield WiFi ESP8266? Será que tem diferença?.
Vale ressaltar que, você pode utilizar a biblioteca SoftwareSerial para emular uma comunicação serial utilizando outros pinos digitais do Arduino em conjunto com o shield, contudo, vai ser necessário o uso de jumpers.
Se quer aprender a fazer upgrade / modificação de firmware no shield para começar a colocar em prática alguns projetos, recomendo que acesse nossa postagem Upgrade de Firmware no Shield WiFi ESP8266 para Arduino.
Gostou desta postagem? 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 – Módulo Matriz De LED 8×8 com MAX7219
Boa noite Euler,
Excelente tutorial, gostaria de saber se consigo fazer ao contrario com um arduino e um esp01, ou um nodemcu esp8266, gostaria de ter um codigo de wifimanager + webserver no esp e um codigo de leitura de sensor no arduino, preciso q o arduino mande os dados dos sensores analogicos para o esp mostrar na pagina web, não somente o nodecmu pq preciso de varias portas analogicas e não sei se teria shields de portas analogicas para o nodemcu, então como seria o codigo do arduino para enviar dados para o esp01??
Hi, great project.
I would like to ask if it would be possible to do this in reverse?
Send from Arduino to Shield?
Thank you.
Então, estou fazendo meu TCC baseado em arduíno e o blynk como plataforma para dispositivos móveis, porém estou tendo dificuldades em conectar esse shield com o blynk. Naquela matéria que vc apresentou esse shield vc disse que precisa instalar um código dentro dele e outro no arduíno pra fazer a comunicação. Como eu faço isso pra trabalhar com o blynk? Tem como?
Segue o link do tutorial de uso do shield com o Blynk:
https://blogmasterwalkershop.com.br/blynk/blynk-utilizando-com-o-shield-wifi-esp8266-e-arduino/
Boa tarde Euler.
Estou começando a desenvolver projetos em arduíno e estou com uma dúvida. Recentemente adquiri uma placa igual a do post, porém pesquisei e não consegui encontrar uma forma dele trabalhar como uma placa wifi ou como um ESP8266 comum para se conectar a minha rede. Teria como configurá-lo para fazer isso ou ele trabalha somente como servidor e acess point?
Olá Sergio.
Agradeço pelo comentário!
O Shield pode ser utilizado sozinho da mesma forma que outros módulos baseados no ESP8266.
Para isto deverá usar um conversor USB serial para programar a placa pelo computador ou pode usar um Arduino como intermédio ao computador e programar o Shield.
Vocês são incríveis, parabéns pela divulgação de material informativo em pt-br. Uma única crítica é esse dubstep muito alto no vídeo, acho que se se colocarem um som mais agradável ficaria mais harmônico. Mas no geral tudo certo, parabéns pelo material mesmo
Olá Pedro.
Agradeço pelo comentário e reconhecimento!
Fico satisfeito em saber que o tutorial te ajudou de alguma forma.
Sobre o áudio do vídeo: já faz 1 ano que trocamos o áudio para um mais calmo e mais baixo.|
Vlw!!!
Boa Tarde !
Mesmo posicionando os pinos P3 e P4 em ON continuo com o erros espcomm_sync failed / espcomm_open failed / espcomm_upload_mem failed, sabe o que pode ser?
Olá Matheus.
Está utilizando o Arduino para carregar o código no shield ou está utilizando o conversor USB serial convencional? Se estiver utilizando o Arduino para enviar o código ao shield, verifique se não inverteu as conexões do RX / TX.
Bom dia parceiro, meus parabéns pelo trabalho, teria o arquivo desse projeto no Fritzing? A primeira parte ali, para ligação Node_MCU
Olá Leonardo.
Agradeço pelo reconhecimento!
Infelizmente não tenho ele no Fritzing.
Essa imagem foi criada por mim e do Fritzing foi utilizado apenas a placa Uno.
Boa tarde, show de bola teu tutorial amigo, parabéns! Consegui acessar a rede, tudo certinho!
Agora…
Tens algum tutorial que ensine a acessar um servidor no WampServer por exemplo? Através do Shield WiFi ESP8266?
Semelhante a este: https://blogmasterwalkershop.com.br/embarcados/nodemcu/nodemcu-como-criar-um-web-server-e-conectar-a-uma-rede-wifi/
Olá Leonardo.
Que bom que conseguiu executar os passos!
Para Wamp não tem nenhum tutorial, mas recentemente publiquei uma nova postagem com o Shield WiFi ESP8266, justamente utilizando um Webserver em conjunto com o Arduino:
https://blogmasterwalkershop.com.br/embarcados/esp8266/webserver-com-o-shield-wifi-esp8266-para-arduino/
É semelhante a postagem do link que você mencionou na sua pergunta.
Obrigado pelo auxílio parceiro.
Essa placa: https://blogmasterwalkershop.com.br/wp-content/uploads/2018/08/img01_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze.jpg. Não consigo encontrar ela no Fritzing, teria como me dar uma mão?
Conforme respondido anteriormente, essa imagem foi criada por mim e do Fritzing foi utilizado apenas a placa Uno.
Euler, você é o cara!!!
SIM, meu shield tem escrito “MOER” e SIM, ao carregar códigos no Arduino dá erro quando o shield está acoplado e com as vias OFF.
kkkk
Agora a última pergunta, pois já abusei demais de você…
Com esse “defeito” a placa tem alguma serventia? Se for possível, como devo proceder para utilizá-la?
O que pretendo é monitorar alguns sensores e relés e talvez enviar comandos do tipo liga e desliga através da conexão wi-fi.
Me considero leigo em Arduino e caso você indique que esta placa não tem serventia irei dispensá-la de imediato.
Grande abraço
Olá Renato.
Que pena que possui essa versão do shield, mas nem tudo está perdido =)
Vamos lá:
A placa tem serventia sim, mesmo tendo defeito de fábrica, contudo, você vai precisar gastar alguns reais(não é muito) para poder solucionar o problema dela.
Eu estou terminando de fazer o artigo explicando a causa do problema nesse modelo de shield (que vem escrito Moer) e como solucionar. Provavelmente até segunda feira já vai estar publicado aqui no Blog.
Pode ficar tranquilo que você vai poder utilizar seu shield para atribuir WiFi ao Arduino e e monitorar sensores e controlar módulos relé.
Opa!!!!
Vou ficar na expectativa do artigo.
Mais uma vez, muito obrigado Euler.
Olá Renato.
Acessa o link abaixo, pois nesta postagem eu falei sobre as diferenças das três placas do Shield WiFi ESP8266 que tem no mercado:
https://blogmasterwalkershop.com.br/embarcados/esp8266/shiald-e-shield-wifi-esp8266-sera-que-tem-diferenca/
No final da postagem tem o link para uma outra postagem que explica a causa do problema neste shield que você tem (Moer) e qual o procedimento para solucionar.
Euler, bom dia!
A descrição é Shield Version 1.0, com “E”.
Olá Renato.
Confirma por favor: próximo aos pinos digitais do shield vem escrito “More info & tech…”, no seu shield, a palavra “More” está escrita Moer? Com o shield acoplado ao Arduino e todas as vias da DIP switch na posição OFF, você consegue carregar códigos no Arduino ou dá erro na IDE?
Se a resposta for sim para ambos questionamentos, então quer dizer que esse shield que você possui, tem um defeito de fabricação e que não permite que o shield se comunique com o Arduino através da serial nativa (pinos D0 e D1).
Bom dia!
Na minha IDE (1.8.6) não existe as opções de placas NodeMCU como demonstrado nas figuras, somente existem placas Arduino.
Como faço para resolver isso?
Olá Renato.
Provavelmente você ainda não instalou o pacote do ESP8266 na IDE do Arduino.
Acesse o link abaixo e siga os passos a partir de “Instalando o pacote ESP8266 na IDE:”:
https://blogmasterwalkershop.com.br/embarcados/nodemcu/nodemcu-configurando-a-ide-do-arduino/
Euler, bom dia!
Consegui instalar o pacote na IDE do Arduino e segui todos os passos. Depois de carregar os códigos no shield e no Arduino (utilizo um Arduino Mega ADK) consegui identificar o IP do shield em meu servidor DHCP e ao acessar o IP via navegador obtenho a resposta “A MasterWalker Shop se preocupa com o seu aprendizado!”
Mas não tenho nenhum retorno no Monitor Serial.
O que poderia estar causando isso?
Utilizo o Arduino Mega ADK e IDE 1.8.6
Olá Renato.
Verificou se os pinos na linha “SoftwareSerial serialESP8266” estão definidos como 0 e 1? O rodapé do monitor serial está configurado conforme a imagem do link abaixo?
https://blogmasterwalkershop.com.br/wp-content/uploads/2018/08/img12_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze.jpg
Olá!
Os pinos estão descritos corretamente no código e o monitor serial está configurado conforme a imagem.
Abraço
Olá Renato.
Vou precisar pesquisar, pois se fez tudo conforme os passos desta postagem, deveria ter obtido o mesmo resultado final mostrado no vídeo do final da postagem.
Olá Renato.
Verifique no seu shield se perto do botão ESP-RST está escrito “Shield Version 1.0″ ou se está escrito “Shiald Version 1.0″.
Assim que verificar, passa aqui no blog e comenta pra me informar.
Fiz o passo a passo mas no meu só aparece assim:
⸮⸮⸮⸮>⸮I⸮⸮P⸮⸮
…⸮⸮⸮⸮⸮>⸮I⸮⸮P⸮⸮
…………………………………
⸮⸮⸮⸮>⸮I⸮⸮P⸮⸮
.
⸮⸮⸮⸮>⸮I⸮⸮P⸮⸮
…
tem ideia do que possa ser?
Olá Juliana.
Nos vários testes que fiz com o shield junto ao Arduino, em nenhum momento ocorreu erro parecido com esse que relatou.
O rodapé do monitor serial está configurado conforme a imagem do link abaixo?
https://blogmasterwalkershop.com.br/wp-content/uploads/2018/08/img12_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze.jpg
Já tentou recarregar o código no shield e testar novamente?