.

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: 17551

Respostas a este tópico

Muito boa ihmugo!

Abs.

Bem interessante. Logo que tiver um tempo eu testarei por aqui. Será que funciona em um UNO ?

Abrax...

Sim Carlos.

Já que somente usa a comunicação serial da placa:

TX , RX, e GND.

TX do UNO no RX do ESP > RX do UNO no TX do ESP > e unir os GNDs UNO e ESP.

Abs.

Eu sinceramente não sei dizer se funcionaria no UNO, pois se seu módulo ESP8266 veio de fábrica a 115200 bauds, vc terá que usar hardware serial pra enviar comandos AT.

Mas como o cabo USB estará conectado ao arduino, pois vc necessitará do serial monitor para digitar os comandos, não sei dizer se a hardware serial estará disponível para a comunicação entre o arduino e o módulo ESP8266.

É o caso de tentar por si mesmo, mas caso não consiga, faça com o MEGA, pois vc terá a disposição vários pares RX/TX pra comunicação serial

Fiquei na duvida agora depois da resposta do ihmugo, mas seria muito bem testar o UNO também já que de certa forma estamos fazendo laboratório, assim confirmamos essa condição também.

Abs.

Olá,

Pelo oque consegui verificar nos foruns e tutoriais as primeiras versões do ESP8266 vinham configuradas de fábrica  com serial a 9600bps, já as versões mais novas vem todas em 115200bps.

Para usar a softserial do arduino com o ESP seria preciso primeiramente acessar o ESP via hard serial em 115200 e então abaixar a velocidade de 115200 para algo como 9600 ou 19200bps, desta forma conseguimos superar a limitação de uma porta serial do hardware do ATmega328.

Vamos testando e colocando os resultados aqui.

Abraço.

Isso mesmo Wiechert, para aqueles que possuem o módulo ESP8266 que veio de fábrica a 115200 bauds, convém primeiro abaixar a velocidade para 9600 bauds.

Depois que conseguir abaixar pra 9600 bauds, aí sim dá pra usar no arduino UNO, pois a 9600 bauds dá pra comunicar com o módulo via software serial e usar cabo USB pra ter disponível o serial monitor.

Atenção porque na maioria dos sites e fóruns na internet, diz-se que o comando pra reduzir a velocidade através do comando AT é: AT+CIOBAUD=9600

Mas no meu módulo ESP8266, se eu desse esse comando aí, a velocidade voltava pros 115200 bauds assim que o módulo era reinicializado, seja por corte de energia, seja por comando AT+RST, ou seja, esse comando AT+CIOBAUD=XXXX não prestava pra nada, pois não era definitivo

O Carlos Kwiek relatou que no caso dele, funcionou com o comando AT+BAUD=XXXX , onde XXXX é a velocidade nova que se deseja dar. No meu caso, esse comando  sugerido retornou erro.

Pra mim, a velocidade só ficou definitivamente gravada quando eu dei o comando: AT+UART_DEF=9600,8,1,0,0 

Pelo que pude perceber dando uma rápida olhada em algumas bibliotecas pro ESP8266, tais bibliotecas usam 9600 bauds na comunicação do arduino com o módulo ESP8266. Então, já que vc irá reduzir a velocidade do módulo, acredito realmente que seja importante reduzir pra 9600 bauds pra garantir bom funcionamento das bibliotecas (sem que tenha que se fazer alterações nas bibliotecas). A 19200 ou outra velocidade, não sei se as bibliotecas funcionarão bem.

IMPORTANTE: esse lance de reduzir a velocidade do módulo ESP8266 pra 9600 bauds só é necessária se vc quiser usar o arduino em conjunto com o ESP8266. Mas se vc quiser usar o ESP8266 no modo STAND ALONE, ou seja, sem arduino mas sim com placa FTDI pra fazer upload de sketches diretamente pro ESP8266, convém deixar em 115200 bauds, pois assim fica mais rápido de fazer upload, como o Carlos Kwiek mostrou nos vídeos dele. ESP8266 stand alone a 9600 bauds é terrível, extremamente entediante esperar pra fazer upload.

Carlos Kwiek;
Recebi notificação de duas repostas tuas que foram removidas. Você saberia me dizer por que?
Foram hoje logo após meia-noite

Muito interessante essa discussão. Eu fiz testes rápidos, ontem, após os testes que relatei em outra resposta.

Realmente eu não conseguí a comunicação por comandos AT, mas desta vez, pelo menos eu recebia "lixo" na tela, o que é um alento, visto que nesse caso, parece haver alguma comunicação.

O módulo realmente começou em 115200, e eu fui descendo a velocidade até chegar ao mínimo. Em 115200 foi a única velocidade que retornou "ready", mas mesmo assim depois de muito "lixo", e o que é mais preocupante, "QMEM CHECK FAIL ! ! !".

Mesmo depois do "ready", os comandos AT não funcionavam.

Vou estudar as sugestões nesse tópico para ver se existe alguma alteração que eu possa fazer que melhore o resultado.

A vantagem é que hoje estou com o dia livre para dedicar a isso.

Acabei de ler as respostas e vejo que para obter sucesso com o UNO devo baixar a velocidade de comunicação para 9600, já que meus módulos estão com 115200 de fábrica.

Para isso tenho fazer comunicação direta, via FTDI, com o ESP para laterar a velocidade, e tomar os cuidados apontados pelo Imhugo em relação aos comandos.

O problema é que até o momento não conseguí fazer comunicação serial com meus ESPs. Vou perguntar ao tio google para ver o que arrumo.

Abrax...

Veja, com o UNO ou com MEGA, voce estará na mesma situação, porque vai estar usando os recursos do FTDI conversor USB/Serial apenas, igual ao seu conversor atual, a placa não vai alterar nada, o que vai alterar com certeza, é atualizar o firmware.

Abs.

Tente fazer o seguinte:

Verifique  se sua Porta COM esta na mesma velocidade.

Eu recomendo muito! Que voce atualize seu firmware e com certeza seu problema sera eliminado.

Use a versão 00180902 para programar com a IDE Arduino, quando atualizar para esta versão a velocidade vai voltar para 9600, poderá enviar comandos AT normalmente e poderá alterar a velocidade com AT também e deixar com 115200 logo subir códigos via IDE.

Se não souber onde baixar um firmware avise.

Abs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço