SUPORTE TÉCNICO
De segunda à sexta pelo e-mail:
suporte@robocore.net
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!


leandrommcontato
date Enviado: 2021-08-20 23:51:50
Uma pergunta, posso usar essa esp para receber dados do arduino e enviá-la para uma página ou para o celular (por exemplo, dados de fluxo da água,  umidade do ar) sem precisar gravar o código para a esp?

Giovanni5
date Enviado: 2021-08-23 08:29:11
leandrommcontato
Você pode sim apenas utilizar o ESP8266 como uma interface de conexão Wi-Fi para a placa Arduino através de comandos "AT"(https://www.robocore.net/tutoriais/conectando-esp8266-no-arduino - exemplo com Arduino UNO). Após a conexão do módulo à rede, é possível utilizá-lo para enviar os dados lidos de sensores pela placa Arduino para um servidor criado pelo próprio módulo, ou até mesmo enviar os dados para outros servidores através de HTTP ou MQTT, por exemplo.

leandrommcontato
date Enviado: 2021-08-20 23:46:19
Meu deus, lendo os comentários eu vi que com arduino mega eu não consigo enviar o código... PQP eim? O que faço agora? Gasto mais dinheiro?

Giovanni5
date Enviado: 2021-08-23 08:25:52
leandrommcontato
Até é possível gravar códigos no ESP8266 utilizando uma placa Arduino, porém, para isso, é necessário remover o microcontrolador da placa, para que ele não influencie na gravação. Isso além de muito trabalhoso, principalmente com componentes SMD como o ATmega2560, também não é recomendado, pois isso pode danificar o componente e até mesmo a placa. Para esse tipo de procedimento, é recomendado o uso de um conversor USB/UART externo, como o módulo FTDI (https://www.robocore.net/acessorios-arduino/placa-ftdi), utilizado no tutorial.

leandrommcontato
date Enviado: 2021-08-25 17:20:58
leandrommcontato
Obrigado, eu removi  o "ci" do blackboard uno 1.1 e deu certo sem estragar a placa e sem estragar o microcontrolador, consegui programar a esp e enviar o código usando o UNO como se fosse um FTDI, inseri o microcontrolador de volta e continua funcionando de boas, se der erro faço um bootloader com a placa mega que tenho, hehehehe

leandrommcontato
date Enviado: 2021-08-20 23:23:56
Segui todos os passos a risca, revisei tudo, fiz exatamente todos os procedimentos descritos e mesmo assim continua com essa mensagem ""esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header"

vicentingr
date Enviado: 2020-11-13 11:07:57
Mesmo tentando as quatro opções do "Flash Mode" o ESP não executa o código. Com o serial em 74880 é possível ver a mensagem quando o botão reset é pressionado:
===============
ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 28740, room 16
tail 4
chksum 0xe7
load 0x3ffe8000, len 2888, room 4
tail 4
...

Francois
date Enviado: 2020-11-13 13:40:22
vicentingr
Um dos problemas que pode ocorrer na gravação é o uso de um modo diferente do aceito pela placa. Como você não conseguiu a gravação por nenhum deles, verifique que a placa está sendo reiniciada com o pino IO0 em 0 V, pois isso o ESP8266 só entra em modo de gravação se for iniciado com esse pino em nível lógico baixo.

O bootloader do ESP8266 envia algumas mensagens pela UART em uma taxa de comunicação diferente, portanto é normal você ver esse texto quando a placa é reiniciada.

vicentingr
date Enviado: 2020-11-13 18:13:05
vicentingr
Estava com o IO0 em GND, e quando iniciava em modo de gravação o log é diferente:
===============
ets Jan 8 2013,rst cause:2, boot mode:(1,6)

Francois
date Enviado: 2020-11-13 21:09:42
vicentingr
A IDE retornou algum erro durante a gravação? Você gravou o código desse tutorial, de piscar o LED? Se foi o caso, tente mudar a definição de pino do LED conforme a nota acima, pois isso pode variar entre módulos.

vicentingr
date Enviado: 2020-11-15 18:17:56
vicentingr
Sim ,segui o tutorial e comprei o módulo com vocês. A IDE não retornou nenhum erro.

Francois
date Enviado: 2020-11-16 16:47:53
vicentingr
Envie um e-mail para suporte@robocore.net com o número do pedido (ou o da nota fiscal) sobre esse erro, com algumas fotos do circuito e, se possível, um vídeo mostrando o processo de gravação e de execução.

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.