A comunicação entre o Shield WiFi ESP8266 com o Arduino…
Solucionando a Serial RX / TX do Shield WiFi ESP8266
Ao utilizar o Shield WiFi ESP8266 (Moer), alguns usuários encontram problemas para carregar código no Arduino quando o shield está acoplado a placa e as vias da DIP switch estão em OFF. Além disso, o usuário não consegue comunicar o shield com o Arduino através da serial nativa. Nesta postagem vou mostrar o que causa esse problema no Shield WiFi ESP8266 e como solucionar.
Na postagem Conhecendo o Shield WiFi ESP8266 para Arduino foi feito um apanhado geral sobre a placa. Logo, recomendo que você leia a postagem caso ainda não tenha lido.
Conforme falei na postagem Shiald e Shield WiFi ESP8266? Será que tem diferença?, se tratando do Shield WiFi ESP8266 (também conhecido como ESP8266 ESP-12E UART Wireless WIFI Shield TTL Converter), é possível encontrar no mercado pelo menos três placas que aparentemente são iguais, mas na verdade estas placas possuem alguns pontos que as diferem, até mesmo na questão de funcionamento com o Arduino através de comunicação pela serial nativa.
Se você possui o Shield WiFi ESP8266 com as características iguais as destacadas na imagem abaixo, não consegue carregar código no Arduino quando o shield está acoplado a placa e as vias da DIP switch estão em OFF e não consegue comunicar o shield com o Arduino através da serial nativa, então recomendo que leia esta postagem até o final:
Nesta placa a palavra “More” é escrita “Moer”, ou seja, errada. Se fosse somente a escrita errada, pode ter certeza que seu shield estaria funcionando perfeitamente, contudo, o problema nesta placa vai além de uma simples palavra escrita errada.
Se esta placa (Moer) for acoplada ao Arduino (com as vias da DIP switch em OFF ou ON) e o usuário tentar carregar um código no Arduino, uma mensagem de erro vai aparecer na IDE, pois o carregamento irá falhar. Isto ocorre devido a um erro de componente utilizado na montagem do shield.
O Shield WiFi ESP8266 que possui montagem e funcionamento corretos, tem soldado dois MOSFETs de Canal N e que estão identificados como J1Y. Um dos transistores J1Y está conectado ao RX do ESP8266 e o outro está conectado ao TX do ESP8266. Na imagem abaixo você pode ver em destaque os dois transistores:
Este transistor J1Y é um BSS138 que tem como finalidade fazer com que circuitos de nível lógico 5V possam se comunicar com circuitos de nível lógico 3.3V e vice-versa. Como o ESP8266 possui nível lógico de 3.3V e o Arduino possui nível lógico de 5V, é necessário usar um conversor de nível lógico para garantir o perfeito funcionamento do ESP8266.
Já no Shield WiFi ESP8266 (Moer), há soldado na placa dois transistores identificados como J3Y. Na imagem abaixo você pode ver em destaque os dois transistores:
O transistor J3Y é um S8050 NPN e este tipo de transistor comumente é utilizado em circuitos amplificadores. Por algum motivo no momento da montagem do Shield WiFi ESP8266 (Moer), utilizaram o transistor J3Y ao invés do conversor de nível lógico J1Y.
Desta forma, os pinos RX e TX do ESP8266 não vão funcionar como deveriam e consequentemente o shield não irá ter nenhuma comunicação serial com o Arduino. Como o shield se comunica com o Arduino através da serial nativa (pinos D0 e D1), com ele acoplado ao Arduino o carregamento de código (no Arduino) nunca será concluído com sucesso, pois em alguns casos sempre vai existir aproximadamente 2.8V no RX e TX do Arduino ou 0V constante, tudo isso por causa dos transistores errados.
Após todas estas informações, fica claro que a única solução para o shield (Moer), é a substituição dos transistores J3Y pelos transistores J1Y. Para este procedimento você vai precisar além do shield (Moer) de paciência, e de:
01 – Ferro de solda
01 – Estanho
01 – Pinça ou Alicate de Bico
01 – Sugador de Solda
02 – BSS138 (J1Y)
O transistor BSS138 (J1Y) é utilizado no Conversor de Nível Lógico 3.3V / 5V.
OBS: o procedimento a seguir exige que você saiba manusear um ferro de solda e que tenha o mínimo de experiência com soldagem. Os componentes que serão removidos e os que farão a substituição, são componentes SMD e que exigem um maior cuidado e paciência na hora de fazer a soldagem com um ferro de solda comum. Procure não deixar o ferro de solda durante muito tempo nos terminais dos transistores, pois isto poderá danificá-los.
Com o ferro de solda quente, aqueça um dos terminais do transistor e coloque um pouco de estanho. Faça este procedimento para cada um dos terminais dos dois transistores. O excesso de solda nos terminais vai facilitar a remoção dos transistores:
Agora pegue a pinça / alicate, segure o transistor pelas laterais, aqueça o lado do transistor que tem apenas um terminal e force o transistor para cima de forma que o terminal se solte da solda. Ainda com a pinça / alicate segurando o transistor, tente colocar a ponta do ferro de solda encostada nos outros dois terminais e force o transistor para cima para terminar de soltar ele da placa. Faça este procedimento para os dois transistores e tenha bastante cuidado:
Removido os dois CIs J3Y do shield, basta posicionar o CI J1Y no lugar, segurá-lo com a pinça / alicate e aquecer cada um dos terminais para que o estanho se junte ao contato. Se os contatos estiverem com pouca solda, aqueça cada um deles e coloque mais estanho. Faça este procedimento para os dois transistores e tenha bastante cuidado:
Terminado o reparo, seu shield que antes não tinha comunicação direta com o Arduino, passou a ter conexão com a placa através da serial nativa (pinos D0 e D1).
Um primeiro teste para confirmar que o reparo deu certo, é acoplar o shield ( com todas as vias da DIP switch em OFF) ao Arduino, conectar o cabo USB a placa e ao computador, e tentar carregar um código no Arduino. Se tudo estiver OK, o código será carregado com sucesso.
Como teste final, recomendo que você leia e execute os passos da postagem Comunicando o Shield WiFi ESP8266 com o Arduino através da Serial Nativa.
Vale ressaltar que, o Shield WiFi ESP8266 está no mercado desde 2015 e infelizmente esta versão (Moer), desde então vem sendo comercializada com esse erro nos transistores utilizados na montagem.
Espero que esta publicação possa ajudar o pessoal que adquiriu esta versão do shield (Moer) e deixou ele encostado ou está prestes a jogar ele fora porque não consegue utilizá-lo junto ao Arduino.
Se quer aprender a fazer upgrade / modificação de firmware no shield para começar a colocar em prática alguns projetos, recomendo que acesse nossa postagem Upgrade de Firmware no Shield WiFi ESP8266 para Arduino.
Gostou desta postagem? 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.
Postagem anterior: Como usar com Arduino – Interruptor Paralelo (Three Way)
Prezados, boa noite!
Tudo bem? Espero que sim.
Realizei a aquisição do Shield WiFi ESP8266 no Mercado Livre e o vendedor me envio o “Moer”. Pesquisei sobre ele e logo encontrei o post/tutorial do Euler Oliveira. Li todo o conteúdo desde o início. Segui as orientações e realizei a substituição dos transistores J3Y (S8050 NPN ) pelos mosfets J1Y (BSS138), fiz o upgrade do firmware no Shield WiFi ESP8266. Consegui subir o código para o Arduino, porém não consigo subir o código para o Shield. Na etapa final da transferência do código, quando esta conectando, é emitido a seguinte mensagem:
“… FatalError: Failed to connect to ESP8266: Timed out waiting for packet header
_
a porta serial _
selecionada não existe ou sua placa não está conectada”
Por gentileza, alguém podem me auxiliar a contornar esse problema?
Desde já, agradeço!
Eu ia comprar um Shield desses. Não tinha notado essa diferença. Bom saber!