Programando o ESP8266 pela Arduino IDE

Introdução
O módulo ESP8266 é muito utilizado dentro do #MovimentoMaker para conectar o seu projeto à internet. Ele é normalmente utilizado através de uma comunicação serial com uma placa da plataforma Arduino, como no tutorial Conectando o ESP8266 com o Arduino. Porém, é possível programar o ESP8266 como uma placa da plataforma Arduino, embora pouco feito, e utilizar suas portas GPIOs como entrada ou saída, aproveitando a sua capacidade de memória maior (quando comparada com a placa Arduino UNO).
Neste tutorial você vai aprender a programar o módulo Wi-Fi ESP8266 através da Arduino IDE.
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

Protoboard 400 Pontos

Cabo USB Micro B 80cm

Jumpers Macho-Macho x40 Unidades
Circuito
Assim como a BlackBoard UNO, o primeiro código que queremos enviar para a placa para verificar o seu funcionamento é o exemplo "Blink" da Arduino IDE. Para isso, monte o circuito da imagem abaixo. Vale lembrar que, para carregar o código para a placa, é indispensável a utilização do jumper conectando os pinos IO0 e GND de seu adaptador para ESP8266. Essa conexão altera o modo do ESP8266 para o modo de programação ("programming mode"). Ao pressionar o botão reset com a placa em modo de programação, a placa executa uma rotina de gravação, que aguarda o envio de dados pela comunicação serial.

Programação
Primeiramente, é necessário adicionar o pacote de placas do módulo ESP8266. Para isso, abra o painel "Preferências" da Arduino IDE (Arquivo > Preferência). Com o painel aberto, digite o link https://arduino.esp8266.com/stable/package_esp8266com_index.json
no campo "URLs Adicionais para Gerenciadores de Placas", como na imagem abaixo.

Então, pressione o botão "OK" para salvar as alterações. Agora, para baixar o pacote de placas compatíveis com o módulo ESP8266, abra o "Gerenciador de Placas" (Ferramentas > Placa > Gerenciador de Placas), digite no campo de pesquisa esp8266
, e instale o pacote do resultado da pesquisa, como na imagem abaixo.

Com a instalação finalizada, abra o exemplo "Blink" da Arduino IDE (Arquivo > Exemplos > ESP8266 > Blink). Ele deve ser similar ao código abaixo, que foi extraído da IDE.
Em seguida, conecte o conversor USB-UART ao computador, selecione a porta COM correspondente ao módulo, assim como o módulo ESP8266 na opção "Placa", como na imagem a seguir.

Após selecionar o modelo de placa correto, é necessário alterar a porta do LED interno da placa (LED_BUILTIN
), de 2 para 1, como na imagem abaixo. As outras opções mostradas em "Ferramentas" não necessitam de alteração ou configuração.

Alerta: a porta do "LED_BUILTIN" pode mudar de acordo com a versão e o fabricante do módulo.
Após selecionar a porta correta, pressione o botão de reset do circuito montado, para o módulo ESP8266 entrar em modo de gravação, e carregue o código para a placa. O processo de gravação de código pode levar um minuto ou dois, mas ele é automático. Quando a gravação for concluída, a Arduino IDE retornará uma mensagem informando o sucesso na gravação do código, como na imagem abaixo.

As outras informações retornadas pela IDE são os estados de gravação do código para a placa.
Execução do Código Carregado
Para executar o código que foi carregado para a placa, desconecte o jumper que conecta os pinos IO0 e GND, como na imagem a seguir.

Após desconectar o jumper, pressione o botão de reset da placa. Mesmo ao desconectar o jumper, a placa ainda está executando a rotina do modo de programação, portanto é necessário pressionar o botão reset para que o módulo saia do modo de programação.
O Que Deve Acontecer
Após a reinicialização da placa, o LED azul interno da placa irá piscar com o intervalo de 1 segundo, como no GIF abaixo.
Solucação de Problemas
Mensagem de Erro "esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header"
Esta mensagem de erro é retornada quando a Arduino IDE não é capaz de se conectar ao módulo ESP8266. Esse erro é causado pela falta de reset da placa antes de carregar o código para a mesma. Portanto, tente carregar novamente o código para a placa, porém reinicie a placa antes de iniciar o processo, lembrando que os pinos IO0 e GND devem estar previamente conectados.
Outro possível problema que pode causar esse erro é a inversão na conexão dos pinos RXH e TXH do adaptador para ESP8266. Portanto, inverta a conexão dos pinos e carregue novamente o código para a placa.
O Código Gravado Não Executa
Em alguns casos é necessário mudar o método de gravação para carregar o programa corretamente para o módulo. Nesse caso, tente variar entre os métodos na configuração "Flash Mode" no menu "Ferramentas". São quatro opções possíveis: DOUT, DIO, QOUT e QIO.