Comunicando o Shield WiFi ESP8266 com o Arduino através da Serial Nativa

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:

img01_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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

img02_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

img03_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

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”;:

img04_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

No menu “Ferramentas” selecione a opção “Placa” e selecione o “NodeMCU 1.0 (ESP-12E Module)”:

img05_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

Ainda no menu “Ferramentas”, selecione a opção “Porta” e marque a porta COM em que sua placa foi alocada:

img06_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

img07_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

img08_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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.

img09_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

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.

img10_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

img11_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

img12_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:

img13_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

Retorne ao monitor serial e veja que uma nova informação foi carregada:

img14_comunicando_o_shield_wifi_esp8266_com_o_arduino_atraves_da_serial_nativa_shiald_uart_wangtongze

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:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 31 comentários para esta postagem
  1. Ediplo às 00:02

    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??

  2. Nikolas às 10:44

    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.

  3. Sergio às 11:39

    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?

  4. Sergio às 12:47

    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?

    • Euler Oliveira Autor às 08:21

      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.

  5. Pedro Tonin às 04:03

    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

    • Euler Oliveira Autor às 08:39

      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!!!

  6. Matheus às 16:50

    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?

    • Euler Oliveira Autor às 18:21

      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.

  7. Leonardo às 10:00

    Bom dia parceiro, meus parabéns pelo trabalho, teria o arquivo desse projeto no Fritzing? A primeira parte ali, para ligação Node_MCU

    • Euler Oliveira Autor às 10:44

      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.

  8. Renato às 16:40

    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

    • Euler Oliveira Autor às 17:32

      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é.

  9. Renato às 09:45

    Euler, bom dia!

    A descrição é Shield Version 1.0, com “E”.

    • Euler Oliveira Autor às 10:39

      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).

  10. Renato às 10:35

    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?

  11. Juliana às 10:09

    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?