Manual

do

Maker

.

com

Shield wifi com ESP8266 para Arduino

Shield wifi com ESP8266 para Arduino

Esse shield WiFi com ESP8266 é tão incrível e oferece tantas possibilidades que serei obrigado a particionar o artigo sobre ele. Nesse primeiro artigo, vou fazer a apresentação de seus recursos, já que não encontrei uma documentação detalhada e perceba, tem recursos "empilhados" nele. Após esse artigo, você estará apto a utilizá-lo com excelência.

Apresentação do shield wifi com ESP8266

Todos os recursos dele estão disponíveis nesse shield, de modo que você pode combinar o uso dos GPIO do Arduino e do ESP8266, lembrando que ambos tem nível lógico diferentes e esses GPIO não devem ser interligados, exceto utilize um divisor de tensão para tal.

Pode-se fazer a comunicação entre o Arduino e o ESP8266 de duas formas; utilizando comandos AT do firmware padrão ou conexão serial entre eles. Agora, um momento de reflexão, considerando alguns pontos:

  • O Arduino é uma MCU AVR de 8bits@16MHz
  • O ESP8266 é uma CPU Tensilica de 32bits@80/160MHz
  • O Arduino tem uma quantidade considerável de GPIO @5V
  • O ESP8266 tem poucos GPIO @3V3
  • O Arduino tem uma série de pinos AD 10bits@5V
  • O ESP8266 tem 1 pino AD 10bits@1V (specs)
  • O ESP8266 tem WiFi

Como você pode ver, ambos tem vantagens e desvantagens e esse shield wifi com ESP8266 veio para sanar essas deficiências de cada um, permitindo que você use o melhor de cada. Agora quanto à reflexão. Será que vale a pena utilizar o ESP8266 como  slave, apenas pela comunicação WiFi? Qual será o firmware ideal para utilizar nesse ESP8266? Como gerenciar o Arduino a partir do ESP8266? Como gravar um novo firmware nesse ESP8266? - Digo que todas essas questões serão exclarecidas e para isso, fundamentalmente será necessário dominar o shield, por isso, sigamos.

Sobre os GPIO do Arduino

Como todo o bom shield, os GPIO estarão disponíveis na parte superior. O shield é "silkado", portanto a identificação dos pinos é imediata. Até aqui, nenhuma novidade.

Sobre os GPIO do ESP8266

Os pinos de GPIO estão disponíveis sobre a placa também, porém o silk está na parte de trás do shield. Podemos contar com 9 pinos de IO e 1 pino do ADC, além do pino 3V3, GND, RST e CHPD. Desse modo, uma das opções é gravar o ESP8266 através de um FTDI e isso significa também que o shield wifi com ESP8266 é independente de um Arduino, limitando-se aos seus próprios recursos nesse caso.

 

Conversor AD do ESP8266

Aqui tem uma coisa muito, muito legal mesmo. Esse shield wifi com ESP8266 tem 2 pinos de acesso ao conversor ADC, sendo que um deles é o acesso direto, onde você deve obrigatoriamente entrar com a tensão limite de 1V. Mas bem ao lado desse pino encontra-se um segundo acesso ao ADC, onde você pode entrar com a tensão de 3V3. Isso significa que se estiver trabalhando com o nível lógico do ESP8266, não precisará de componentes adicionais para utilizar o pino analógico!

Porta de debug

Esse é mais um recurso apaixonante desse shield wifi para ESP8266. Essa porta permite colocar um FTDI no barramento serial. Apenas tenha certeza de que seu FTDI está atuando no nível lógico do ESP8266.

Do lado oposto da board (alí próximo  ao GPIO 13  do Arduino) tem uma barra de GPIO do ESP8266, onde sai a TTL diretamente do ESO com o Arduino. Provavelmente dá pra colocar um RX no TX e fazer sniffing da comunicação, o que auxiliaria bastante na análise durante o desenvolvimento. Vou experimentar e digo em um próximo artigo. As razões pela incerteza até o momento estão descritas mais abaixo.

Pinos de alimentação extra

Isso é apaixonante. Mais uma vez, se precisar de um pino extra para 5V, 3V3 ou GND, basta adicionar uma barra de 3 pinos ao lado da porta de debug. Mais uma vez, um recurso que ajuda evitar a utilização de protoboard.

Gravar um novo firmware no ESP8266

Como os pinos estão dispostos sobre esse shield wifi para ESP8266, podemos gravá-lo utilizando um FTDI. Mas há uma segunda opção, que é mudar as chaves 3 e 4 do switch para ON e então conectar o TX do ESP8266 ao TX da porta de debug. O mesmo para o RX. Eu não confio nesse processo porque o nível lógico será 5V. Optando pelo segundo processo, atente-se em desligar o Arduino da USB primeiramente. Coloque o RST do Arduino ao GND. Após mudar as chaves do switch, ligue novamente o Arduino, faça a gravação, desligue novamente o cabo USB e então retorne as chaves do switch para a posição OFF.

Utilizar o ESP8266 no modo AT

Para isso, você não precisa gravar um novo firmware, simplesmente interaja com ele diretamente.

Utilizar comunicação livre entre o Arduino e o ESP8266

E aqui entra aquela questão mais acima; qual dos dois será o "cérebro"? Essa decisão fica por sua conta, mas considerando que ambos podem ser programados através da interface do Arduino, minha humilde opinião a respeito é que o ESP8266 deveria ser o cérebro. Outra coisa extremamente empolgante é que cada qual terá sua lógica implementada, com o Arduino controlando os periféricos conectados  a ele, enquanto o ESP8266 apenas "dá ordens" e eventualmente controla os dispositivos conectados a seus próprios GPIO. Ou vice-versa.

SoftwareSerial

Essa é uma opção para conectar o Arduino UNO ao ESP8266. Veremos as formas de comunicação em outro artigo.

I2C

Também dá pra fazer a comunicação serial utilizando I²C. Algo semelhante a esse artigo. Vamos testar tudo, não se preocupe.

Qual Arduino utilizar com esse shield?

Você pode utilizar o Arduino UNO ou o Arduino Leonardo, mas utilizar o Arduino Leonardo te dá uma vantagem em relação à porta serial extra, sendo que você poderá se comunicar com o ESP8266 pela Serial1 e enviar comandos ou monitorar status através da Serial, no Serial Monitor da IDE do Arduino.

DIP switch

Não encontrei documentação, o website no silk da board  não está funcionando e a única coisa que achei foi um video com um inglês muitíssimas vezes melhor que o meu, mas acredito que não pude compreender 100% do que ele falou justamente pela minha deficiência, mas "acho" que ele não fala muito claramente as palavras. Basicamente:

Pino 1 e 2

Aqui sugiro que você veja a partir de 1:42 do video mais abaixo. Aparentemente, esses 2 pinos do DIP switch são para a porta de debug, mas vou constatar no teste prático do próximo artigo porque "pode ser" que os pinos 1 e 2 não estejam conectados a nada (a conexão pode ser direta por baixo do DIP switch). Olhando nas trilhas do DIP switch, colocar o pino 1 em ON interconecta o pino TX de debug ao TX do ESP diretamente, sem divisor de tensão, portanto não sugiro que use nível lógico 3V3. O pino 2 do DIP switch interconecta o RX dos pinos de debug ao RX do ESP8266 diretamente.

Na versão "Shiald" os pinos 1 e 2 estão conectados a um divisor de tensão para a comunicação com o ESP8266 em nível lógico de 5V pela porta de debug. Porém, o shiald não é estável.

Quando estiver em OFF, o pino 1 do DIP switch estará conectado ao pino 3 do Arduino. Dessa forma, presumo que o pino 3 do Arduino possa ser utilizado com SoftwareSerial como pino TX, pois colocando o pino 2 em ON,  obtem-se o RX do ESP8266.

Algumas coisas ainda são  especulações, mas no teste prático vamos ver tudo isso.

Pino 3 e 4

Os pinos 3 e 4 do DIP switch devem ser colocados em ON para flashing do ESP8266. Na board está escrito "DFU/NOR" e "DFU/LED" para os pinos 3 e 4 respectivamente.

Quando estiver em OFF, o pino 4 vai para um divisor de tensão. Já o pino 3 parecer não estar conectado a nada nessa posição.

ESP-RST

Esse botão faz o reset do ESP8266.

SPI

Os pinos do lado oposto da antena do ESP8266 são relacionados ao SPI.

Conectando a porta de debuging ao FTDI

Você precisará alimentar o ESP8266 a partir do FTDI. Coloque o VCC do FTDI ao 3V3, GND ao GND, TX ao RX e RX ao TX. Certifique-se de que seu FTDI está no nível lógico 3V3. Apesar de ter entrada para alimentação 5V, não vi divisores de tensão para o nível lógico nos pinos TX e RX, portanto não recomendo que utilize nada em 5V na porta de debug.

 

O video do China que fez o shield:

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

Com o shield wifi com ESP8266 sobre o Arduino

Nessa condição, considere que:

  • Não há comunicação direta entre eles
  • O Arduino não executa o flashing

Shield ou Shiald

Existem duas versões dessa board. A última é a que está escrito Shield.  Ela é estável e não apresenta problemas. Já a que vem escrito Shiald parece apresentar instabilidade no wifi por vezes.

Onde comprar?

Esse shield wifi com ESP8266 você encontra nesse link da EletroGate, e aproveite que é a versão 'shield', não a 'shiald'.

Próximo artigo

E no próximo artigo vamos fazer algumas brincadeiras com esse shield. Esse artigo é mesmo a introdução, já que não há outra documentação disponível. E se eu encontrar macetes nesse shield wifi com ESP8266, atualizo esse artigo para sempre servir como referência.

Se você tiver alguma experiência com esse shield e quiser compartilhar, comente!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.