terça-feira, junho 29, 2021

Gravando Firmware "AT" no Módulo ESP-01 (ESP8266)

Uma coisa que pode fazer falta no PiPico é a comunicação WiFi, o módulo ESP-01 me pareceu uma solução pequena e barata. Em uma primeira abordagem vou usar o firmware que trabalha com "comandos AT" (explico já). Embora normalmente este firmware já venha instalado, eu achei que era fácil gravar e resolvi ter certeza que tinha a versão mais recente. E aí se foram seis horas, a maior parte de frustração...


Comandos AT

Os "comandos AT" foram uma invenção dos anos 80, inicialmente para comandar modems. Por exemplo, o comando ATDP99999999 fazia o modem discar para o número "99999999" e tentar conectar. Uma vez estabelecida uma conexão os comandos AT deixam de tratados, com a comunicação ficando transparente entre as duas pontas.  Com o tempo a ideia foi se expandindo para outros dispositivos.

No caso do ESP8266, a ExpressIf criou um firmware onde é possível usar comandos AT para configurar o WiFi, fazer conexões UDP e TCP, etc. 

O Hardware

Do ponto de vista de hardware, a gravação do ESP8266 (e do ESP32) é razoavelmente simples. Basta ressetar com determinados pinos em níveis lógicos pré definidos e o ESP entra num modo para gravação através da serial.

Existem alguns detalhes, como o fato do ESP8266 trabalhar a 3,3V, a necessidade de um adaptador serial USB para conectar a um PC, etc. Para simplificar eu comprei um adaptador serial específico para o ESP-01.

A primeira dificuldade é que o adaptador que eu comprei não prevê o uso como programador. A solução é simples: acrescentar um botão entre o pino GPIO0 e GND. Aí basta manter o botão apertado enquanto conecta o adaptador ao micro para entrar no modo programação.

O Software de Gravação (Windows)

Esta parte é simples: basta baixar daqui. Para rodar, basta expandir tudo e disparar o .exe. Onde a coisa complica é que o diretório de documentação está vazio e o software não é exatamente intuitivo...

Para atrapalhar, parece que o software andou mudando e a maioria dos posts na internet faz referência às versões antigas.

O Firmware

Aqui foi onde a coisa engrossou. Minha primeira tentativa foi procurar a versão mais nova no site da ExpressIf. No momento é a versão 2.2.0.0. As Release Notes falam que as versões 2 usam o RTOS e as anteriores não; inicialmente achei que isso era uma vantagem. Tem até um User Manual no zip, mas ele é mais voltado ao ESP32 e as telas são de uma versão antiga do software de gravação. Tem diversos arquivos .bin, teoricamente bastaria gravar o que está no diretório factory no endereço zero. Deu erro. A outra forma seria gravar os vários pedaços nos devidos endereços (o que não está bem documentado).

Depois de algum tempo brigando percebi que este firmware não é adequado ao ESP-01. Em primeiro lugar, aparentemente foi feito para o módulo ESP-WROOM-02, que tem 2MBytes de Flash (também conhecidos como 16Mbits). O ESP-01 tem 1MByte (8 Mbits). Em segundo lugar, este firmware usa pinos diferentes para a carga de software e a comunicação via comandos AT. O ESP-01 é minimalista também na quantidade de pinos disponíveis, portanto não daria para ligar.

Voltando a buscar na internet, achei um vídeo que falava em pegar o firmware no site da AI-Thinker e um post no blog da FilipeFlop com um link para uma versão bem antiga do SDK que incluía o firmware. O grande problema é que o ESP8266 já está meio fora de moda e a maioria dos posts são bem antigos.

Foi aí que resolvi procurar a versão atual do SDK e achei duas: a com RTOS e a sem (NONOS). Dentro do NONOS tem duas versões, uma para quem tem 2MB ou mais e outra para quem tem menos. Resumindo o firware está aqui (pelo menos no momento).

O Caminho das Pedras

  1. Instale o botão no adaptador e aperte o botão quando for conectar o adaptador no micro para gravar.
  2. Baixe o SDK do github e expanda num diretório qualquer (no meu caso C:\ESP8266_NONOS_SDK)
  3. Baixe o software de gravação daqui, expanda e execute o flash_download_tool_xxx.exe
  4. Selecione ESP866, develop, clique OK, preencha a tela como abaixo (acerte o port conforme o seu ambiente) e clique em START
  5. Profit!



Nenhum comentário: