CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

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

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.

circuit1
Circuito Elétrico

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.

preferences
Painel de Preferências

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.

pacote
Instalação do Pacote

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 módulo FTDI 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.

placa
Seleção do Modelo de Placa Correto

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.

builtin
Seleção da Porta para o "LED_BUILTIN"

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.

retorno
Mensagens de Retorno da Arduino IDE

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.

circuit2
Circuito Elétrico

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.

Resultado Final

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.

Avatar


Para fazer comentários é necessário estar logado. Efetuar login.

Você ainda nao é cadastrado? Cadastre-se agora!


mateusfmello
date Enviado: 2020-09-08 01:41:20
Da para fazer este procedimento com o Arduino Mega 2560?

Giovanni5
date Enviado: 2020-09-08 09:13:21
mateusfmello
Para realizar a gravação do ESP8266 utilizando uma placa Arduino, seria necessário a remoção do microcontrolador da placa, para que ela trabalhe como um conversor USB/UART (como o módulo FTDI utilizado neste tutorial), entretanto isso não é nada prático, e muito menos recomendado. Com uma Mega isso seria ainda bem mais complicado, pois além do microcontrolador ser bem grande, ele também é SMD, o que dificulta muito a remoção do mesmo.

mateusfmello
date Enviado: 2020-09-08 13:10:45
mateusfmello
Eu comprei com o kit V8 e V4 com vocês, vem esse conversor nele?

Giovanni5
date Enviado: 2020-09-08 13:54:15
mateusfmello
O Master Kit (que acompanha os Kits Iniciantes V8 e Avançado V4) não acompanha o módulo FTDI, até porque o Kit Avançado V4 ensina como utilizar uma BlackBoard UNO para se comunicar com o ESP8266, sem precisar programá-lo, como fizemos no tutorial a seguir, https://www.robocore.net/tutorials/conectando-esp8266-no-arduino .

silman
date Enviado: 2020-09-02 20:55:20
olá. Com a arduino UNO, com o código abaixo, retorna erro:
void setup()
{
  SendCommand("AT+RST", "Ready");
}

void loop() 
{
}

exit status 1
'SendCommand' was not declared in this scope

Não está aceitando o SendCommand

Já tentei atualizar as bibliotecas, a placa como citado acima, e sem sucesso.

Tem uma dica pra me passar ?

Giovanni5
date Enviado: 2020-09-03 08:30:37
silman
A função "SendComand" não pertence a nenhuma biblioteca, ela é uma função que deve ser declarada no próprio código para enviar os comandos "AT" automaticamente. Entretanto, este tutorial foi desenvolvido para carregar um código para a ESP8266, e não precisar mais do uso desses comandos. Além disso, vale lembrar que, se você carregou um código para o módulo, ele não responderá mais aos comandos "AT", pois esse processo apaga o firmware de comandos "AT" da placa.

nielbispo
date Enviado: 2020-08-30 00:13:55
Boa noite! Uma dúvida. É possível realizar esse mesmo procedimento com esta configuração: https://www.robocore.net/tutorials/conectando-esp8266-no-arduino.
Eu comprei a Arduino Uno da Robocore e conectei o esp8266 com o adaptador.
Pelas pesquisas que fiz pra realizar uma requisição rest numa api preciso usar a biblioteca ESP8266HTTPClient.h que só consigo usar realizando esse procedimento. No meu caso utilizei a Generc ESP8266 Module e sempre dá mensagem  : esptool.py v2.7
Serial port COM3

a porta serial _
 selecionada não existe ou sua placa não está conectada.


Giovanni5
date Enviado: 2020-08-31 09:02:31
nielbispo
Na verdade é possível enviar requisições de Rest API sem a utilização da biblioteca "ESP8266HTTPClient", mas para isso é necessário utilizar os comandos "AT" do módulo para estes envios. Esta biblioteca para ESP8266 acaba facilitando muito esse processo de envio, porém ela só é compatível com o ESP8266, portanto é necessário programá-lo diretamente, como é feito neste tutorial.

Giovanni5
date Enviado: 2020-08-31 09:04:07
nielbispo
Em relação ao erro encontrado, você está usando a BlackBoard UNO para gravar o código no módulo? Se sim, vale lembrar que é necessário remover o microcontrolador da placa, para que ela opere como um conversor USB/UART, como o módulo FTDI utilizado neste tutorial. Entretanto esta prática de remover o microcontrolador da placa não é recomendada, pois isso pode acabar danificando-a.

alex4
date Enviado: 2020-06-29 23:00:45
Olá,
Este módulo tem 2 GPIO, tem como eu usa-los p\ echo e trigger do SR-04?
Caso negativo, eh possível usar o RX\TX junto com alguma 'interface' para receber os dados do SR-04?
O objetivo eh não necessitar do arduino em conjunto;
Ou então, o ideal seria usar o NodeMcu mesmo?

Giovanni5
date Enviado: 2020-06-30 09:36:09
alex4
Sim, você pode utilizar os dois GPIOs da placa para ler o sensor ultrassônico, entretanto, vale lembrar que, o ESP8266 possui uma tensão de operação de 3,3 V, diferentemente do sensor ultrassônico, que trabalha em 5 V. Portanto, é necessário converter estas tensões, e para isso você pode utilizar o conversor de nível lógico (https://www.robocore.net/loja/itens-eletronicos/conversor-de-nivel-logico).

iurygarcia
date Enviado: 2020-02-17 10:26:58
Ola Giovanni desculpe por tomar seu tempo, o problema estava entre a cadeira e o laptop, eu estava acessando o gerenciador de bibliotecas ao invés do gerenciador de placas

iurygarcia
date Enviado: 2020-02-16 13:04:11
Ola parece que a biblioteca do 8266 nao esta mais disponivel no gerenciador de bibliotecas da ide, e isso mesmo?

Giovanni5
date Enviado: 2020-02-17 08:18:53
iurygarcia
Para que o pacote de placas ESP8266 esteja disponível no "Gerenciador de Placas", é necessário adicionar o link mencionado acima nas "Preferências" de sua Arduino IDE. Portanto verifique se o link está corretamente adicionado à seção "URLs Adicionais para Gerenciadores de Placas" das preferências de sua IDE, e tente instalar o pacote novamente.

iurygarcia
date Enviado: 2020-02-17 09:08:09
iurygarcia
Ola Giovanni obrigado pela, resposta , fiz  a inclusao do link(https://arduino.esp8266.com/stable/package_esp8266com_index.json) assim como descrito no tutorial,  em seguida busquei por 8266 e ate completo esp8266 ESP8266 by Community, e ainda sim nao aparece a biblioteca, poderia me ajudar?

Giovanni5
date Enviado: 2020-02-17 09:48:06
iurygarcia
Qual a versão da Arduino IDE que você está utilizando? Ao abrir o "Gerenciador de Dispositivos", a Arduino IDE exibe a mensagem de erro "Error downloading https://arduino.esp8266.com/stable/package_esp8266com_index.json"? É possível que isso seja apenas um erro de execução da Ardino IDE, portanto tente reiniciá-la, ou até mesmo reinstalá-la, para a adicionar este pacote de placas.