.

Olá, venho aqui compartilhar com vocês um pequeno tutorial para aqueles que desejam iniciar o uso do ESP8266 junto com Arduino Mega.

Fazendo dessa forma, isto é, conectando o ESP8266 ao Arduino Mega, você consegue se livrar do Ethernet Shield W5100 e seu cabo de rede, e mesmo assim continua dando ao Arduino conectividade à intranet/internet.

A comunicação entre o arduino Mega e o ESP8266 é feita por 2 pinos do arduino, o TX e RX, que se ligam ao RX e TX do módulo, isto é, o TX do arduino Mega deve ser conectado ao RX do ESP8266 e o RX do arduino Mega deve ser conectado ao TX do ESP8266.

Porém, como o arduino solta no TX sinal com 5V de tensão, não se deve ligar diretamente o TX do arduino com o RX do ESP8266. É necessário usar 2 resistores ligados em série, um com o dobro da resistência que o outro, para fazer um divisor de tensão resistivo que será capaz de derrubar a tensão de 5V que o TX do arduino solta. O divisor de tensão fará com que chegue até o RX do ESP8266 a tensão aceita pelo módulo, isto é, 3.3V

No desenho abaixo, ali onde há a fonte alimentando a protoboard, é obrigatório que a tensão seja de 3.3V, senão vc queimará o ESP8266.

Se assegure também que a alimentação seja o mais próximo possível de 3.3V. No início, eu apanhei bastante porque eu obtinha no serial monitor um monte de caracteres estranhos vindos do módulo ESP8266, e o culpado era a tensão que eu estava usando, que era de 3V, insuficiente portanto.

Use um cabo USB para interligar o computador ao arduino.

Muita atenção na qualidade das conexões dos fios. Quando há conexões mal feitas, vc terá como resultado instabilidade do módulo muito grande, como falhas na conectividade da rede, funcionamento intermitente (ora funciona, ora não funciona, ora funciona, ora não funciona).

Importante também ligar o RST e o CH_PD aos 3.3V usando um resistor.

Nunca é demais lembrar que o GND da fonte deve estar conectado ao GND do arduino Mega e o GND do ESP8266.

Assegure-se que todas as conexões foram feitas corretamente:

MEGA D16 (TX)  <------>  DIVISOR TENSÃO 3.3V <----->ESP8266 RX
MEGA D17 (RX) <------------------------------------------------------> ESP8266 TX
FONTE 3.3V (+) <------------------------------------------------------> ESP8266 3.3V
FONTE GND (-) <---------------->  MEGA GND <------------> ESP8266 GND
FONTE 3.3V (+) <---------------> R= 10K ohm<---------------> ESP8266 RST
FONTE 3.3V (+) <---------------> R= 10K ohm<---------------> ESP8266 CH_PD

Segue como fazer as conexões:

Esse esquema acima serve para usar o hardware serial 2 do arduino mega. Por que hardware serial? Porque se seu ESP8266 veio configurado de fábrica com velocidade de 115200 bauds, só funciona por hardware serial.

Eis um sketch básico para vc fazer upload no arduino:

void setup()
{
      Serial2.begin(115200);
      Serial.begin(9600);
}


void loop()
{
     while (Serial2.available()) { Serial.write(Serial2.read()); }
     while (Serial.available()) { Serial2.write(Serial.read()); }
}

Esse sketch acima serve para verificar se o módulo responde aos comandos AT. Simplesmente digite AT e envie ao módulo e espere que retorne OK

Se retornar OK, seu módulo está funcionando.

Perceba que no sketch a velocidade de comunicação entre o arduino e o ESP8266 foi configurada para ocorrer a 115200 bauds. Geralmente esses módulos vêm de fábrica a 115200 bauds ou 9600 bauds, portanto se vc não sabe qual a velocidade do seu módulo, tente o sketch acima primeiro. Depois de fazer o upload do sketch acima, abra o serial monitor e coloque em 9600 bauds e configurado em NL + CR 

Atenção para não confundir a velocidade da comunicação serial entre arduino -> ESP8266, que chamamos de serial2 e a comunicação serial entre o arduino -> pc, que chamamos simplesmente de serial. Ali no serial monitor, ou seja, velocidade de comunicação serial entre o arduino e o pc, configuramos no sketch que deverá ocorrer a 9600 bauds e portanto o serial monitor deve estar marcada para essa velocidade de 9600 bauds. Já a velocidade de comunicação serial2 (arduino -> ESP8266) é definida apenas no sketch, ali no void setup, e o serial monitor precisa (e nem tem onde mexer) para contemplar essa configuração da serial2

Se ali no serial monitor o comando AT que vc digitou lhe retornou caracteres estranhos, tente alterar o sketch ali  na linha onde está Serial2.begin(115200) para outro valor, por exemplo 9600. Não altere mais nada e faça upload novamente. O serial monitor deve estar a 9600 bauds e digite AT e envie.

Bom, está aí minha contribuição. Sintam à vontade para dar sugestões e/ou sugerir correções, afinal muitos de nós estamos em busca de um mesmo objetivo: avançarmos juntos sobre esse fantástico e promissor módulo

Grato...

Hugo

EDIT (29/09/2015) --> Não sei se é o caso de relatar, mas em todo caso, aí vai: para esse tutorial, não é necessária atualização de firmware do ESP8266, nem placa FTDI, nem instalar qualquer placa na IDE do arduino. Simplesmente vc usa a IDE do arduino que vc tiver, conecta os fios e resistores conforme a imagem e faz o upload do sketch diretamente pro arduino, da mesma forma como vc sempre faz outros uploads de sketches. Portanto, essa forma apresentada aqui nesse tutorial difere muito dos tutoriais do colega Carlos Kwiek, onde ele usa a placa FTDI em conjunto com o ESP8266, sem arduino em nenhum momento, a IDE do arduino precisa ser configurada pro ESP8266 e o upload dos sketches são feitos diretamente pro ESP8266. 

EDIT (15/10/2015) --> Relendo a postagem, percebi que um dos esquemas de ligação que eu apresentei estava errado no que se refere ao RX/TX do arduino Mega. Postei o esquema correto.

.

Exibições: 17561

Respostas a este tópico

Por favor, onde baixo essa versão 00180902 ?

Tem ferramenta para gravar o firmware para Linux ?

Grato, Odilon

Odilon,

Tem a "esptool", que é um script em python, que é independente da plataforma. Eu uso a distribuição OpenSuse, e usei o esptool para gravar o firmware de meu(s) ESP8266s.

Tem um tutorial sobre isso na seção apropriada.

Abrax...

Olá Carlos Kwiek,

Você tem essa versão de firmware - 00180902 ? Meu módulo tem 8Mbits, ou 1MB ram.

Estou usando o firmware:

AT version:0.50.0.0(Sep 18 2015 20:55:38)
SDK version:1.4.0 NON BOOT MODE

Esse firmware está respondendo bem, mas ele vem com 115200, preciso sempre abaixar para 9600 e ai eu gravo no firmware com o comando:

AT+UART_DEF=9600,8,1,0,0

Mas gostaria de tentar essa verãso de firmware que você está utilizando.

Grato, Odilon

Odilon essa  versão de firmware - 00180902 é mais antiga que a sua. 

AT version:0.50.0.0(Sep 18 2015 20:55:38)
SDK version:1.4.0 NON BOOT MODE

Não recomendo voltar para a versão antiga. 

Pode ter bugs.

OK !

Ola Odilon,

Aqui um video no meu canal com comentários a respeito:

https://www.youtube.com/watch?v=ulnIZC5SJE0

Aqui link para meu Google drive compartilhando Flasher e firmware.

https://drive.google.com/folderview?id=0B71RPmv45vX6SUJqNHIwMnZFQms...

Abs.

Valeu, grato !!

Olá Carlos,

Use alguns comandos AT em 115200 para ver se a comunicação está funcionando.

AT

AT+GMR

AT+CWMODE?

Depois, troque a velocidade corrente para 9600

AT+UART_CUR=9600,8,1,0,0

A partir desse momento você não mais conseguirá se comunicar com o módulo, pois ele estará em 9600.

Sem resetar o módulo(para que ele não volte a 115200), retorne a comunicação em 9600 e tente outros comandos AT.

(AT+CWLAP, AT+CWJAP_CUR="ssid","password", etc...)

Eu só consegui uma boa comunicação com o ESP8266 em 9600, utilizando a biblioteca SoftwareSerial com RX no pino 2 e TX no pino 3.

Boa sorte.

Olá, não precisa nenhuma biblioteca ? Estou ganhando:

error: 'Serial2' was not declared in this scope

Vou tentar com a SoftwareSerial. Com dois pinos configurados como RX e TX. É isso ?

Odilon, esse tutorial é simples mesmo, não precisa de biblioteca alguma. 

A única necessidade é que vc use o arduino MEGA. Será que esse erro de Serial2 não seria porque vc está usando outro arduino, tipo o UNO?

Por que usar o MEGA? Porque ele permite que  se use software serial e hardware serial ao mesmo tempo. E isso é crucial no início, para vc passar comandos do arduino pro ESP-01

Vc não teria um ESP-01 "virgem" aí, tipo sem ter feito atualização de firmware, isto é, recém comprado?

Existe alguma maneira de vc seguir esse tutorial à risca? Tipo use 2 resistores pra reduzir a tensão do TX do arduino para 3.3v. Um resistor deverá ser o dobro do outro, e ambos não devem ser muito altos. Eu uso 560 ohm e 1K ohm

Hugo, não precisa usar Arduino Mega (mais caro).

O meu teste funcionou com o Arduino comum !

Usei a Biblioteca SoftSerial que já tem na IDE do Arduino.

#include <SoftwareSerial.h>

Na realidade, o que eu percebi é o seguinte: alguns módulos ESP-01 vêm de fábrica a 115200 bauds, outros a 9600 bauds. Eu comprei 5 módulos, 4 vieram a 115200 bauds e 1 veio a 9600 bauds.

Quando vem a 9600 bauds, fica mais fácil pra comunicar com o arduino, pois evita-se trilhar alguns passos iniciais.

Mas se vierem a 115200 bauds, isso criará uma série dificuldade em comunicar o módulo com o arduino. A 115200 bauds, só via hardware serial.

Daí a vantagem de se usar um arduino MEGA. Usando-se o MEGA, configuramos o sketch pra comunicar com o ESP-01 via hardware serial a 115200 bauds e o serial monitor fica a 9600 bauds. É legal ter os dois funcionando junto (hardware serial com o módulo + serial monitor) porque dessa forma vc consegue enviar comandos pelo serial monitor e acompanhar a resposta do módulo na sua tela.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço