Atualização de FLASH na ESP-01 utilizando Arduino

ESP-01

Neste artigo será detalhado um passo a passo para atualizar a versão de firmware na memória flash do módulo WIFI ESP8266 ESP-01, utilizando apenas o módulo, jumpers e um Arduino UNO.

 

É muito comum quem utiliza o módulo WI-FI ESP-01 encontrar problemas devido à variedade de versões de firmware disponíveis para download, o que pode gerar problemas em comandos AT, baud rate, entre outros. Então uma boa forma de depurar algum defeito na resposta desse módulo é atualizar o firmware, de preferência utilizar a versão indicada no manual de comandos AT da Expressif.

 

Nesse manual há um tópico “Downloading AT Firmware into the Flash” que indica o link e recomenda as versões de arquivos binários para cada tamanho de flash. Por isso, é interessante verificar o tamanho da flash do seu módulo (vou explicar mais adiante) e utilizar os arquivos certos.

 

Componentes necessários

 

  • Jumpers;
  • Arduino – Interface Serial USB;
  • ESP-01;
  • ESP FlashDownloader;
  • ESP Firmware.

 

Conexões para Atualização de firmware

 

A interface escolhida para a gravação foi o Arduino UNO, pois é um item comum para makers. Por segurança é possível tirar o chip ATMEGA da placa, para apenas utilizar o conversor Serial/USB (opção possível apenas para UNO com ATMEGA PTH, neste caso retirar o chip com cuidado para não entortar os terminais).

 

Arduino utilizado com Interface USB-Serial
Figura 1 - Arduino utilizado com Interface USB-Serial (Fonte: autor)

 

Embora a alimentação de 3,3 V que o Arduino fornece possa ser utilizada para algum teste com a ESP-01, é recomendado utilizar uma fonte externa pois o módulo WIFI sempre demanda uma corrente que pode oscilar entre 70 e 300 mA, sendo que o 3,3 V do Arduino fornece no máximo 50 mA. Essa disparidade de corrente pode gerar problemas nas respostas dos comandos AT’s que podem confundir o usuário.

 

Há 2 ligações necessárias entre o ESP-01 e o Arduino, para o processo de update e comunicação, são elas:

 

Modo de BOOT

 

Conexão Modo BOOT
Figura 2 - Conexão Modo BOOT (Fonte: autor, elaborado no software fritzing)

 

Modo de comunicação

 

Conexão Modo Comunicação
Figura 3 - Conexão Modo Comunicação (Fonte: autor, elaborado no software fritzing)

 

Observe que a única conexão diferente entre as duas é que no modo boot o pino GPIO0 é ligado ao GND.

 

Primeiramente, para conferir a versão atual do seu módulo faça a conexão modo comunicação, abra a IDE do Arduino, verifique em qual porta COM ele se encontra, abra o monitor Serial, se tudo estiver OK digite o comando AT+GMR e verifique a versão:

 

Verificando versão do módulo ESP-01
Figura 4 - Verificando versão do módulo ESP-01 (Fonte: autor)

 

Esse é um modo para verificar a versão do seu módulo antes de começar, mas você pode pular esta etapa se quiser, pois há casos em que o ESP-01 não está respondendo a este comando ou mesmo com a firmware corrompida, então, é possível passar para o próximo passo do update.

 

Gravando a Flash

 

Para fazer o download do firmware na Flash do módulo wifi é necessário ter o Flash Download Tool.

 

Tela de download da ferramenta
Figura 5 - Tela de download da ferramenta (Fonte: autor)

 

Antes de qualquer coisa, desligue a alimentação do módulo, mude a conexão para “Modo BOOT”, e religue a alimentação. Abra o ESP Flash downloader, irão aparecer 2 janelas como as da figura, primeiro é necessário mudar a porta COM em “Download Panel 1”, mudar a taxa de comunicação (padrão do ESP-01 é 115200, mas se não der certo pode tentar outras), e clicar em START.

 

Tela da Download Flash Tool
Figura 6 – Tela da Download Flash Tool (Fonte: autor)

 

É importante fechar o monitor serial do Arduino ou outro programa utilizado na porta COM senão dá este erro:

 

Erro devido a porta COM ocupada
Figura 7 – Erro devido a porta COM ocupada (Fonte: autor)

 

Estando tudo OK o software vai sincronizar com seu módulo e dar informações de MAC address e flash size:

 

Sincronização OK, o programa e o módulo estão comunicando
Figura 8 - Sincronização OK, o programa e o módulo estão comunicando (Fonte: autor)

 

Na Figura 8 é possível ver que o flash size do módulo utilizado é 8 Mbit, logo serão baixados os arquivos indicados pelo documento de comandos AT (aquele pdf que citei antes) para 8 Mbit (se o módulo for 4 Mbit utilizar outros arquivos):

 

Arquivos binários para flash de 8 Mbit
Figura 9 - Arquivos binários para flash de 8 Mbit (Fonte: autor)

 

Recomendo fortemente conferir e utilizar os arquivos binários que o Manual indica pois, teoricamente todos os comandos AT do documento vão funcionar com este firmware. Antes de seguir, baixe o pacote com os arquivos binários e o download do pacote de arquivos de firmware.

 

Informações para download da versão oficial de firmware da Espressif
Figura 10 - Informações para download da versão oficial de firmware da Espressif

 

Dentro da pasta bin, estarão todos os arquivos necessários:

 

Arquivos binários para gravação de firmware
Figura 11 - Arquivos binários para gravação de firmware (Fonte: autor)

 

Seguindo os arquivos indicados pelo manual, em “Download Path Config” procure por todos os arquivos e preencha os endereços de memória corretos, habilite a opção “SpiAutoSet”, escolha o Flash Size correto, e clique em START para iniciar a gravação.

 

 Os arquivos binários devem ser gravados nos endereços de memória corretos
Figura 12 – Os arquivos binários devem ser gravados nos endereços de memória corretos (Fonte: autor)

 

Se tudo estiver certo o download começará:

 

Download em andamento
Figura 13 – Download em andamento (Fonte: autor)

 

Download completo:

 

Download finalizado
Figura 14- Download finalizado (Fonte: autor)

 

Por fim, volte a conexão para o modo comunicação, desligue o 3,3 V para resetar o módulo, e ligue novamente. Abra o monitor serial do Arduino para checar os comandos AT, e se tudo está OK.

 

Testes de comando AT para verificar nova versão
Figura 15 - Testes de comando AT para verificar nova versão (Fonte: autor)

 

Saiba mais

 

Primeiros Passos com WEMOS D1 R1 com ESP8266EX embutido

Programando o ESP8266 em C no Eclipse

ESP8266 com Arduino

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Alexandre Felipe de Oliveira
Formado em Engenharia Mecatrônica, atua como pesquisador e professor assistente na Faculdade de Engenharia de Sorocaba (FACENS). Experiente na área eletrônica e um entusiasta da área de programação, Alexandre é mestrando pelo Instituto de Ciência e Tecnologia de Sorocaba (ICTS) da UNESP com a linha de pesquisa de aprendizado de máquina. https://www.linkedin.com/in/alexandre-oliveira-4638265a/

Deixe um comentário

avatar
 
  Notificações  
Notificar