.

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

Murta;
Onde vc ligou os TX e RX do ESP8266 (no UNO)?

ESP8266 - Teste de comunicação serial do Arduino com o ESP8266 :
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

ARDUINO D2 ( RXD )conectado diretamente no TXD do ESP8266 

ARDUINO D3 ( TXD ) conectado no RXD do ESP8266 (usando o divisor com resistores) 

Conecte o terra (GND) do Arduino no terra do ESP8266.

Valeu a dica, mas não tenho Mega, apenas Uno.

EStou utilizando dois de 1K no GND e um de 1K no TX.

Faça o teste com o seu UNINHO !

E nos informe sobre os resultados.

Para conectar um ARDUINO 5V em um ESP8266 através da Interface Serial pode usar esse circuito já testado :

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

Bom, eu consegui gravar o ESP8266. Com a interface serial USB-TTL CH340. Já é um começo.

Mas não consigo utilizar a placa Arduino para essa finalidade. Recebo da IDE Sync Comm failed.

Não tem jeito.

Outra coisa que também não consegui de jeito nenhum (e é o que eu mais preciso) foi utilizar o ESP8266 ESP-01 como interface Wifi, utilizando o Arduino como MCU hospedeira da aplicação. Não quero rodar no ESP8266, pelo menos não ainda, é muito recente.

O sketche para rodar no Arduino é gravado normalmente, faço diversos testes em todas velocidades, a velocidade em que recebo menos sujeira 120000bps.Comecei em 9600 e fui resetando e trocando as velocidades de 4800 em 4800 até 230000 e tralálá, mas nenhuma funciona 100%. E o servidor TCP não entra.

É fundamental para mim que o servidor funcione, todo o diálogo entre o Android e o Arduino está pronto e testado com o shield 5100 cabeado, mas a solução final tem que ser wifi e ocupar pouco espaço, o ideal é a aplicação rodar numa Arduino Nano ou Pro Mini com a interface serial ESP-01.

Alguma idéia ?

José Gustavo, dá uma olhada nisso, achei bem interessante.

https://www.hackster.io/glowascii/esp8266-programming-jig-5afd03

Odilon, 

A causa do problema é que quando usando a interface SoftSerial (que é uma segunda interface virtual) a comunicação fica truncada ao usar altas velocidades de transmissão de dados (baud rates), por exemplo 115200 bps. 

E além disso, para um melhor sincronismo na comunicação, recomendo que a Baud Rate dos dois sejam iguais !

Para mudar o baud rate do ESP8266, digite esse comando. Se desligar ou resetar, deverá digitar novamente o comando ! exemplo:

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

Não se esqueça de sempre configurar a console da IDE do Arduino para o baud rate correto.

Além disso configure na linha inferior da Console : 

AMBOS, NL e CR 

http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId=6223006%3AComment%3A501212

Para a  conexão das duas interfaces, eu usei o circuito que limita a tensão do sinal de RXD do ESP8266 para no máximo 2,5 V ( dividi a tensão 5V por dois, usando dois resistores de 10K) .

Fiz um teste dividindo a tensão com três resistores e não funcionou !!

Nessa caso a tensão máxima no pino RXD ficará em 2/3 de 5V = 3,3 V 

Não entendi o porque de não ter funcionado. Pode ser um problema de impedância. 

Por isso recomendo que faça o teste com dois resistores somente. 

    Arduino TXD ----- 10K---------------------------------------- ESP8266 RXD

                                              |

                                            10K 

                                              | 

                                            10K

                                              |

                                            GND 

Por favor me ajude no seguinte:

1. Posso usar o esquema com o uno ou o leonardo? Não vi problema aparente.

2. Aquela figura verde com "raio" é uma fonte de 3,3V? Eu tenho uma fonte que posso determinar as

saídas mas o pino de ligação é P e não gostaria de destrui-lo. Posso conectá-lo na entrada correspondente do arduino?

Ou tenho que fazer alguma adaptação?

3. A tensão 3,3V tem que ser regulada?

4. O sketch apresentado é o suficiente para testar o comando AT? Não tenho certeza que meu ESP é de 9600

mas a versão é 1.1.1.1. Isto muda algo ou significa algum empecílho?

5. O divisor de tensão é de 2,8V (560/1000 x 5V)?
muito obrigado

Reposta 1 - olha, nas minhas tentativas com o uno e com o leonardo, eu não consegui. O colega Murta diz que dá pra usar uno, ele até postou alguns tutoriais recentemente a respeito do uso com o uno, mas eu não dei conta quando tentei há alguns meses. Essa dica que eu postei foi baseada num instructables , e o cara também não tinha conseguido com o uno, mas colocou as instruções pra fazer funcionar com o mega. Eu segui as instruções dele, adaptei algumas coisas e consegui dessa maneira aí que postei.

resposta 2 - sim é a fonte de alimentação de 3.3v sim. Essa fonte de alimentação será pro módulo ESP8266. O arduino vc alimenta pela USB do seu computador, e fazendo dessa maneira vc terá acesso ao serial monitor conforme o sketch do tutorial. Se sua fonte tiver plugue incompatível, precisa dar seus pulos e tentar adaptar alguma forma de obter positivo e negativo dessa fonte. Vai numa casa de eletrônica e compre componentes pra fazer essa adaptação.

Agora o que não pode é usar somente a USB pra alimentar o arduino e tentar puxar os 3.3v pra alimentar o ESP através do pino 3.3v do arduino. Dizem que não há corrente suficiente ali, eu mesmo nunca testei, já que falam que não dá, nem perdi tempo testando se é verdade.

resposta 3 - a tensão de 3.3v tem que o mais próximo disso. Tensões menores que essa fazem seu módulo soltar caracteres esquisitos. Tensões maiores podem queimar seu módulo, apesar que alguns dizem que não queima coisa nenhuma. Eu nunca paguei pra ver, então prefiro seguir à risca a tensão de 3.3v.

Eu uso um regulador de tensão pra protoboard que inclusive vende também na loja aqui do LdG. É um componente muito útil, porque vc alimenta com 9V a 12V por exemplo e tem opções de saída de 5V ou 3.3V, bastando mudar um jumper. E o mais legal é que se encaixa na protoboard, te permitindo ter trilhas alimentadas com as duas tensões (3.3v+GND numa trilha e 5V+GND na outra)

veja imagem:

 

Existem vários modelos no mercado, mas eles basicamente funcionam da mesma maneira. 

resposta 4 - sim, o sketch que apresentei serve justamente pra enviar comandos AT pro módulo e ler a resposta via serial monitor da IDE do arduino. 

resposta 5 - o cálculo de tensão resultante no divisor de tensão não é feita dessa maneira como vc escreveu.

A conta é essa que mostro a seguir:

Vin (+) --------- R1 ------------- R2 ------------- GND (-)
                                |
                                |
                                |
                                |
                             Vout (+)

R1 = x ohm
R2 = 2x ohm

Vout = [ R2 / (R1 + R2) ] * Vin

Portanto, se eu usar R1 =560 ohm e R2 = 1 Kohm, terei

Vout = [1000 / ( 1000 + 560 ) ] * 5 = 3,21V , portanto bem próximo dos 3.3V

Resposta 1 e 4:

ESP8266 - Teste de comunicação serial do Arduino com o ESP8266 :
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

Resposta 2 e 3 :

ESP8266 - Alimentação e consumo de energia:
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

ESP8266 - alimentação no Protoboard :
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

Resposta 5: 

ESP8266 - Conexão USB Serial:
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

ESP8266 - Interface Serial 5V - testado e aprovado OK :
http://labdegaragem.com/forum/topics/conhecendo-o-esp8266?commentId...

Imhugo;
Obrigado novamente
Continuando.
Posso usar o LD33 ligado em minha fonte não regulada onde vc alimentou edm 3,3V? Minha fonte tem 3V, 4,5V, 6V etc e é de 2A.
Segundo li o LD33 pode fornecer até 800mA e suporta até 15 V na entrada.
Curiosidades: fiz uma outra montagem (VOU FAZER A TUA) com todas as velocidades do IDE e do ESP8266
e somente consegui alguma coisa (!!!!!!!!) com 9600 e 115200 respectivamente porém todas a informaçoes eram PRECEDIDAS por caracteres estranhos (consegui versão, sinais dos vizinhos, ip, modo, etc).
O mais curioso foi na 1ª vez ter aparecido o IP 10.0.0.107 que é coerente com minha rede/roteador e o ping deu certo
e na lista do roteador apareceu esse IP.
PORÉM nas outras tentativas apareceu outro IP (192.168.4.3) que não é coerente com nada. Não deu ping e não apareceu na lista do roteador. Você tem alguma explicação?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço