Gravando o ESP8266-01 na IDE Arduino

ESP8266 na IDE Arduino.

Os módulos ESP8266 são muito poderosos e bem conhecidos dos profissionais e hobistas da área de eletrônica. Hoje vamos falar sobre o módulo mais básico dessa família, o ESP8266-01, e como podemos desenvolver firmware para ele fazendo upload direto da IDE do Arduino.

 

 

Requisitos

 

Para utilizarmos o ESP8266 na IDE do Arduino é necessário que o pacote do módulo esteja instalado. Na versão atual da IDE (1.6.12) o pacote já vem instalado, nas versões anteriores (a partir da versão 1.6.4) este pacote pode ser instalado manualmente. Caso precise fazer essa instalação basta seguir esses passos bem simples:

  • Ir em Arquivo/Preferências e no campo “URLs Adicionais de Gerenciamento de Placas” inserir o link do pacote ESP8266, depois clique em OK.
  • Ir em Ferramentas/Placa:/Gerenciador de Placas. Procure pelo pacote do ESP8266 e instale.
  • Em Ferramentas/Placa agora devem aparecer várias versões dos módulos ESP.

 

Para fazer a comunicação com o módulo precisaremos de um conversor USB-Serial, eu irei utilizar o conversor que usa o chip FT232R da FTDI.

 

Pode ser necessário fazer a compatibilização de tensão de 5V para 3,3V, mais a frente daremos opções de como fazer isso e os itens necessários.

 

Para iniciar o ESP8266-01 em modo de programação pela serial iremos precisar de ao menos 2 botões e 3 resistores de 10KR.

 

 

Configuração

 

Com o pacote instalado, devemos ir em Ferramentas/Placa: e selecionar o primeiro item “Generic ESP8266 Module”.

 

Volte em ferramentas e verifique se a configuração está como na imagem a seguir. Se não estiver, configure os campos que estiverem diferentes. Você deverá escolher a porta correspondente ao conversor USB-Serial que irá usar.

 

Configuração do módulo ESP8266-01 na IDE Arduino
Figura 1 - Configuração do módulo ESP8266-01 na IDE Arduino

 

Vamos fazer o upload do exemplo Blink do ESP8266 para fazer a demostração. Para isso vamos em Arquivo/Exemplos/ESP8266/Blink.

 

Exemplo de Blink led usando ESP8266.
Figura 2 - Exemplo de Blink led usando ESP8266.

 

Este exemplo deverá piscar o led azul do módulo ESP8266-01 que é ligado ao GPIO1 (compartilhado com o pino TX da serial).

 

Para fazer o upload do exemplo para o módulo é importante que tenhamos comunicação serial entre a IDE e o módulo e que o módulo esteja em modo de programação pela serial.

 

Para fazer a comunicação utilizamos um conversor USB-Serial FT232. A grande vantagem de utilizar este conversor é que ele tem um regulador interno de 3,3V, o que possibilita alimentarmos o ESP a partir dele e elimina a necessidade de um conversor de nível para a linha serial (5V – 3,3V). Para fazer com que o conversor funcione com 3,3V existe na placa um jumper para configuração. É muito importante checar esse jumper antes de iniciar as ligações.

 

Módulo FT232 e detalhe de jumper e saída de 3,3V
Figura 3 - Módulo FT232 e detalhe de jumper e saída de 3,3V.

Neste momento é importante reforçarmos que o módulo ESP funciona com 3,3V, portanto, a ligação de 5V em seus pinos de alimentação, IOs ou serial pode danifica-lo permanentemente.

 

Além da comunicação, precisamos colocar o módulo em modo de programação serial, fazemos isso reiniciando o módulo com o GPIO0 em nível baixo. Para isso precisamos de dois botões, um para o reset e outro para o GPIO0 (o reset também é acionado em nível baixo), e alguns resistores para usar como pull up.

 

Abaixo segue o circuito utilizado para fazer a gravação do ESP-01.

 

Ligação do FT232 com o ESP-01
Figura 4 - Ligação do FT232 com o ESP-01.

 

É possível utilizar outro conversor USB-Serial para fazer a gravação, para isso será necessário usar um regulador de tensão para 3,3V para alimentar o ESP, podemos utilizar o regulador LM1117-3,3. Para a comunicação serial, devemos fazer a conversão do nível que vem do pino TX do conversor para o RX do ESP, podemos utilizar um conversor de nível lógico ou um simples divisor resistivo.

Abaixo vemos o esquema de montagem para gravação do ESP-01 usando um outro conversor USB-Serial. Utilizamos o LM1117-3,3 como regulador e dois resistores (180R e 330R) ligados à linha TX do conversor fazendo o divisor resistivo.

 

Ligação de conversor USB-Serial com ESP-01 e regulador LM1117
Figura 5 - Ligação de conversor USB-Serial com ESP-01 e regulador LM1117.

 

 

Upload do firmware

Com o circuito montado e devidamente testado, voltamos a IDE do Arduino. Com o Blink aberto, mantemos pressionado o botão correspondente ao GPIO0 e damos um pulso no botão correspondente ao reset do ESP-01.

 

Devemos perceber que o led azul do ESP-01 pisca, neste momento ele está em modo programação via serial, podemos soltar o botão do GPIO0.

 

Na IDE, mandamos fazer o upload de firmware e aguardamos o termino da gravação.

 

IDE Arduino fazendo o upload de firmware do ESP-01
Figura 6 - IDE Arduino fazendo o upload de firmware do ESP-01.

 

Se tudo correu bem, devemos ver o módulo ESP8266-01 piscando o led azul.

 

Blink no ESP8266-01 pelo Arduino IDE.
Figura 7 - Blink no ESP8266-01 pelo Arduino IDE.

 

 

Conclusão

 

Neste artigo vimos como utilizar a IDE do Arduino para programar o ESP8266-01 e como gravar o módulo pela própria IDE. Agora você já tem a ferramenta para criar seus códigos direto no ESP. Oque pretende fazer com ela? Deixe seu comentário falando sobre seus projetos e ideias com o ESP-01. Grande abraço e até a próxima.

Formado em Engenharia Elétrica com ênfase em Eletrônica pela Universidade São Judas Tadeu em 2014, atua em São Paulo com desenvolvimento de sistemas embarcados para controle de acesso. Apaixonado por eletrônica e sistemas embarcados, teve seu primeiro contato com microcontroladores no ensino técnico em 2008 e desde então utiliza-os em suas "invenções".
  • Igor

    Segui um passo-a-passo semelhante ao descrito no seu tutorial e o código funcionou corretamente. No entanto, quando eu tento incluir a biblioteca ESP8266WiFi.h para fazer algo mais sofisticado, começo a ter problemas.
    Mantive o mesmo código que você apresentou e só acrescentei um #include no início. A IDE compilou e fez o upload normalmente. Porém o ESP8266 para de executar o código para piscar o LED, e fica resetando a cada 8 segundos mais ou menos. Pela serial, recebo a seguinte mensagem:

    ets Jan 8 2013,rst cause:4, boot mode:(3,7)

    wdt reset
    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    v09f0c112
    ~ld

    Alguma ideia do que pode está acontecendo?

    • Josemar

      Ola Igor.

      A versão atual do pacote para usar o ESP na IDE do arduino é a 2.3.0, eu tive alguns problemas de conexão com essa versão mas não esse que você está mencionando.

      A versão 2.2.0 do pacote não apresentou nenhum problema, faça o downgrade do pacote no gerenciador de placas do arduino e veja se resolve seu problema.

  • Wellington Passos

    Seguidos estes passos e realizada a programação com sucesso, como retornar o ESP-01 ao modo de operação por comandos AT? Estou levando em conta que não foi necessário gravar nenhum tipo de bootloader antes de seguir este passo-a-passo.