Guia do Usuário do ESP8266: conceitos básicos - MakerHero

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

Faça seu comentário

Acesse sua conta e participe

36 Comentários

  1. 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.makerhero.com/blog/esp8266-arduino-tutorial/

      Abraços!
      Diogo – Equipe MakerHero

  2. 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;

  3. 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 MakerHero

      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.makerhero.com/blog/esp8266-arduino-tutorial/

            Abraços!
            Diogo – Equipe MakerHero

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

    1. Marcelo,

      É possível sim 🙂

      Abraços!
      Diogo – Equipe MakerHero

  5. 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 MakerHero

  6. Obrigado pelo tutorial bem completo.

    1. Olá,

      É muito bom saber que gostou do nosso trabalho!

      Abraço!
      Rosana – Equipe MakerHero

      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 MakerHero

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

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

    1. Olá Willian!

      Nós adicionamos a imagem depois.

      Abraços!

      André Rocha – Equipe MakerHero

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

    1. Olá João!

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

      Abraços!

      André Rocha – Equipe MakerHero

      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: [email protected]. Estou a didposição.

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

  11. 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.makerhero.com/blog/alarme-de-incendio-com-esp8266-esp-12e/
      https://www.makerhero.com/blog/acelerometro-com-esp8266-nodemcu/

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

  12. Parabéns a equipe de vocês!! Evoluindo a cada dia.

    1. Valeu Marco!

      Abraços!

      André – Equipe MakerHero

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

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

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