Gravação de Firmware no ESP8266

Introdução
Se o seu módulo ESP8266 não está respondendo a comandos AT e você já verificou muitas vezes seu circuito, seu código e até as configurações do monitor serial, é possível que ele esteja sem o firmware de comandos AT. O firmware é apagado quando um código é gravado diretamente no módulo, assim como os códigos antigos são apagados em placas Arduino ao gravar um novo código.
De toda forma, é possível regravar o firmware de comandos AT no módulo de maneira simples, permitindo que você volte a usar o módulo.
Lista de Materiais

Lista completa de produtos
comprar
Módulo WiFi - ESP8266

Adaptador para ESP8266

Conversor USB x UART

Chave Momentânea (PushButton) - Pacote com 10 unidades

Resistor 10kΩ - Pacote com 10 unidades

Mini Protoboard 170 Pontos - Branca

Cabo USB Micro B 80cm

Jumpers Macho-Macho x40 Unidades
Circuito de Gravação
Para realizar a gravação do firmware no módulo, monte o circuito da imagem a seguir:

O jumper entre o pino IO0 e o GND é necessário para que o módulo entre em modo de gravação. Portanto, após conectar o conversor USB-UART na USB do seu computador, pressione o botão do circuito (para reiniciar a placa) e mantenha o jumper conectado.
Outro jumper ao qual você deve se atentar é o do próprio conversor USB-UART, que deve estar conectado entre o pino central e o pino de 5 V (como na imagem acima). Não se preocupe com o fato de o módulo ESP8266 operar em 3,3 V, pois o adaptador para ESP8266 possui regulação de tensão (no pino VIN) e conversão de nível lógico, para facilitar a integração com conversores USB e as placas Arduino mais populares.
Além disso, vale lembrar que para o conversor USB-UART ser reconhecido corretamente em seu computador, é necessário instalar o driver USB.
Gravação do Firmware
Para realizar a gravação do firmware, é necessário baixar uma ferramenta da própria ESPRESSIF (fabricante do ESP8266). Essa ferramenta pode ser baixada diretamente através do botão abaixo:
Download do "Flash Download Tool"Observação: Infelizmente, essa ferramenta só é compatível com computadores que utilizam o sistema operacional Windows.
Ao acessar o link do botão acima, clique sobre o botão de download (demarcado em vermelho na imagem abaixo) na seção "Flash Download Tools" da página. Assim que o arquivo compactado for baixado, descompacte-o em um diretório acessível do seu computador (como a "Área de Trabalho", por exemplo). Com a pasta descompactada, execute como "Administrador" o aplicativo flash_download_tool_3.9.5
. Ao executá-lo, será aberta uma janela do CMD do Windows, além de uma janela de configuração da ferramenta, como a da imagem a seguir:

Por padrão, a ferramenta deve estar configurada conforme a imagem acima, que é o modo necessário para a gravação do firmware. Caso não esteja configurado dessa forma, altere-a para que fique igual a imagem acima.
Após pressionar "OK", abrirá a janela para configurar a gravação que será efetivamente feita no módulo, como na imagem abaixo:

A parte mais importante da configuração que precisamos fazer é informar ao gravador o arquivo binário do firmware que será gravado, bem como o endereço da memória flash onde ele será armazenado. O arquivo binário do firmware pode ser baixado através do botão abaixo.
Download do Firmware V1.6.2Com a pasta compactada baixada, descompacte-a em um local acessível novamente para facilitar a configuração do gravador.
Agora que o arquivo binário do firmware está baixado no seu computador, clique sobre o botão de três pontinhos no primeiro campo de texto da janela. Neste momento, será aberto o navegador de arquivos do seu computador. Depois, basta você navegar até o local onde salvou o arquivo binário baixado anteriormente e selecioná-lo. Feito isso, no campo ao lado, digite 0x0
e clique sobre o checkbox desta primeira linha de configuração para informar ao gravador o que será gravado e em que local da memória da placa ficará.
Após essas ações, o seu gravador deve estar configurado como na próxima imagem:

Agora, faltam apenas algumas configurações para realizar a gravação do firmware no módulo. Certifique-se de que a velocidade de comunicação da SPI ("SPI SPEED") está configurada como 40MHz (configuração padrão) e altere o modo da SPI ("SPI MODE") para DOUT. Além disso, ainda na seção "SPIFlashConfig", certifique-se de que a opção "DoNotChgBin" está habilitada. Por fim, selecione a porta COM correspondente ao conversor USB-UART no seu computador e verifique se a velocidade de comunicação ("BAUD") está configurada como 115200 bps.
Ao finalizar, o seu gravador deve estar configurado como o da imagem a seguir:

Com o gravador configurado, pressione o botão "START". Você verá que o display no "DownloadPanel1" irá mudar de IDLE para SYNC e, então, para DOWNLOAD. Aguarde alguns instantes que, assim que a gravação for concluída, será exibida a mensagem FINISH no display, como na imagem abaixo:

A gravação do firmware é executada diretamente pelo terminal CMD do Windows, e a janela fica aberta durante todo o processo. Portanto, se desejar, você pode monitorar a gravação através da janela do CMD.
Circuito após Gravação
Assim que a gravação de código estiver concluída, remova o jumper entre o IO0 e o GND, para que o circuito fique igual ao da imagem abaixo:

Após remover o jumper entre o IO0 e o GND, pressione o botão de RESET para que o módulo saia do modo de gravação.
Validação da Gravação
Após remover o jumper do IO0 e reiniciar o módulo, abra a Arduino IDE e configure o seu monitor serial em 115200 bps e "Ambos NL & RC", para que você possa enviar o comando AT+GMR
e validar a versão do firmware gravado. Em seguida, envie o comando AT+UART_DEF=9600,8,1,0,0
para que o módulo passe a se comunicar com a velocidade de 9600 bps.

Feito isso, mude a velocidade do monitor serial para 9600 bps e, então, envie o comando AT
para validar a comunicação nesta nova velocidade.

Conclusão
Neste tutorial, vimos como gravar o firmware de comandos AT do módulo ESP8266 para que ele possa ser utilizado facilmente com placas Arduino.