Simplificando a conexão entre o Módulo WiFi ESP8266 ESP-01 e o Arduino

Simplificando a conexão entre o Módulo WiFi ESP8266 ESP-01 e o Arduino

Nesta postagem você vai aprender a conectar o ESP-01 de uma forma bem simples ao Arduino e sem ter que se preocupar em montar circuitos complicados para atribuir conexão sem fio a sua placa.

Atribuir conexão sem fio ao Arduino se tornou algo simples de ser feito após a chegada do ESP8266 e o desenvolvimento de bibliotecas para comunicar as duas plataformas. A única parte mais complicada é que a conexão entre as duas plataformas exige o uso de conversor de nível lógico ou de resistores, e estas conexões irão exigir uso de protoboard e vários jumpers.

Na imagem abaixo você pode ver o esquema de ligação convencional entre o Arduino e o ESP-01 para atribuição de conexão WiFi e acionamento de um LED conectado ao Arduino:

img01_simplificando_conexao_entre_o_modulo_wifi_esp8266_esp-01_arduino_adaptador_3.3v_5v_rx_tx_ams1117_uno_nano_mega_due

Observe que são utilizados pelo menos três resistores, protoboard e nove jumpers para que toda montagem possa ficar completa. É fato que circuitos estão aí para serem montados com um propósito final, contudo, dependendo do circuito que o usuário implementar, poderá se deparar com problemas de mau contato, ainda mais se precisar ficar transportando o projeto para vários locais.

Com o intuito de facilitar a conexão do Arduino ao ESP8266 modelo ESP-01, podemos utilizar o Adaptador Conector 3.3V / 5V para o Módulo WiFi ESP8266 ESP-01:

img02_simplificando_conexao_entre_o_modulo_wifi_esp8266_esp-01_arduino_adaptador_3.3v_5v_rx_tx_ams1117_uno_nano_mega_due

O grande diferencial deste adaptador está na possibilidade de ligar o ESP-01 diretamente ao Arduino sem que seja necessário montar divisor de tensão ou usar conversor de nível lógico para trabalhar com os 5V do Arduino e 3.3V do ESP8266. Basta acoplar o ESP-01 ao adaptador e fazer a conexão ao Arduino utilizando jumpers:

img03_simplificando_conexao_entre_o_modulo_wifi_esp8266_esp-01_arduino_adaptador_3.3v_5v_rx_tx_ams1117_uno_nano_mega_due

Na imagem abaixo você pode ver o esquema de ligação similar ao primeiro esquema que foi mostrado, contudo, desta vez utilizando o adaptador como intermédio para conexão entre o Arduino e o ESP-01:

img04_simplificando_conexao_entre_o_modulo_wifi_esp8266_esp-01_arduino_adaptador_3.3v_5v_rx_tx_ams1117_uno_nano_mega_due

Veja que foram utilizados apenas quatro jumpers para fazer a conexão do ESP-01 ao Arduino. O adaptador possui os pinos GND (alimentação), VCC (alimentação), TX (conexão serial) e RX (conexão serial). A alimentação do adaptador é feita com 5V, pois o mesmo já possui um regulador de tensão AMS1117 que abaixa a tensão de 5V para 3.3V. Além disso, o adaptador já conta com componentes que garantem estabilidade no fornecimento de tensão e corrente para funcionamento do ESP8266 ESP-01.

É importante ressaltar que, para que o ESP-01 possa se comunicar com o Arduino e atribuir conexão WiFi, é necessário que o módulo esteja com um firmware que permita o envio de comandos AT. Acesse a postagem Upgrade de Firmware do WiFi ESP8266 ESP-01 através do Arduino e Conversor USB Serial e veja como instalar a versão de fimrware no ESP-01 que permite o envio de comandos AT. Em seguida retorne para continuar.

Considerando que o seu ESP-01 esteja com firmware de comandos AT e que já esteja acoplado ao adaptador que está conectado ao Arduino através de jumpers, faça download da biblioteca abaixo e em seguida faça instalação da mesma no IDE do Arduino:

Download WiFiEsp

Se você não sabe como importar bibliotecas no IDE do Arduino, leia a postagem Arduino – Importando bibliotecas para a IDE e em seguida retorne para continuar.

Copie o código abaixo e cole no IDE do Arduino:

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,2,110)); você deverá substituir o IP 192,168,2,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) 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.

A página web possui um botão que será responsável por ligar / desligar o LED conectado ao pino 13 do Arduino. Pressione o botão para acender / apagar o LED e veja que o estado atual é atualizado na página.

Veja no vídeo abaixo o resultado final:

Bem simples né?! A partir de agora você pode implementar com muita facilidade os seus projetos utilizando o Arduino integrado ao ESP8266 ESP-01 através do uso deste adaptador.

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
Perfil no Instagram: https://www.instagram.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 38 comentários para esta postagem
  1. Roberto às 18:39

    Boa noite. Achei ótimo o post. Sou iniciante em microcontroladores e fiquei com as seguintes duvidas:
    1 – o sketch mencionado deve ser instalado no arduino ou no esp01?
    2 – é possível atualizar o firmware do esp01 usando o adaptador usb próprio para este fim?
    3 – eu poderia usar as portas 0 e 1 que já são a tx e Rx em vez de mudar para 6 e 7. Se sim como proceder?
    Agradeço muito a ajuda.

  2. Fernando vieira às 20:43

    Olá pessoal, será que consegue me ajudar? Estou com o mesmo problema que teve com o esp-01.
    Atualizei o firmware tentei com os bancos db4free, clever e um mysql local (XAMPP) e volta o mesmo erro:

    [WiFiEsp] Connecting to 85.10.205.173
    20:50:34.029 -> [WiFiEsp] TIMEOUT: 46
    20:50:37.872 -> ERROR: Timeout waiting for client.
    20:50:37.918 -> Error: -1 = Conexão SQL falhou.
    20:50:40.914 -> Conectando SQL novamente.

    Já tentei mudar bibliotecas wifi, fazer testes simples só de conexão com o banco e nada vai, já estou a 5 dias quebrando a cabeça e não saio mais do lugar, não sei mais o que tentar.

    Vc conseguiu resolver esse problema?

  3. Carlos Henrique às 09:07

    Sei que já faz um tempo rs mas to tendo o mesmo problema de “[WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] Cannot initialize ESP module ”

    agora e consegui resolver invertendo o numero dos pinos na linha

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

    Aparentemente, a ordem no código é TX,RX, então, coloquei 7,6 e funcionou

    Talvez tenha alguma outra solução melhor, mas to iniciando agora e foi o jeito que descobri kk

    Ah, estou usando esse adaptador
    https://www.masterwalkershop.com.br/adaptador-conector-33v-5v-para-o-modulo-wifi-esp8266-esp-01

  4. Júlio Rocha às 19:25

    Boa noite! Excelente tutorial! Fiz tudo corretamente, mas a página no browser não abre…

    Seja com ip static ou com o exemplo que partilho no link (onde também testei um exemplo no arduino), a pagina não abre.

    printscreen: https://cdn.radaresdeportugal.pt/img2/5fda874b00915.jpg

    Obrigado pela ajuda e parabéns pelo seu blog!

    Editado: seja no seu projeto ou no exemplo na imagem, com a alteração de 9600 ou 115000 a página não abre na mesma.
    Obrigado pela ajuda.

  5. Júlio Rocha às 19:22

    Editado: Acrescento ainda que mudei a taxa para 115000, mas com 9600 a página também não abria…

    • angelo às 05:27

      o meu esta dando essa falha ao compilar

      error: conflicting declaration ‘SoftwareSerial Serial1’

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

      ^

      In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.33.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:233:0,

      from sketch\sketch_may11a.ino.cpp:1:

      C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.33.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/HardwareSerial.h:147:25: note: previous declaration as ‘HardwareSerial Serial1’

      extern HardwareSerial Serial1;

      ^~~~~~~

      exit status 1
      conflicting declaration ‘SoftwareSerial Serial1’

      o que seria??

      • Euler Oliveira Autor às 11:36

        Olá Angelo.

        Agradeço pelo comentário!

        Código testado neste instante e está funcionando perfeitamente.

        Verifique se você possui as bibliotecas necessárias conforme o tutorial requer.

  6. Camila às 00:02

    Boa noite, seria possível implementar uma senha para proteger a página dos comandos?

  7. Pingback: Arduino e ESP01 não se conectam – Diário do Arduino
    • Euler Oliveira Autor às 10:18

      Olá.

      Agradeço pelo comentário!

      No tutorial tem a seguinte informação:

      É importante ressaltar que, para que o ESP-01 possa se comunicar com o Arduino e atribuir conexão WiFi, é necessário que o módulo esteja com um firmware que permita o envio de comandos AT. Acesse a postagem Upgrade de Firmware do WiFi ESP8266 ESP-01 através do Arduino e Conversor USB Serial e veja como instalar a versão de fimrware no ESP-01 que permite o envio de comandos AT. Em seguida retorne para continuar.

      Ou seja, já é informado que precisa de determinada versão de firmware e no tutorial de upgrade do firmware é ensinado como alterar a taxa de comunicação para 9600 bauds para que funcione com o Arduino.

  8. Aluizio às 15:01

    Boa Tarde,

    Tutorial ótimo. Bem detalhado.

    Atualizar o firmware ou não?

    O meu ESP8266 é a placa “preta” e a versão que estou usando é a 1.1.0.0.
    Pode ser usada esta versão?

    Nesta placa do ESP8266 consigo enviar os comandos AT ja utilizados em outros projetos.
    Segue a versão do ESP8266:

    AT+GMR
    AT version:1.1.0.0(May 11 2016 18:09:56)
    SDK version:1.5.4(baaeaebb)
    compile time:May 20 2016 15:08:19

    Porém, mesmo trocando o divisor de tensão e trocando a velocidade para 9600 apresenta “TIME OUT” conforme segue:

    WiFiEsp] Initializing ESP module
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] Cannot initialize ESP module
    [WiFiEsp] >>> TIMEOUT >>>
    Grato,
    Aluizio

    • Euler Oliveira Autor às 08:41

      Olá Aluizio.

      Agradeço pelo comentário!

      Trocando o divisor de tensão? Mas o uso do adaptador mencionado na publicação não exige uso de divisor de tensão.

      Aparentemente a versão de firmware que possui já é suficiente para uso com a WiFiEsp.

  9. silmar às 11:07

    Boa tarde, aqui foi o unico local que consegui algo com eu ESP01, porém recebo uma linha no monitor assim:
    [WiFiEsp] Warning: Unsupported firmware 0.9.5
    qual versao devo usar e onde encontro ela?
    obrigado

    • Euler Oliveira Autor às 16:26

      Olá Silmar.

      Agradeço pelo comentário!

      No oitavo paragrafo do texto é informado sobre a versão do firmware para execução da prática.

  10. Rodrigo Silva às 09:00

    o meu esta dando essa falha ao compilar

    error: conflicting declaration ‘SoftwareSerial Serial1’

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

    ^

    In file included from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.33.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:233:0,

    from sketch\sketch_may11a.ino.cpp:1:

    C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.33.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/HardwareSerial.h:147:25: note: previous declaration as ‘HardwareSerial Serial1’

    extern HardwareSerial Serial1;

    ^~~~~~~

    exit status 1
    conflicting declaration ‘SoftwareSerial Serial1’

    o que seria??

  11. Alessandro às 19:45

    O meu não funciona, já mudei varias variáveis e fica apenas,
    [WiFiEsp] Initializing ESP module
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] Cannot initialize ESP module
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] No tag found

    Qual o erro?

    • Euler Oliveira Autor às 10:02

      Olá Alessandro.

      Agradeço pelo comentário!

      Já conferiu se seu ESP-01 está com o firmware correto?

      • Giulia às 14:48

        Oi,

        estou com o mesmo problema que o Alessandro e já coloquei o firmware correto.
        Você tem uma ideia do que pode ser?

        Giulia.

        • Euler Oliveira Autor às 18:23

          Olá Giulia.

          Agradeço pelo comentário!

          O firmware que carregou no ESP-01 é o disponível no tutorial aqui do Blog? Se sim, deveria funcionar, considerando que fez as conexões corretas e utilizou o código exatamente como está na postagem.

    • Victor de Almeida Souza às 20:09

      Eai amigo, vc conseguiu solucionar o problema?

      • Victor de Almeida Souza às 20:51

        Para resolver este erro basta mudar a comunicação pra 9600, usando este comando: AT+UART_DEF=9600,8,1,0,0. Esta no final da postagem sobre download de firmware.
        Muito obrigado ao blog pelo conteúdo muito util.

    • Mario às 16:38

      Boa tarde
      O meu acontece exatamente o mesmo…repeti o procedimento várias vezes e nada.
      Quando meu ESP01 está no adaptador USB (após o upgrade de firmware) todos os comandos AT funcionam perfeitamente.
      Quando conecto o ESP01 no adaptador MW (8266) e plugo no protoboard para o arduino controlar, fica piscando o led AZUL intermitente e o vermelhor fica aceso porém ocorre essa série de TIMEOUTs. Já troquei baudrate, TX,. RX e nada.

      O que fazer?

      • Euler Oliveira Autor às 18:11

        Olá Mario.

        Agradeço pelo comentário!

        O firmware que carregou no ESP-01 é o disponível no tutorial aqui do Blog? Se sim, deveria funcionar, considerando que fez as conexões corretas e utilizou o código exatamente como está na postagem.

  12. Delcleciano às 19:04

    Opa, Boa noite, o código não esta compilando esta dando o seguinte erro

    Foram encontradas múltiplas bibliotecas para “SoftwareSerial.h”
    Usado: C:\Users\delcl\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.3\libraries\SoftwareSerial
    Não usado: C:\Users\delcl\Documents\Arduino\libraries\EspSoftwareSerial
    exit status 1
    conflicting declaration ‘SoftwareSerial Serial1’

    eu pensei que fosse algo relativo na montagem e comprei o adaptador Wifi no shop de voces , para ter menos cabo, e acabou que no fim continuei tendo o mesmo erro, o que faço para resolver o problema??

    • Euler Oliveira Autor às 19:17

      Olá Delcleciano.

      Agradeço pelo comentário!

      A mensagem de erro já informa o motivo:

      Foram encontradas múltiplas bibliotecas para SoftwareSerial.h

      Se você instalou no IDE do Arduino alguma versão da biblioteca SoftwareSerial, esta é a causa do problema, pois a SoftwareSerial é nativa do IDE e se adicionar uma segunda SoftwareSerial irá dar erro na compilação do código.

      O erro em questão não tem nada haver com o adaptador.

      • Paiva às 19:40

        Boa noite fico feliz e deverá alegre em anúncios tão bons e de alta intensidade de ensino muito obrigado. A. Paiva

        • Euler Oliveira Autor às 09:25

          Olá Paiva.

          Agradeço pelo comentário e reconhecimento!

          Vlw!!!

  13. Ramon Misse às 12:02

    Aquele outro tipo de adaptador que liga na protoboard, também dispensa o uso do divisor de tensão?

  14. Keyce às 18:15

    Oi, Euler
    Incrível post, obrigada pela ajuda!

    Gostaria de saber se suas ilustrações foram feita no Fritzing?
    Se sim, pode disponibilizar o arquivo deste adaptador?

    Obrigada!!!

    • Euler Oliveira Autor às 19:53

      Olá Keyce.

      Agradeço pelo comentário!

      O Adaptador não foi feito no fritzing.

  15. EMERSON JULIO às 16:40

    Exatamente o que eu preciso!

    Em breve investirei nas placas ESP32!

    Obrigado pela ajuda!

  16. EMERSON JULIO às 15:34

    Boa tarde!

    Obrigado por mais um conteúdo de ótima qualidade!

    Estava precisando de algo do gênero para implementar em um projeto para o curso, mas esbarrei em um problema, a aplicação ficou muito grande, ocupa 94% de memória no Arduino (já com as dicas desse post implementadas) e fica instável ou não roda.
    Fica a pergunta, é possível gravar essa conexão diretamente no ESP8266 e recuperar informações da aplicação que está rodando no arduino?
    *Seriam 2 códigos, um de conexão diretamente no ESP8266 e outro no arduino coletando dados dos sensores.

    Obrigado!