Conhecendo o Shield WiFi ESP8266 para Arduino

Conhecendo o Shield WiFi ESP8266 para Arduino

Há alguns meses, esta placa chegou na MasterWalker Shop por engano, pois havíamos pedido a Wemos D1 R2 e o fornecedor acabou nos entregando este shield. Mesmo ele tendo chegado para nós por engano, decidimos ficar com algumas peças para assim que possível, algum membro da equipe fazer testes com ele e produzir artigos aqui para o blog. Pois bem, eu me habilitei a desvendar esta placa, pois não tínhamos nenhuma documentação sobre ela e nos primeiros testes não conseguimos fazer ela funcionar sozinha e muito menos com o Arduino.

img00_conhecendo_o_shield_wifi_esp8266_para_arduino_esp12e_escudo_ethernet_sem_fio_automacao_residencial_nodemcu

Passado algum tempo desde a última vez que mexi com ela, resolvi pesquisar informações que pudessem me ajudar a fazer progressos (enviei e-mails para o criador da placa, mas foram em vão, pois ele nunca me respondeu). Me deparei com diversas pessoas em diversas partes do mundo fazendo os mesmos questionamentos:

Por onde começar com a placa? Para que serve a DIP Switch de 4 vias? O que cada uma das vias faz? É possível utilizar o shield sozinho? É só acoplar ao Arduino, programar e já funciona? Precisa de adaptador USB serial para utilizar a placa? Como fazer upgrade de firmware?

Levei alguns dias para conseguir as informações necessárias, mas valeu a pena, pois consegui fazer o shield funcionar com Arduino e sozinho também, apesar das informações e documentação sobre ele serem extremamente escassas. Além disso, consegui as respostas para todos estes questionamentos citados acima e muitos outros que eu tinha.

Portanto, acompanha aí, pois tem bastante informação legal sobre este shield nesta postagem.

O Shield WiFi ESP8266 foi desenvolvido com a finalidade de facilitar a conexão do Arduino a redes WiFi através do ESP8266 modelo ESP-12E. Geralmente, é necessário montar um circuito com vários componentes e fiação para interligar um ESP8266 ao Arduino, contudo, ao utilizar o Shield WiFi ESP8266 ESP-12E o trabalho se resume apenas em acoplar a placa em cima do Arduino, posicionar as vias da DIP switch de acordo com o modo de funcionamento do shield e programar o Arduino para se conectar a redes WiFi. Além disso, a placa pode ser utilizada sem o Arduino, pois possui toda pinagem do ESP-12E disponível.

Na placa há a informação de que ela foi criada por uma pessoa chamada WangTongze e quem detém os direitos da mesma é a elecshop.ml. Inicialmente o criador da placa tentou buscar recursos para o seu projeto através do Indiegogo (site de financiamento coletivo), mas pelo jeito ele não teve sucesso na arrecadação. Clicando AQUI você pode ver mais informações sobre a campanha que ele fez para arrecadar fundos. Mesmo não tendo sucesso com a campanha, uma empresa (elecshop.ml) se interessou e passou a produzir o shield em grande escala.

Abaixo listei as principais características deste shield.

Características do ESP8266 modelo ESP-12E:

– Arquitetura RISC de 32 bits
– Processador pode operar em 80MHz / 160MHz
– 32Mb de memória flash
– 64kB para instruções
– 96kB para dados
– WiFi nativo padrão 802.11b/g/n
– Opera em modo AP, Station ou AP + Station
– Possui 11 pinos digitais
– Possui 1 pino analógico com resolução de 10 bits
– Pinos digitais, exceto o D0 possuem interrupção, PWM, I2C e one wire
– Programável via USB ou WiFi (OTA)
– Compatível com a IDE do Arduino
– Compatível com módulos e sensores utilizados no Arduino

Características do shield em geral:

– Medidas do Arduino Uno R3 e a pinagem é compatível com Arduino Uno, Mega 2560, Leonardo e derivados.
– Versões menores do Arduino (Nano e Pro Mini, por exemplo) são compatíveis, mas as conexões deverão ser feitas através de jumpers.
– Tensão do Arduino (5V) é utilizada para alimentar o shield.
– Possui regulador de tensão AMS1117 3.3V, logo, a tensão de 5V fornecida pelo Arduino é reduzida para alimentar o shield sem necessidade de alimentação externa.
– Possui conversor de nível lógico embutido, logo, o nível TTL do Arduino (5V) não danifica o ESP8266 que opera com nível TTL 3.3V.
– Possui uma chave DIP de 4 vias que serve para alterar os modos de funcionamento da placa.
– Modos de funcionamento disponíveis: Shield WiFi para Arduino / envio de comandos AT através do Arduino / upgrade de firmware via conversor USB Serial externo / standalone.
– Possui LEDs indicativos (PWR / DFU / AP / STA).
– Por ser em formato de shield, possibilita que outros shields e módulos possam ser inseridos.
– Possui o botão ESP-RST para dar reset no ESP8266.
– O pino ADC do ESP8266 está disponível de duas formas na placa, sendo a primeira em um pino com faixa de leitura de 0 a 1V e a segunda forma na faixa de 0 a 3.3V.

Na imagem abaixo temos em destaque as principais partes do shield:

img01_conhecendo_o_shield_wifi_esp8266_para_arduino_esp12e_escudo_ethernet_sem_fio_automacao_residencial_nodemcu

A (PINOS DIGITAIS): sequência de pinos utilizados pelo Arduino.

B (PINAGEM DO ESP8266): ESP8266-12E e seus respectivos pinos. Na parte de trás da placa há a nomenclatura dos pinos.

C (CONEXÃO DE ADAPTADOR USB SERIAL EXTERNO): sequência de pinos utilizados para conectar o adaptador USB Serial externo para gravação de firmware ou depuração do ESP8266.

D (PINOS DE MANUTENÇÃO DO SHIELD): sequência de 3 pinos identificados como Maintenance Only e que devem ser utilizados para verificação se o regulador de tensão está recebendo e fornecendo as tensões corretamente. NÃO DEVE SER UTILIZADO COMO FONTE DE ALIMENTAÇÃO.

E (CHAVE DIP PARA ALTERAR MODOS DE FUNCIONAMENTO): chave DIP de 4 vias para mudar os modos de funcionamento.

VIA 1 (P1) e VIA 2 (P2): utilizados para conectar o RX (representado por P1) e TX (representado por P2) do ESP8266 aos pinos D0 (RX) e D1 (TX) do Arduino. P1 e P2 devem estar na posição ON para que o ESP8266 possa enviar comandos AT através da serial do Arduino. Neste caso, temos RX do ESP8266 conectado ao RX do Arduino e TX do ESP8266 conectado ao TX do Arduino, desta forma, o Arduino fará a ponte para conexão com a USB do computador. P1 e P2 na posição OFF inabilitam a conexão de RX e TX do ESP8266 ao RX e TX do Arduino.

OBS: para este modo (envio de comandos AT através do Arduino) há uma particularidade em relação ao shield e que vou explicar mais abaixo.

VIA 3 (P3) e VIA 4 (P4): utilizados para habilitar e desabilitar o modo de gravação de firmware para o ESP8266. Para habilitar a gravação / upgrade de firmware no ESP8266, P3 e P4 devem estar na posição ON. Quando P4 estiver na posição ON, o LED DFU irá acender, indicando que o ESP8266 está habilitado para receber o firmware. Para desabilitar o modo de gravação de firmware e colocar o ESP8266 em funcionamento normal, basta colocar P3 e P4 na posição OFF.

OBS: todas as 4 VIAS em posição OFF, indicam que o ESP8266 está operando em modo normal junto ao Arduino.

F (ADC DO ESP8266): pinagem referente ao ADC do ESP8266. Um pino que opera na faixa de 0 a 1V e outro pino que opera na faixa de 0 a 3.3V. Estes pinos só serão utilizados quando estiver utilizando o ESP8266 sozinho (modo standalone).

G (RESET DO ESP8266): botão utilizado para dar reset no ESP8266. Sempre que alterar a posição das vias da chave DIP, você deverá pressionar o botão ESP-RST.

H (PINOS ANALÓGICO E ALIMENTAÇÃO): sequência de pinos utilizados pelo Arduino.

Neste apanhado rápido já dá para saber as funções de cada uma das partes da placa.

Particularidade ou seria um erro de desenvolvimento?

Conforme eu havia mencionado ali em cima, este shield tem uma particularidade nas vias P1 e P2 e esta particularidade, na verdade gera uma grande dúvida nas pessoas que tentam utilizar a placa, pois ninguém conseguiu entender qual o verdadeiro propósito destas duas vias.

Segundo o criador do Shield WiFi ESP8266, ao conectá-lo ao Arduino apenas 2 pinos serão requisitados. Estes pinos seriam o D0 e D1 (RX e TX do Arduino respectivamente) e além disso, as vias P1 e P2 do shield precisam estar na posição ON para que haja a conexão.

Num dos únicos documentos em chinês que consegui a respeito deste shield, o criador da placa diz:

P1 e P2 são codificadores de bits e são utilizados para determinar se a serial do ESP8266 está ou não conectada a D0 e D1 do Arduino.

Em um outro trecho do documento é mencionado:

Esta placa de expansão mantém a serial do Arduino ocupada, conectando RX do ESP8266 ao TX do Arduino e TX do ESP8266 ao RX do Arduino, de forma que comandos AT possam ser enviados ao ESP8266.

Neste último trecho do documento é que as informações não batem. Vejamos o porquê:

Os pinos D0 (RX) e D1 (TX) do Arduino, correspondem a comunicação serial / USB, logo, estes pinos se mantém ocupados sempre que enviamos código para a placa ou utilizamos o monitor serial. Portanto, se as vias P1 e P2 do shield estiverem na posição ON, o ESP8266 estará utilizando D0 e D1 do Arduino e não será possível fazer o envio de códigos ou utilizar o monitor serial, pois a serial vai estar ocupada.

Um outro ponto importante é que o criador do shield diz que com este formato de conexão entre TX e RX do ESP8266 com RX e TX do Arduino, será possível fazer o envio de comandos AT. Para que a serial do Arduino possa servir de “ponte” entre o ESP8266 e o computador para envio de comandos AT, é necessário que o RX do ESP8266 esteja conectado ao RX do Arduino e o TX do ESP8266 esteja conectado ao TX do Arduino.

Logo, não fica claro qual das duas formas de conexão o criador do shield pensou em fazer, pois se considerarmos a primeira forma, onde RX do ESP8266 fica conectado ao TX do Arduino e TX do ESP8266 se conecta RX do Arduino, temos apenas uma conexão com intuito de utilizar a placa como shield do Arduino para atribuição do WiFi, contudo, perderíamos a serial do Arduino para envio de códigos e uso do monitor serial. Além disso, este formato de conexão não nos permite enviar comandos AT ao ESP8266. Já na segunda forma, onde RX do ESP8266 fica conectado ao RX do Arduino e TX do ESP8266 se conecta ao TX do Arduino, temos uma “ponte” para que a serial do Arduino seja utilizada para envio de comandos AT, porém, não será possível usar o shield para atribuição de WiFi ao Arduino.

Para ficar mais claro esta questão dos pinos, fiz duas tabelas. Na primeira é mostrado a conexão entre os pinos (D0 e D1) do shield ao D0 e D1 do Arduino ao acoplar uma placa na outra. Na segunda tabela é mostrado a conexão como deveria ter sido projetada para o shield.

Conexão que ocorre ao acoplar o shield no Arduino:

img02_conhecendo_o_shield_wifi_esp8266_para_arduino_esp12e_escudo_ethernet_sem_fio_automacao_residencial_nodemcu

Coloquei as vias P1 e P2 na posição ON e fiz testes na placa conforme as ligações acima e o resultado (real) foi o mencionado na imagem.

Conexão correta para ter o resultado esperado pelo desenvolvedor do shield:

img03_conhecendo_o_shield_wifi_esp8266_para_arduino_esp12e_escudo_ethernet_sem_fio_nodemcu_automacao_residencial

Para este teste eu mantive P1 e P2 na posição ON, contudo, depois de receber erros no monitor serial do Arduino ao ligar conforme a primeira tabela, pensei que o criador da placa pudesse ter invertido os pinos e por isso não funcionava. Logo, o que fiz foi dobrar os contatos D0 e D1 do shield:

img04_conhecendo_o_shield_wifi_esp8266_para_arduino_esp12e_escudo_ethernet_sem_fio_automacao_residencial_nodemcu

Em seguida inverti as conexões:

img05_conhecendo_o_shield_wifi_esp8266_para_arduino_esp12e_escudo_ethernet_sem_fio_automacao_residencial_nodemcu

Veja que o D0 do Arduino foi conectado ao D1 do shield e D1 do Arduino conectei ao D0 do shield. Ao utilizar a conexão desta forma (Arduino sendo utilizado como ponte de conexão), consegui fazer o envio de comandos AT ao ESP8266 e comprovei que realmente o criador do shield cometeu um erro e inverteu os pinos. Espero que um dia ele se manifeste e explique se realmente foi um erro.

OBS: para upgrade de firmware do shield é necessário usar um adaptador USB serial. Utilizando o Arduino como ponte só será possível fazer o envio de comandos AT.

Este erro cometido pelo desenvolvedor não faz a placa ser menos útil, pois temos como solução dobrar os pinos D0 e D1 da placa conforme eu fiz, cortá-los, já que precisamos deles apenas na parte de cima do shield ou então basta deixá-los normal, conectados ao Arduino e manter as vias P1 e P2 sempre em OFF e fazer o envio de comandos AT e upgrade de firmware utilizando um adaptador USB serial externo.

Nos testes que fiz com o shield, o mesmo se mostrou bem estável e facilitou bastante a montagem de circuitos. Fiz testes com Arduino Uno R3 e o Mega 2560 R3.

Agora que já conhece os detalhes deste shield, que tal aprender a fazer upgrade de firmware nele para começar a colocar em prática alguns projetos?! Acesse nossa postagem Upgrade de Firmware no Shield WiFi ESP8266 para Arduino.

Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.

Conhecendo o Shield WiFi ESP8266 para Arduino
8 votos / Média de avaliação: 5 / Pontuação: 100%


Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação pela Faculdade Presidente Antônio Carlos, fundador e CEO da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 7 comentários para esta postagem
    • Euler Oliveira Autor às 09:01

      Olá João Ricardo.

      Não é necessário utilizar nenhuma biblioteca para programar este shield. A programação desta placa é feita da mesma forma que no ESP8266, contudo, conforme foi explicado na postagem, há botões na placa que possuem funções específicas para upgrade de firmware e para que a placa possa funcionar como shield ao ser conectada ao Arduino.

      Há bibliotecas que facilitam sim a programação de webserver com ESP8266 e estas bibliotecas são compatíveis com o shield.

  1. Daniel às 12:58

    Efetuei a aquisição do Shield “WIFI ESP8266-12E” mas em meu caso mesmo com a inversão da conexão, posicionamento do DIP-SWITCH e alternar velocidades, não foi possível fazer o upload do programa.
    Poderia informar se apenas utilizando o Shield WIFI e Arduino se conseguiu fazer o upload do programa ? Ou como outros sites informam utilizaram um modulo adicionar para isto ?

    Grato, abraço, Daniel

  2. dex às 16:45

    I flashed shield and it’s ok. Now i would like to use it without Arduino. To upload sketch, what i need? How to set up board in tools? How to wire shield with USB to TTL? Should it stayed the way it was while i flashed it? How to position DIP switches?

    Thanks in advance.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *