Tutorial - Programando o módulo ESP8266 pela IDE do Arduino

Olá garagistas,

Neste tutorial vamos introduzir o módulo ESP8266 e também ensinar a usá-lo no ambiente Arduino. Assim pode-se usar as funções e bibliotecas já familiares do Arduino e rodar diretamente no ESP8266. 

O módulo ESP8266 é uma solução de baixo custo criada para conexões Wi-Fi permitindo que se hospede a aplicação no próprio módulo ou se opere como um gateway Wi-Fi comunicando-se com um outro dispositivo ou microcontrolador via comunicação serial.

Ele também possui internamente uma capacidade de processamento e armazenamento grande o suficiente para que seja integrado com sensores e outros dispositivos específicos. Estes módulos vêm pré-programados com um firmware de comandos AT. Assim, pode-se conectar o módulo com um Arduino, possibilitando que se tenha tantas funções Wi-Fi quanto um shield pode oferecer.

Neste primeiro tutorial vamos conectar o módulo ESP8266 em um módulo conversor USB/Serial do Garagino para fazer o upload do programa que irá piscar um LED, um programa simples mas que permite configurar sua IDE e começar a desenvolver.

Materiais Utilizados:

1x Módulo GarageLab ESP8266 Breakout

1x Conversor USB/Serial do Garagino

1x Suporte para 4 pilhas AA

1x LED

2x Chaves Tácteis

2x Resistor de 10K

1x Resistor de 330R

1x Resistor de 180R

1x Resistor de 270R

2x Capacitores de 10µF

1x Regulador de tensão LM1117

Alguns jumpers

Um ponto importante a ser destacado é que a compatibilidade do ambiente Arduino com os módulos ESP8266 existe graças ao excelente projeto Arduino/ESP8266 que tem recebido contribuições de vários desenvolvedores. Mais detalhes sobre o projeto podem ser obtidas no endereço: https://github.com/esp8266/Arduino

Pode-se utilizar a maioria das funções que se usaria para programar uma placa Arduino, com algumas funções extras que o ESP8266 oferece e algumas ressalvas. Entre elas, os pinos disponíveis. Em linhas gerais, a numeração do pino, corresponde ao mesmo número no ambiente de programação. Exemplo: D2 equivale a GPIO2. No entanto, os pinos por terem a função de GPIO, pode receber outras funções, conforme a tabela abaixo.

Para ter mais detalhes sobre como utilizar a IDE do Arduino com o ESP8266 acesse: https://github.com/esp8266/Arduino/blob/master/doc/reference.md

Agora, vamos colocar a mão na massa!

Primeiramente deve-se instalar o software Arduino IDE versão 1.6.4 ou superior, o download pode ser feito no site abaixo:

https://www.arduino.cc/en/Main/Software   

Agora devemos instalar os pacotes do módulo ESP8266 na IDE do Arduino, para isso vá em File > Preferences, conforme figura abaixo:

Uma nova janela deverá abrir. Copie a URL a seguir e cole no campo “Additional Boards Manager URLs:" conforme a figura abaixo.

 http://arduino.esp8266.com/stable/package_esp8266com_index.json

 

Agora entre em Tools > Board > Board Manager...

Na janela “Boards Manager” procure pelo módulo ESP8266 e clique em instalar situado no canto inferior direito.

Agora vá em Tools > Board > Generic ESP8266 Module

 

Vá novamente em "Tools" e use as configurações conforme a imagem abaixo.

Flash Mode: “QIO”

Flash Frequency: “40MHz”

Upload Using: “Serial”

CPU Frequency: "80MHz"

Flash Size: “4M (3M SPIFFS)

Upload Speed: “115200”

Para a Port use a porta usb na qual o seu módulo está conectado no computador.

A Porta COM poderá ser diferente do exemplo acima conforme o seu PC.

Agora que sua IDE já está configurada, vamos fazer as conexões do circuito na protoboard.

Os módulos ESP8266 não vêm com a pinagem padrão para montar na protoboard, portanto deve-se utilizar um breakout para poder fazer as conexões. Abaixo uma imagem com a pinagem do módulo já com o breakout do Lab de Garagem.

O esquema de montagem do circuito é mostrado na figura abaixo:

Os pinos VCC, CH_PD e GPIO2 devem sempre estar em nível lógico alto, os pinos GND e GPIO15 devem sempre estar em nível baixo. Os pinos REST e GPIO0 devem estar em pull up, estes pinos vão ser usados para colocar o módulo em modo de programação. O módulo conversor USB/Serial e sua pinagem são mostrados na figura abaixo:

 

Os pinos TXD e RXD do conversor serão ligados nos pinos RX e TX do módulo ESP8266 respectivamente. É importante lembrar que a maioria dos módulos USB/SeriaL trabalham com 5V, como é o caso do conversor USB/Serial do Garagino, então a saída TX do conversor deve passar por um divisor de tensão, rebaixando o seu nível para 3.3V, tensão de operação do módulo ESP8266. Nós utilizamos um divisor de tensão com resistores de 330 ohms e 180 ohms. Esse divisor de tensão é utilizado apenas na linha TXD do módulo conversor já que na "volta" receberá 3.3V do módulo ESP8266 e será "entendido" como nível HIGH.

Para a alimentação do circuito vamos usar 4 pilhas AA em série. Como estas pilhas fornecem uma tensão de aproximadamente 6 volts, vamos usar um regulador de tensão LM1117 e dois capacitores de 10 µF para alimentar o ESP8216 com apenas 3.3V. Não alimente o módulo com 5V ou ele poderá queimar, alimente sempre com 3.3V!

O primeiro projeto que faremos será apenas fazer um LED piscar, portanto vamos ligar um resistor de 270R em série com um LED ligados na saída GPIO14 do módulo, conforme mostrado na figura.

Depois de tudo conectado deve-se abrir a IDE do Arduino e entrar com o código abaixo. Este código utiliza as mesma sintaxe e instruções de programas usados com placas Arduino, o que demonstra a facilidade de programação quando utilizado o módulo ESP8266.

 

void setup() {

  pinMode(14, OUTPUT);

}

 

void loop() {

  digitalWrite(14,HIGH);

  delay(1000);

  digitalWrite(14,LOW);

  delay(1000);

}

Agora, antes de carregar o código no módulo, devemos colocá-lo em modo de programação. Para isso, deve-se "resetar" o módulo, mas com o pino GPIO0 em nível lógico baixo. Assim, segure o botão da esquerda (GPIO0) pressionado, e pressione o botão da direita (Reset) momentaneamente. 

Agora, com seu módulo em modo de programação, é só carregar o código pressionando o botão "Upload" na IDE do Arduino, normalmente. O tempo de carregamento do programa é sensivelmente maior do que nas placas Arduino, mas ao final do carregamento, o LED colocado na saída GPIO14 deverá piscar.

Esperamos que esse tutorial lhe ajude a começar seus projetos com ESP8266 na plataforma Arduino. Boa sorte!

Referências:

https://github.com/esp8266/Arduino/blob/master/doc/reference.md

Exibições: 44940

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de José Gustavo Abreu Murta em 18 abril 2018 às 12:59

Boa tarde Marcos, 

Favor informar qual firmware esta usando - comandos AT ou Arduino ?

ESP8266 - Conectando na Rede WIFI 
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

ESP8266 - Mais alguns comandos AT :
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

ESP8266 - Comunicação de dados TCP/IP:
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

ESP8266 - Comunicação WEB Server:
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

Comentário de marcos antonio oliveira da silva em 18 abril 2018 às 9:36

estou com problema com meus esp 8266 e 12 eu não consigo visualizar a rede wifi dele crio ate o ip dele visualizo pelo monitor serial porem não fica visível a rede wi fi alguem pode me ajudar?

Comentário de Marcelo Rodrigues em 23 fevereiro 2016 às 9:19

Jauberth,

Sim, a saída do TX, após os resistores, deve dar 3.3V. Mas não sei como você está medindo, já que nessa saída são pulsos, não existe um nível DC fixo ali para ser medido com o multímetro, você precisaria de um osciloscópio.

Possivelmente, como o Murta disse, algo pode ter queimado.

Lembrando que o módulo deve ser alimentado com 3.3V também, não apenas a saída TX deve ser 3.3V, mas a própria alimentação do módulo. Por isso, usamos o regulador.

Boa sorte!

Comentário de RICARDO JARDIN em 22 fevereiro 2016 às 20:42

nao sei os valores dos resistores que vai em cada parte...

Comentário de Jauberth Weyll abijaude em 20 fevereiro 2016 às 15:59

Oi Murta, quanto a isso tá tranquilo, li e implementei corretamente. Me refiro a essa passagem do tutorial:

"Os pinos TXD e RXD do conversor serão ligados nos pinos RX e TX do módulo ESP8266 respectivamente. É importante lembrar que a maioria dos módulos USB/SeriaL trabalham com 5V, como é o caso do conversor USB/Serial do Garagino, então a saída TX do conversor deve passar por um divisor de tensão, rebaixando o seu nível para 3.3V, tensão de operação do módulo ESP8266. Nós utilizamos um divisor de tensão com resistores de 330 ohms e 180 ohms. Esse divisor de tensão é utilizado apenas na linha TXD do módulo conversor já que na "volta" receberá 3.3V do módulo ESP8266 e será "entendido" como nível HIGH."

Comentário de José Gustavo Abreu Murta em 20 fevereiro 2016 às 7:03

Você leu isso ?

" Para a alimentação do circuito vamos usar 4 pilhas AA em série. Como estas pilhas fornecem uma tensão de aproximadamente 6 volts, vamos usar um regulador de tensão LM1117 e dois capacitores de 10 µF para alimentar o ESP8216 com apenas 3.3V. Não alimente o módulo com 5V ou ele poderá queimar, alimente sempre com 3.3V! "

Se alimentou o VCC do seu ESP8266 com 5V deve ter queimado ele...

Comentário de Jauberth Weyll abijaude em 19 fevereiro 2016 às 23:29

Oi Flávio, 

Obrigado pela dica, realmente estava sem comunicação com a serial, vou tentar novamente.

Murta, eu estou alimentando com 5V.

Seguindo o tutorial acima, o USB/Serial recebe 5V e envia pela porta Tx também 5V. Como o ESP8266 trabalha com 3,3V, o esquema mostra o uso de dois resistores (um de 330 e um de 180 ohms). Minha pergunta agora é.. ao medir com o multímetro a saída Tx, após passar pelos resistores e antes de entrar no módulo EPS8266 a voltagem teria de ser 3.3V não é mesmo... pois o multímetro está marcando os mesmos 5v como se os resistores não estivessem funcionando.

Comentário de José Gustavo Abreu Murta em 19 fevereiro 2016 às 17:53

Jaubert 

Você já conseguiu acesso via porta serial ?

http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

Você esta alimentando com qual fonte de 3,3V ? Não use a tensão de 3,3V da sua Interface USB Serial ...

Comentário de Flavio Hernan em 19 fevereiro 2016 às 17:03

Olá  Jauberth

O Esp8266, está sendo alimentado com 3,3V, você tem um multímetro?

Faça um teste no seu conversor USB/serial, é bem simples, desconecte todos os fios dos pinos do conversor, e coloque um jumper entre os pinos TX e RX do USB/Serial.

Na IDE do arduino  abra o monitor serial, digite qualquer coisa e aperte ENTER, se seu conversor estiver bom irá retornar o que você digitou, caso contrário verifique os drives do conversor. 

Comentário de Jauberth Weyll abijaude em 19 fevereiro 2016 às 16:10

Oi amigos, 

Perdão pela demora, meu pc deu pane, mas estou de volta

Murta, eu uso o conversosr USB/Serial e o esp8266 comprados aqui no lab de garagem.

Flávio, eu montei tudo conforme o tutorial mostra e pressiono as chaves táteis na ordem correta para entrar no modo de programação.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço