Guia do Usuário do ESP8266 36

São tantos módulos ESP8266 e adaptadores que muitas vezes geram uma grande confusão e dúvidas sobre a utilização deles. Neste tutorial Guia do Usuário do ESP8266 iremos sanar as dúvidas mais frequentes que recebemos, mostrando as formas de programação com ESP8266, tipos de adaptadores e suas funções, circuitos de exemplo, modos de utilização e etc.

Estudando este Guia do Usuário do ESP8266 você estará apto a começar a desenvolver com ESP8266 sem complicações e posteriormente avançar nos estudos criando novos projetos.

O que é o ESP8266

O ESP8266 é um chip. Um chip que revolucionou o movimento maker por seu baixo custo e rápida disseminação. O que mais chama atenção é que ele possui WiFi possibilitando a conexão de diversos dispositivos a internet (ou rede local) como sensores, atuadores e etc.

Chip ESP8266

Para facilitar o uso desse chip, vários fabricantes criaram módulos e placas de desenvolvimento. Essas placas variam em tamanho, número de pinos ou tipo de conexão com computador. Para saber mais sobre as diversas variações de módulos do ESP8266 certifique-se de abstrair o máximo de informações do artigo Qual módulo ESP8266 comprar?

Veja no diagrama a seguir como é a composição de alguns módulos e placas mais comuns baseadas no ESP8266. Note que existem placas que utilizam o chip diretamente e não utilizam módulos, como é o caso do Wemos D1 Mini Pro.

Placas ESP8266

No decorrer deste guia do usuário do ESP8266 iremos focar na variação ESP-01 do ESP8266, pois é a versão que gera mais dúvidas. As dúvidas mais frequentes sobre esse módulo são qual modo de operação utilizar, como programar, e como montar um circuito para utilização.

ESP8266 versão ESP-01

A versão ESP-01 é a versão mais comum do ESP8266. Foi o primeiro módulo a ser disseminado e usado pelos makers. É a versão mais básica, contendo o mínimo de pinos. Isso significa que para utilizar esse módulo faz-se necessário o uso de mais componentes externos.

Veja abaixo o formato e pinagem desse módulo.

Pinagem ESP-01

Modos de Operação ESP-01

Existem dois principais modos de operação do ESP-01. Vai depender do seu gosto, facilidade ou finalidade, qual modo de operação escolher.

Modo 1 – Comandos AT

No modo Comandos AT, o módulo possui instalado um programa chamado “Firmware Comandos AT”. Esse programa tem uma função pré-determinada que é receber comandos de operação via UART(pinos TX e RX). Nesse modo, o ESP-01 deverá trabalhar em conjunto com um microcontrolador. O microcontrolador será o responsável por enviar os comandos AT para o ESP-01. A placa Arduino possui um microcontrolador capaz de realizar esses comandos. O Firmware Comandos AT já vem instalado de fábrica podendo estar em diferentes versões, mas pode ser atualizado caso venha com uma versão antiga. Veremos sobre gravação e atualização do firmware mais a frente.

Existem comandos específicos para cada tarefa do ESP-01. Por exemplo o comando AT+CWJAP_CUR é utilizado para conectar o módulo a uma rede WiFi. Veja mais alguns comandos comuns na tabela abaixo:

Tabela Comandos AT

Se você for utilizar este modo, é muito importante verificar o manual oficial de comandos AT. No manual você encontra todos os comandos possíveis, descrição de cada comando e outras informações úteis. Sempre verifique a versão do manual para não pegar um manual antigo e ocorrer de um comando não funcionar.

Na data de escrita deste tutorial o manual está na versão V2.2 datado em fevereiro de 2018 (2018.02).

Release Notes

Comandos que não são mais usados e não funcionam estão indicados como deprecated informando qual o comando atual.

Informação comando deprecated

Quando utilizar o modo Comandos AT?

Esse modo pode ser utilizado quando você tem em mãos o módulo ESP-01 mas quer usar mais pinos em seu projeto, utilizando então o ESP-01 em conjunto com um Arduino. Assim você desenvolve seu projeto usando mais portas digitais, analógicas, expandindo a possibilidade de desenvolvimento.

Modo 2 – Standalone

No modo Standalone, o ESP-01 trabalha como um microcontrolador por si só, sem a necessidade de um microcontrolador externo. O software pode ser totalmente customizado de acordo com as necessidades de uso. É possível utilizar a IDE Arduino, criar um programa básico pisca LED e gravar no módulo. É possível também utilizar as bibliotecas de WiFi para ESP8266 e desenvolver o software em cima delas, criar web servers e muito mais.

Esse modo é muito utilizado com as placas de desenvolvimento como NodeMCU, pois possuem mais pinos tornando os projetos mais interessantes e livres para customizações. Mas nada impede de também utilizar com ESP-01.

Quando utilizar o modo Standalone?

Quando não faz-se necessário o uso de um microcontrolador externo e quando é interessante customizar o software programado no ESP-01 para que realize diversas funções diferentes.

Particularmente eu comecei com ESP8266 utilizando comandos AT. Mas assim que descobri que poderia utilizá-lo em modo standalone, programa-lo via IDE Arduino, customizando o código da forma que queria, não utilizei mais comandos AT em projetos. Atualmente só utilizo o modo comando AT para teste de funcionamento dos módulos.

Tipos de Adaptadores para ESP-01

Existem diversos tipos de adaptadores para ESP-01. O uso de adaptadores não é obrigatório mas podem facilitar o desenvolvimento. Adaptadores têm funções diversas como facilitar o uso, converter níveis de sinal, facilitar programação, adicionar interface USB-serial e etc.

Na loja FILIPEFLOP temos dois tipos de adaptadores. Veja a seguir:

Adaptador UART para Módulo WiFi ESP-01

Adaptador UART

Esse adaptador expõe os pinos VCC, GND, TX e RX do módulo ESP-01. Também faz a conversão de nível lógico entre 5V e 3,3V que é a tensão de trabalho do ESP-01. Sendo assim, é totalmente seguro conectar esse adaptador diretamente ao Arduino que trabalha em 5V por exemplo.

É um adaptador ideal se você deseja usar o ESP-01 em modo Comandos AT juntamente com o Arduino, pois para este modo necessitamos apenas dos pinos TX e RX.

Adaptador USB para Módulo WiFi ESP-01

Adaptador USB

Esse adaptador fornece uma interface USB-serial ao ESP-01. Com ele é possível utilizar o ESP-01 conectado ao USB do computador ou até mesmo a uma Raspberry Pi. Da mesma forma como o adaptador anterior, ele é utilizado com firmware de comandos AT.

De fábrica, não é possível gravar firmware AT ou qualquer outro programa com estes adaptadores. É necessário fazer uma pequena modificação colocando uma chave on/off entre o pino GPIO0 e GND.

Modificação Adaptador

Mais informações sobre este adaptador e modificação você encontra neste post.

Guia do usuário do ESP8266: Como utilizar ESP-01 em modo Comandos AT

Para este exemplo utilizaremos o adaptador UART para ESP-01 juntamente com o Arduino como microcontrolador auxiliar que irá enviar os comandos AT para o ESP-01. Veja a seguir a pinagem e o esquema de ligação:

Tabela Pinagem

Circuito

Então carregue o seguinte programa no Arduino:

//Programa: Comandos AT com ESP8266
//Guia do Usuario do ESP8266

#include <SoftwareSerial.h>

//RX pino 2, TX pino 3
/*
 * Adaptador      Arduino
 *    RX      ->   3(TX)
 *    TX      ->   2(RX)
 */
SoftwareSerial esp8266(2, 3);

#define DEBUG true

void setup()
{
  Serial.begin(9600);
  esp8266.begin(115200); // baud rate padrão do ESP8266
  Serial.println("** Verificando conexão **");
  Serial.println();
  delay(1000);
  sendData("AT\r\n", 2000, DEBUG);
  delay(1000);
  Serial.println("** Versão de firmware **");
  Serial.println();
  delay(1000);
  sendData("AT+GMR\r\n", 2000, DEBUG); // rst
  Serial.println();
  Serial.println("** Final **");
}

void loop() {}

String sendData(String command, const int timeout, boolean debug)
{
  // Envio dos comandos AT para o modulo
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      // The esp has data so display its output to the serial window
      char c = esp8266.read(); // read the next character.
      response += c;
    }
  }
  if (debug)
  {
    Serial.println(response);
  }
  return response;
}

ATENÇÃO! Note que todo comando AT é seguido dos caracteres ‘\r’ e ‘\n’. Isso está expressamente indicado no manual de comandos AT na página 6, juntamente com a informação sobre o baud rate default 115200 e outras instruções sobre comandos AT.

Instruções comandos AT

O resultado poderá ser visto pelo serial monitor:

Guia do Usuário do ESP8266

Além das informações neste guia do usuário do ESP8266, veja outros dos nossos tutoriais sobre comandos AT com ESP8266:

ESP8266 com Arduino

Upgrade de Firmware do ESP8266

E veja também o post sobre como programar o ESP8266 em modo standalone pela IDE Arduino com o adaptador USB.

Gostou do Guia do Usuário do ESP8266? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial. 

Deixe uma resposta

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

36 Comentários

  1. Como adquirir este exemplar

    1. Olá José!
      A foto de capa do post(artigo/guia) foi só uma ilustração, mas o guia é o próprio post.
      Esse guia(post/artigo), é para os usuários que desejam iniciar projetos com ESP8266. Explica conceitos básicos para formar uma base de conhecimento necessária para avançar nos estudos.

      Qualquer dúvida conte conosco!

      Giovanni Bauermeister
  2. ESP-01 em modo de operação standalone: um dispositivo com WiFi, com MCU programável contendo GPIO a um baixo preço.
    Gostaria de saber: é possível utilizar diversos ESP-01 em uma única rede WiFi, não necessariamente tendo acesso a internet, apenas sinal de um roteador? Utiliza-los como sensores remotos por WiFi sendo controlados por uma central mestre (arduino, raspberry ou CLP, a escolha) com acesso ao mesmo WiFi? Onde nessa central iria um servidor, por exemplo.

    1. Olá Italo!

      É totalmente possível! Existem diversas formas de chegar a esse objetivo. O ESP8266 pode atuar como cliente ou servidor, criar hotspot ou se conectar a um.
      Poderia existir uma Raspberry Pi como servidor/roteador/hostpost e vários ESPs poderiam conectar-se a ela obtendo um endereço de IP. Poderia ser usado MQTT, HTTP, etc, etc…

      Abraço e bons projetos!

      Giovanni Bauermeister
  3. Olá, estou usando um esp 01 com adaptador uart, mas nem ferrando eu consigo usar. Faço o acesso como na sugestão ai, e aparece que está ok, e a versão, mas quando tento conectar a minha rede ele diz: esp is not responding ..
    grato
    espero conseguir entender
    não sou dá área..

    1. Olá Sandro!

      Por gentileza, poderia me dizer a versão do firmware que seu ESP-01 tem e também quais os comandos AT que está utilizando?

      Giovanni Bauermeister
  4. Parabéns a equipe de vocês!! Evoluindo a cada dia.

    Marco Antônio Vaccaro
    1. Valeu Marco!

      Abraços!

      André – Equipe FilipeFlop

  5. gostaria de saber como eu envio dados para rede através da esp. estou usando o arduino mega, junto com a esp. mas não estou conseguindo enviar dados.

    1. Veja alguns outros exemplos que temos sobre enviar dados pela rede:

      https://www.filipeflop.com/blog/alarme-de-incendio-com-esp8266-esp-12e/
      https://www.filipeflop.com/blog/acelerometro-com-esp8266-nodemcu/

      Faça um estudo de cada tutorial e entenda como enviar dados pela rede.

      Baixe também nosso guia IoT para iniciantes. Lá também tem algumas dicas de como enviar dados pela rede.

      https://www.filipeflop.com/blog/guia-iot-para-iniciantes-em-eletronica/

      Giovanni Bauermeister
  6. Para a criação de um wearable utiliza-se uma placa de desenvolvimento ou um módulo?

    1. Olá Eduardo!

      Geralmente wearables são dispositivos pequenos como smartwatches, smart glasses, etc.
      Então eu diria que o ideal seria utilizar o chip diretamente em uma placa customizada. Mas para protótipo também poderia ser usado o módulo.

      Veja este projeto, por exemplo, usando o chip em uma PCB customizada: https://www.youtube.com/watch?v=ve8lzYSVnGo

      Veja também o hardware wearable da MiBand:
      https://image.slidesharecdn.com/bleandroid-160508083106/95/wearable-device-bluetooth-low-energy-ble-connect-with-android-20-638.jpg?cb=1462696657

      E veja o exemplo de wearables do IoT Makers usando um módulo ESP-12:
      http://iotmakers.com.br/esp8266/iot-for-wearables-espwear/

  7. Olá comprei uma placa com 4 relés e tem esse módulo esp-01 wi-fi não consigo acessar pelo wifi tem como acessar pelo celular ela tipo um roteador.

    João Paulo vezzoni
    1. Olá João!

      Você pode dar uma olhada neste tutorial, que explica como o EPS-01 funciona:
      https://www.filipeflop.com/blog/esp8266-arduino-tutorial/

      Abraços!

      André Rocha – Equipe FilipeFlop

      1. Essa placa esp bom 4 relés. Possui um MCU associado que junto com o Esp01 comanda os relés. Parece que esse Esp01 tem um firmware ESPEasy. Tb não consigo fazê-la funcionar. Tenho uma documentação enviada pelo fabricante se quiserem posso disponibilizar. Meu e-mail: jflaviorabelo@gmail.com. Estou a didposição.

  8. Como faço para o ESP01 aparecer na biblioteca do Fritzing?

    WILLIAN RICARDO RITTER
    1. Olá Willian!

      Nós adicionamos a imagem depois.

      Abraços!

      André Rocha – Equipe FilipeFlop

  9. olá!

    o meu fica assim:

    ** Verificando conexão **

    ÿ¡µÔ2‰’U&‚
    ** Versão de firmware **

    ¡µÕQ
    ‘^ª¡ø

    ** Final **

    já tentei de N maneiras arrumar e n vai, poderia me dar uma luz?

  10. Obrigado pelo tutorial bem completo.

    1. Olá,

      É muito bom saber que gostou do nosso trabalho!

      Abraço!
      Rosana – Equipe FilipeFlop

      1. Olá, eu estou aprendendo a mexer nessa área ainda, mas não consigo de nenhuma forma compilar o código, está exatamente igual a esse, mas toda vez aparece o seguinte erro: ‘SoftwareSerial esp8266’ redeclared as different kind of symbol.
        Oque eu devo fazer?

        1. Gustavo,

          Esse erro acontece porque a variável “esp8266” está em conflito em alguns pontos do código. Em softwareSerial troque esp8266 por outro nome para testar. E então em esp8266.begin, troque o esp8266 pelo nome que você alterou antes.

          Abraços!
          Diogo – Equipe FilipeFlop

  11. Olá, teria como utilizar um Esp8266 como access point, mandar as informações de um sensor para a página Web Esp e ler essas informações em outra rede. Tendo em vista que o local onde o sensor e o Esp irão ficar não tem internet e não é viável o deslocamento até lá sempre que se precisa dos dados.
    Desde já agradeço.

    1. Olá!

      Teoricamente você poderia enviar seus dados para a nuvem e recuperá-los no seu receptor (como PC por exemplo)

      Abraços!
      Diogo – Equipe FilipeFlop

  12. Boa noite querido. Eu consigo enviar comandos AT por um NoDe MCU? Grande abraço.

    1. Marcelo,

      É possível sim 🙂

      Abraços!
      Diogo – Equipe FilipeFlop

  13. Olá Pessoal,

    comprei hoje mesmo com vocês o kit ESP8266 + o adaptador, porém, usando o código de voces, o ESP nao responde nada..

    já tentei várias portas e vários baud rates, mas nada do ESP responder. Agluma sugestao?

    abs

    1. os prints na serial do arduino ficam assim:

      20:16:02.094 -> ** Verificando conexão **
      20:16:02.144 ->
      20:16:05.123 ->
      20:16:06.075 -> ** Versão de firmware **
      20:16:06.123 ->
      20:16:09.103 ->
      20:16:09.103 ->
      20:16:09.103 -> ** Final **

    2. Jefferson,

      Qual erro vem apresentando?

      Abraços!
      Diogo – Equipe FilipeFlop

      1. Entao Diogo.

        Não apresenta erro algum.

        O sketch compila certinho.. faz o upload.. mas nao recebe nada na serial configurada.

        Os pinos estao corretos, o ESP está alimentado.. tudo correto.. conferi várias vezes pra ter certeza… mas nao há nenhum retorno do ESP.

        Testei em outras portas tb, pra ver se mudava algo e nada tb..

        A porta que estou usando funciona, pois testei num outro sketch que tenho aqui com um display LCD nela..

        1. Parece que o ESP veio sem firmware.. existe essa possibilidade?

          1. Jefferson,

            Talvez seu ESP não esteja sendo reconhecido. Se possível, testar seguindo esse link: https://www.filipeflop.com/blog/esp8266-arduino-tutorial/

            Abraços!
            Diogo – Equipe FilipeFlop

            Diogo Zimmermann
  14. Olá, abaixo separei dois trechos que não entendi do programa, sou iniciante e estou aprendendo.

    sendData(“AT\r\n”, 2000, DEBUG); // Não entendi o formato dessa mensagem, porque o número 2000?

    // também não consegui compreender bem o que o trecho abaixo faz. Poderia explicar linha por linha?
    String sendData(String command, const int timeout, boolean debug)
    {
    // Envio dos comandos AT para o modulo
    String response = “”;
    esp8266.print(command);
    long int time = millis();
    while ( (time + timeout) > millis())
    {
    while (esp8266.available())
    {
    // The esp has data so display its output to the serial window
    char c = esp8266.read(); // read the next character.
    response += c;
    }
    }
    if (debug)
    {
    Serial.println(response);
    }
    return response;

  15. Boa tarde. Teria alguma forma de eu programar o ESP-01 pela IDE arduino sem a utilização de algum adaptador?

    1. Álefe,

      Você pode usar com Arduino: https://www.filipeflop.com/blog/esp8266-arduino-tutorial/

      Abraços!
      Diogo – Equipe FilipeFlop