MicroPython em um Sonoff Switch

MicroPython em um Sonoff Switch

Como instalar MicroPython em um Sonoff

Acredito que boa parte dos projetos de domótica começam pela automação de luzes e dispositivos conectados à rede elétrica. Nesse ponto, não temos outra saída senão usar relés. Até pouco tempo atrás, precisávamos comprar módulos relé e conecta-los em uma placa, como um ESP8266/ESP32 ou um Arduino. Esse tempo, entretanto, ficou para trás. O fato é que você não precisa mais criar seu módulo relé por conta própria, pois, dado os custos de produção, sai muito mais barato adquirir um módulo Sonoff Switch da ITEAD. Ainda não conhece? Deveria! Trata-se de um módulo barato, custa cerca de 3 dólares na China, e bem compacto.

Este módulo conta com um ESP8266, ou seja, você pode controlá-lo remotamente, e, a depender do modelo, conta com um, dois ou quatro relés. Esses módulos já vem com seu próprio firmware, que se integra com o aplicativo Ewelink e atende a comandos de voz pelo Alexa, Google Assistant e outros. Entretanto, o que me chamou mais a atenção neste módulo é que ele foi feito para ser hackeado! Como assim? É simples, a ITEAD deixou livres os pinos que nos permitem fazer uma conexão serial e simplesmente atualizar o firmware com um nosso. Bacana, não?

Vamos ver nesta postagem o que precisa ser feito para instalar o MicroPython em um Sonoff Basic Switch, modelo que conta com apenas um relé. Vamos lá!

Soldar

Bom, para aqueles que não são muito chegados a soldar, infelizmente, você precisará de uma habilidade mínima com um ferro de solda. Será necessário soldar uma barra de pinos de cinco pontos na placa para, a partir daí, você ligar um adaptador Serial para USB. Observe a imagem abaixo, gentilmente roubada da página do Andre Miller. 🙂 Consegue ver aqueles cinco furinhos quase no meio da placa? Pois é, é bem ali que você deve soldar a barra de pinos.

 

Uma vez que você tiver feito esta solda, você terá algo parecido com a imagem abaixo, também gentilmente furtada, mas desta vez do site Random Nerds. 🙂 Foi mal aí por tantos atos ilícitos, mas estou com preguiça de tirar fotos do meu próprio relé. 

 

Uma vez que você tem os pinos soldados, precisa saber o que cada pino significa, correto? Você também já deve saber que vou botar uma imagem logo abaixo e que essa imagem também foi roubada, né? Adivinhão! Os créditos já estão na própria imagem, então…

Conversor USB TTL

Pronto. Você fez a solda, queimou a ponta dos dedos, deixou pingar estanho na perna, mas tem sua placa prontinha. O que falta agora? Falta gastar dinheiro, amigão. Bom, deixa eu explicar melhor. Você precisa comprar um adaptador ?USB TTL, semelhante ao da foto abaixo. A partir daqui, não vou mais nem perder tempo dizendo que a foto não é minha, certo?

Comprei este módulo no site da AF Eletrônica, neste link. Observe que não é um componente caro, custa cerca de 10 reais e você também pode compra-lo no Mercado Livre. Só fique atento para adquirir o modelo correto. No meu caso, estou usando o PL2303HX USB Serial TTL. Uma vez que você tiver este conversor em mãos, note que atrás dele você tem a indicação do que cada pino faz. Você pode ver isso na linda imagem furtada abaixo.

Vê alguma semelhança da foto acima com aquela que demonstra o que cada pino do Sonoff significa? Notou a semelhança? Agora ficou fácil, né? É só conectar o pino 3v3 do conversor no 3v3 do Sonoff, RX no RXD e por vai. Pior que não, doido. Vai entender, mas você precisa trocar a conexão do TXD e RXD. Ou seja, conecte o TXD do conversor no RX do Sonoff. Da mesma forma, conecte o RXD do conversor no TX do Sonoff. Os pinos de 3v3 e Ground não mudam, porque se tivessem mudado isso, na moral, né.

MicroPython

Conectou os fios direitinho? Se sim, agora vamos baixar a versão para ESP8266 do MicroPython. Vá até este LINK e baixe a versão para ESP8266 mais atual. Trata-se de um arquivo com extensão .bin. Também precisamos de um aplicativo chamado esptool.py para fazer o upload do firmware. No meu caso, usei o PIP do Python para instalá-lo. No terminal, digite pip install esptool.

Feito isto, precisamos de uma mágica para fazer o upload do firmware para o Sonoff. Faça o seguinte, desconecte o conversor da porta USB do seu computador. Agora, aperte o botão preto que fica do lado da barra de pinos que você acabou de soldar. Com este botão apertado, conecte o conversor na máquina. Solte o botão. Pronto, o ESP8266 do Sonoff está em modo de Flash, aguardando ansiosamente para rodar MicroPython nele.

Antes de fazermos o upload do firmware, vamos limpar a memória flash do Sonoff. Execute o seguinte comando no terminal, substituindo a porta apenas.

sudo esptool.py –port /dev/ttyUSB0 erase_flash

Para fechar, no terminal, e no mesmo diretório onde você baixou o firmware do MicroPython, use o comando abaixo substituindo a porta e o nome do arquivo .bin que você baixou.

sudo esptool.py –port /dev/ttyUSB0 –baud 460800 write_flash –verify –flash_size=detect -fm dout 0x0 ~/Downloads/esp8266-20171101-v1.9.3.bin

Pronto, agora só desconecte e conecte novamente o conversor! Pra verificar se está tudo bonitinho, caso você tenha um Mac, vá ao Terminal e digite screen /dev/cu.SLAB_USBtoUART 115200. Caso você esteja no Linux, use o comando picocom /dev/cu.SLAB_USBtoUART -b115200. Caso tudo dê certo, você terá o prompt do Python só te aguardando.

Possíveis Problemas

Você pode se deparar com alguns problemas que eu também me deparei. Caso você não esteja conseguindo enviar o firmware, observe se a solda está bem feita. Depois, verifique se os cabos também estão firmes e bem conectados. Depois, confirme que você fez as conexões corretamente, como descrevi acima. Caso ainda esteja tendo problemas, note que o botão que fica no Sonoff não é muito firme. Você o aperta e o bicho parece que vai dançar um samba na ponta do seu dedo. Tenha firmeza ao apertar ele e quando soltá-lo, note que ele tem que fazer um som de click. Muitas vezes eu o aperto e simplesmente o ESP8266 não entra em modo flash.

Outro problema é o driver para usar o conversor. Isto depende de cada sistema operacional, mas no site da AF Eletrônica, que coloquei acima, você tem instruções de onde baixar o driver. Só observe que o driver que eles indicam é para o conversor PL2303HX USB Serial TTL. Caso você não tenha comprado o conversor com eles, procure se informar com o vendedor onde você pode baixar os drivers para o conversor que ele te vendeu.

Outro problema que você vai enfrentar já é na programação com Python. Lembre-se que é um ESP8266 e este módulo carece de memória e poder de processamento. Então, não espere que todos os módulos do MicroPython vão rodar lindamente. O módulo UMQTT, por exemplo, não funciona muito bem no ESP8266. Futuramente, vou publicar uma postagem aqui sobre os problemas que enfrentei com o MicroPython no ESP8266.

×