Como usar com Arduino – Módulo WiFi ESP8266 ESP-01

Como usar com Arduino – Módulo WiFi ESP8266 ESP-01

img00_como_usar_com_arduino_-_modulo_wifi_esp8266_esp-01_uno_mega_2560_nano_internet_automacao_residencial_android_rele_web_server

– Descriçã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.

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. Além disso, para utilizar o código desta postagem a velocidade de comunicação serial do ESP8266 deverá estar  definida em 9600 bauds. Se você adquiriu um de nossos KITs que acompanha o ESP-01 ou adquiriu separadamente o ESP-01 em nossa loja e não enviou nenhum código para o módulo, o mesmo já vai estar com o firmware que aceita comandos AT e com a velocidade definida em 9600 bauds, logo, você pode prosseguir na prática. Caso você tenha adquirido o ESP-01 em outra loja ou já tenha carregado algum código no módulo, acesse a postagem Upgrade de Firmware do WiFi ESP8266 ESP-01 através do Arduino e Conversor USB Serial, execute os passos e em seguida retorne para continuar. Um outro ponto importante é que este tutorial e os demais aqui do Blog que envolvam ESP8266 ESP-01, foram todos executados com a versão preta da placa ESP-01 (possui 8Mb = 1MB de memória flash). Se você possui a versão azul do ESP-01, este tutorial e os demais aqui do Blog não serão compatíveis, pois esta versão possui apenas 4Mb = 512KB de memória flash, o que é insuficiente para carregamento dos firmwares / códigos disponibilizados.

– Especificações e características:

– Controlador: ESP8266
– Tensão de operação / nível lógico: 3.3VDC
– Suporte a redes: 802.11 b/g/n
– Potência de saída: +20dBm no modo 802.11b
– Alcance: ~90m
– Taxa de dados: 250kbps a 2Mbit
– Consumo em Standby: <1.0mW
– Processador: Arm 32 bits
– Comunicação: Serial
– Comunicação: TCP / UDP
– Criptografia: OPEN / WEP/WPA_PSK / WPA2_PSK / WPA_WPA2_PSK
– Temperatura de operação: -40 a 125º celsius

– 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 Módulo WiFi ESP8266 ESP-01 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 com Cabo USB
01 – Módulo WiFi ESP8266 ESP-01
01 – LED Difuso 5mm Vermelho
01 – Resistor de 150Ω
01 – Opção 01 de divisor de tensão (R1 = 1KΩ e R2 = 2.2KΩ)
01 – Opção 02 de divisor de tensão (R1 = 1KΩ e R2 = 1KΩ)
01 – Opção 03 de divisor de tensão (R1 = 10KΩ e R2 = 10KΩ)
01 – Resistor de 10KΩ

01 – Protoboard
05 – Cabos Jumper macho-macho
05 – Cabos Jumper macho-fêmea

OBS: deixei disponível três opções de divisores de tensão. Caso o ESP-01 não funcione bem (acuse erros de comunicação no monitor serial) com a opção 03, por exemplo, monte com a opção 01 ou a opção 02.

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

img01_como_usar_com_arduino_-_modulo_wifi_esp8266_esp-01_uno_mega_2560_nano_internet_esp01s

– 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:

Download WiFiEsp

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

OBS: se no monitor serial retornar TIMEOUT, Cannot initialize ESP module ou No tag found, verifique as conexões do circuito na protoboard, principalmente no divisor de tensão e demais resistores, pois pode haver mau contato e isto está comprometendo o funcionamento do circuito. Caso não queira usar circuitos em protoboard para conectar o ESP-01 ao Arduino e não ter problemas de mau contato, recomendo utilizar o Adaptador Conector 3.3V / 5V para o Módulo WiFi ESP8266 ESP-01. Aqui no Blog temos a postagem Simplificando a conexão entre o Módulo WiFi ESP8266 ESP-01 e o Arduino que ensina a utilizar o adaptador.

– 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:
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 64 comentários para esta postagem
  1. Luca Azalim às 22:23

    Olá Euler,

    Recebo o seguinte retorno ao abrir o monitor serial:

    22:22:25.743 -> [WiFiEsp] Initializing ESP module
    22:22:26.758 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:28.770 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:30.788 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:32.779 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:34.798 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:35.786 -> [WiFiEsp] Cannot initialize ESP module
    22:22:41.814 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:44.345 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:45.870 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:45.903 -> [WiFiEsp] No tag found

    Alguma ideia do que posso estar fazendo de errado?

  2. Carlos Alberto Porto às 19:04

    Prezado Euler:
    Boa Noite!
    De fato, se comprarmos este módulo de vocês ele já vem com o “firmware”?
    Agradeço antecipadamente pela atenção.
    Carlos Porto

  3. Murilo às 17:06

    Olá Euler,

    Eu tb estou com esse problema e não consigo resolver.
    Já atualizer firmware de comandos AT e já refiz todas as ligações.

    monitor serial:

    22:22:25.743 -> [WiFiEsp] Initializing ESP module
    22:22:26.758 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:28.770 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:30.788 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:32.779 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:34.798 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:35.786 -> [WiFiEsp] Cannot initialize ESP module
    22:22:41.814 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:44.345 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:45.870 -> [WiFiEsp] >>> TIMEOUT >>>
    22:22:45.903 -> [WiFiEsp] No tag found

    • Euler Oliveira Autor às 08:55

      Olá Lucas.

      Agradeço pelo comentário!

      A conexão é estabelecida com ou sem uso da serial. Na serial é apenas mostrada as informações da conexão.

      Este código possui IP dinâmico, logo, basta usar o IP definido no código para acessar a placa através do navegador.

  4. lucas às 21:54

    Boa noite, estou acrescentando novos comandos, as vezes aparece o seguinte:

    [WiFiEsp] New client 0
    [WiFiEsp] TIMEOUT: 45

    Ai o programa trava, como faço para corrigir esse problema e tambem para caso ocorra esse problema esse desconectar o client?

    • Euler Oliveira Autor às 09:36

      Olá Lucas.

      Agradeço pelo comentário!

      Pode ser que as novas linhas de código que adicionou podem estar conflitando com outras partes do código.

  5. floyd Manjate às 10:14

    Euler Oliveira! foi uma bencao mesmo encontrar teu blog, tenho esse modulo a 1 ano e ainda nao consegui fazer uma pagina web com ele. hoje mesmo mais logo irei testar o seu codigo e direi algo qualquer coisa. entro em contacto. se possivel peco o seu email. abraco.

      • floyd Manjate às 17:40

        Ola Euler!

        nao consigo conectar o esp a minha rede!
        Resposta no serial monitor:

        [WiFiEsp] Failed connecting to hot
        [WiFiEsp] Initializing ESP module
        [WiFiEsp] >>> TIMEOUT >>>
        [WiFiEsp] Warning: Unsupported firmware
        [WiFiEsp] Failed connecting to hot
        [WiFiEsp] Failed connecting to hot
        [WiFiEsp] Failed connecting to hot
        [WiFiEsp] Failed connecting to hot
        [WiFiEsp] Failed connecting to hot

        • Euler Oliveira Autor às 18:02

          Olá Floyd.

          Agradeço pelo comentário!

          Recomendo que verifique se inseriu corretamente no código os dados da rede WiFi e se definiu a taxa de comunicação em 9600 bauds para comunicação entre o ESP-01 e o Arduino.

          Confira também o esquema de ligação.

  6. Gustavo às 13:39

    Ola, deu tudo certo mas quando insiro o endereço IP dado pelo monitor serial no meu navegador, diz “Não é possivel acessar esse site” e que a conexão foi recusada, o que posso fazer para corrigir isso?

  7. Márcio Bastos às 10:49

    Bom dia!
    Parabéns pelo trabalho de vocês!

    Gostaria de saber se é possível converter o IP para um domínio qualquer?
    Estou tentando usar através do Jarvis.(comandos web)

  8. Ramon às 22:59

    Também estou tendo o TIMEOUT, ja atualizei a firmware do ESP e mesmo assim continua o problema, acredito que o problema possa ser com o divisor de tensão. Aliás, como funciona esse divisor de tensão, pq não faz diferença 1k ou 10k?

    • Euler Oliveira Autor às 10:55

      Olá Ramon.

      Agradeço pelo comentário!

      O problema de TIMEOUT geralmente ocorre devido a mau contato na protoboard, seja no divisor de tensão ou nas demais conexões.

      Faz diferença sim o valor do resistor, mesmo que a saída de tensão do divisor seja igual ao usar resistores de valor mais baixo ou de valor mais alto. Quando se usa resistores de valores muito baixos a dissipação de potência em cada resistor vai ser alta e a eficiência da malha será baixa, além disso, a malha de resistores irá exigir da fonte uma corrente muito alta.

      A malha de resistores deve consumir uma concorre bem menor que a corrente máxima de saída que pode ser fornecida pelo divisor de tensão. Se tratando do Arduino e plataformas similares, não há necessidade de montar um divisor que forneça um valor alto de corrente na saída. Os valores de divisores mencionados na postagem atendem perfeitamente ao ESP8266.

  9. Andreas às 16:11

    Olá Euler

    Não entendi ainda qual IP devo utilizar, gateway padrão? Máscara de sub-rede, ou endereço IPv4? O meu endereço IPv4 é 192.168.0.14, qual IP devo usar?

    • Euler Oliveira Autor às 16:48

      Olá Andreas.

      Agradeço pelo comentário!

      Você deve usar um endereço IP (IPV4) disponível dentro da sua rede.

      Se o DHCP estiver ativado no seu roteador, vai ter uma faixa de IP que é usada para identificar cada dispositivo na rede, logo, você deve atribuir ao código um IP desta faixa.

  10. Delcleciano às 11:23

    Bom Dia, eu resolvi o problema de ontem que dizia que eu estava tendo conflito com duas Serial , eu tentei em um outro computador baixei a ide de novo passei o código e tentei compilar quando copilei tive problemas no monitor serial , onde ele me acusava um erro de timeout igual do pessoal acima , ae ve que você pediu pro pessoal atualizar o firmware, mas não estou conseguindo atualizar , ele fica dando fail toda vez que aperto em start no flash dowload esp , já verifiquei as portas coloquei COM 3,2,1 e la no gerenciador de dispositivos o Arduíno ta como porta 3 e mesmo assim da fail, eu não possuo o adaptador serial, seria esse o motivo deu não conseguir atualizar o modulo wifi?? sem dizer que o modulo wifi esta com as duas luzes acessas tanto a vermelha como a azul.

    Não sei se pode ser esse o problema também mas meu push button é de 12x12x7.3 o que você utiliza no passo a passo é de 6x6x7 isso altera alguma coisa ??

    • Euler Oliveira Autor às 14:41

      Se montou o esquema de ligação com Arduino conforme a postagem, tem que funcionar.

      A não ser que o ESP-01 esteja com problema.

      Se estiver utilizando o Adaptador Conector 3.3V / 5V para o Módulo WiFi ESP8266 ESP-01, basta conectar o ESP-01 ao mesmo, ligar RX ao RX (0) do Arduino, o TX ao TX (1) do Arduino e alimentar o VCC e GND. Lembrando que no Arduino não pode estar sendo executado nenhum código que utilize a serial, pois a placa serve como ponte.

      • Delcleciano às 18:21

        Então pode ser que o modulo wifi aparenta estar com problemas mesmo, bem que poderia ter um jeito pra verificar mas acho que não tem, já o esquema de ligação esta idêntico ao da imagem se não tivesse certo as luzes do modulo wifi nem acenderiam as luzes azul e vermelha .

        Estou preocupado, pois mesmo se eu comprar outro modulo wifi e ele não funcionar vou ficar no prejuízo , e acredito que se eu comprar o Adaptador Conversor USB Serial TTL PL2303HX pra poder atualizar o meu modulo que já possuo, pode ser que ainda não consiga atualizar o firmware.

        Irei analisar melhor a situação pra vê o que compensa fazer, e muito obrigado pela ajuda mesmo com os problemas ganhei alguns conhecimentos .

    • Euler Oliveira Autor às 22:40

      Olá Pericles.

      Agradeço pelo comentário!

      Qual versão do Arduino está usando?

      Se for o Mega 2560, mude Serial1 para outro nome em todo o código.

  11. Rogerio às 23:31

    Boa noite, Excelente site e parabéns pela atenção dispensada nos comentários. Acredito que ajuda bastante leigos como eu. Alguem saberia o que pode ser?
    Grato.

    23:20:35.653 -> [WiFiEsp] Initializing ESP module
    23:20:39.210 -> [WiFiEsp] Initilization successful – 1.5.4
    23:20:40.230 -> [WiFiEsp] IP address set 192.168.2.30
    23:20:55.270 -> [WiFiEsp] Failed connecting to rtoliveira
    23:21:11.316 -> [WiFiEsp] Failed connecting to rtoliveira
    23:21:27.338 -> [WiFiEsp] Failed connecting to rtoliveira
    23:21:43.392 -> [WiFiEsp] Failed connecting to rtoliveira
    23:21:59.423 -> [WiFiEsp] Failed connecting to rtoliveira

  12. fabio às 15:13

    ola eu aumentei para 4 portas, a memoria do arduino acusa 40% ocupada mas mesmo assim demora a carregar as paginas, o que poderia ser? preciso acionar 4 reles usando o arduino e o esp01 mas ta meio dificil viu

  13. Adelson às 15:22

    Olá, com esse tutorial conseguiu fazer minha esp funcionar obrigado.

    Fiquei com uma duvida, quanto uso mais de 3 if com get ele começa a não responder e dar timeout, parece que ele não encerra a conexão, sabe se é alguma limitação da esp01 ?

    já tentei de algumas maneiras porem com mais de 3 comandos fica muito intermitente

    if (buf.endsWith(“GET /LT”)) { //LigaTV
    comando = 1;
    }else
    if (buf.endsWith(“GET /LH”)) { //LigaHome
    comando = 2;
    }else
    if (buf.endsWith(“GET /LGR”)) { //Liga lampada do guarda roupa
    comando = 3;
    }else
    if (buf.endsWith(“GET /LP”)) { //Liga Projetor
    comando = 4;
    }else
    if (buf.endsWith(“GET /P1”)) { //Liga muda o source
    comando = 5;
    }

  14. Martins às 11:29

    Olá.
    Estou tentando usar conexão MQTT usando Arduino MEGA 2560 + ESP01WIFI.
    usando a biblioteca PubSubCliente eu consigo acessar o broker e publicar em um tópico, mas quando assino um tópico não recebo as mensagens publicadas.
    Acompanhando o código, verifiquei “setCallback” não está chamando a função “pack” definida no código conforme linha abaixo:

    MQTT.setCallback(pack);

    Será que tem como me ajudar?

    Obrigado

  15. Henning às 19:03

    Eu fiz a gravação no ESP-01S usando o arduino UNO deu tudo certo. Problema é quando conecto o ESP no módulo relé e alimento com 5v, o bicho acende a luz vermelha e nada. Quando volto pra o esquema de alimentação/gravação com arduino e bicho funciona. Alguma dica pessoal?

    • JOSÉ ANTONIO às 20:48

      Boa noite Henning. Segui exatamente o que foi proposto e está funcionando perfeitamente, tive que atualizar o firmeware para isso usei adaptador usb serial com ch340 que eu já tinha. Com o arduíno desconectado do usb e alimentado por um fonte externa é que a brincadeira ficou mais gostosa, os comandos foram aceitos tanto no pc quanto no celular e a resposta é praticamente instantânea só não dá para para acompanhar no monitor serial, somente plugado na usb. Abraço.

  16. JOSÉ ANTONIO às 20:26

    Boa noite Euler. Quero deixar aqui o meu muito obrigado! Recentemente adquiri um esp01 com a intensão de usar com o arduíno uno e então começou minha frustração ao não conseguir conectar no Wifi. Vale ressaltar que sou totalmente leigo no ramo de programação e o contato com o arduíno surgiu da necessidade de por um dispositivo de segurança para vento forte no seguidor solar que fabriquei no qual tenho seis módulos de 340w cada. Usando um programa achado na internet consegui por para funcionar perfeitamente e minha intensão com o esp é poder monitorar a velocidade do vento via WiFi e se possível alterar também os parâmetros tais quais: velocidade máxima de acionamento, velocidade mínima para desligar e controlar tempo. O seu projeto está funcionado perfeitamente, esse já foi o primeiro passo. Muito obrigado!

  17. Ricardo às 21:38

    Meus parabéns, procurei por vários canais como conectar o arduino uno com esp8266 no WiFi, sem sucesso depois de varias tentativas, mas com seus esquemas e explicações, consegui direto sem problemas com facilidade, muito obrigado mesmo, que continuem este importante trabalho de ensinar e ajudar resolver problemas, compartilhar conosco estes valiosos conteúdos !!!

  18. RODRIGO TEIXEIRA FIGUEIRA às 14:21

    Boa tarde Euler,

    Muito bom esse post. Consegui fazer esse modelo funcionar apenas no arduino UNO. Mas quando fui montar o circuito no arduino MEGA, ele não funcionou.

    Ja alterei de Serial1 para mySerial1.

    o erro que aparece é o mesmo erro de antes de atualizar o firmware do esp01

    [WiFiEsp] Initializing ESP module
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] Cannot initialize ESP module
    [WiFiEsp] >>> TIMEOUT >>>
    [WiFiEsp] No tag found

    consegue me ajudar?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *