Como colocar seu código em um sonoff touch

Fala galera beleza!

Estou há algum tempo sem postar mas prometo fazer mais postagens!

Sempre estou lendo e estudando mais sobre esse futuro que é a internet das coisas e
recentemente comecei a estudar os sonoffs e ví como e difícil um material bom na internet em português a respeito deste assunto. Pensando nisso resolvi (tentar) criar uma série de posts visando este tipo de componente, começando pelo sonoff touch que é um espelho com interruptor capacitivo com wifi integrado com um ESP8285 super potente que pode ser utilizado normalmente nas suas aplicações,

Existem vários tipos de sonoffs no mercado, como o slampher (que abordaremos mais tarde)

E também temos o Relé wifi

Porém vamos focar hoje no Sonoff touch, que comprei no Mercado Livre para teste de conceito.

Esse sonoff é composto por um relé que aciona a lâmpada tanto pelo touch capacitivo ou, se programado, também pela internet de um jeito bem fácil e prático

Abaixo irei demonstrar um pouco de como ele é externamente e internamente

A ligação deste exemplo foi utilizar o mesmo neutro que esta vindo da energia com um fio da lâmpada.
Então o N entra o Neutro, o L entra a outra da energia e o ultimo a energia da lâmpada vinculada ao Neutro

Todos esses procedimentos devem ser feitos com o sonoff desligado da rede elétrica ta?

Ao abrir o sonoff touch nos deparamos com uma placa esp integrada com um outro circuito que contém toda a ‘regra de execução’ como o relé, os capacitores, conversores de tensão e etc, sendo ligado somente por pinos que enviam 3.3v, ground e o acionamento do relé

Ao tirar a placa protetora com o desenho do touch nos deparamos com esses componentes, e ao tirar de dentro da capa de plástico podemos ver o ESP e os outros componentes que estão totalmente separados.

Por padrão esse tipo de componente não vem de fábrica em modo de programação, e então temos que ‘forçar’a entrada para este modo.
digo forçar entre aspas, pois você não estará hackeando o dispositivo, já que o próprio esp desse componente ja fornece a portas de comunicação, então, espera-se que isso seja uma prática aceitável do fabricante.

E como entramos em modo de programação. Simples, primeiro vamos identificar 2 coisas importantes:

1 – a pinagem do ESP, que você deverá soldar 4 pinos machos (tipo esses) está logo abaixo dele, como essa imagem acima e uma maior aqui embaixo:

Você deve soldar esses pinos pra cima para que possa conectar aqueles jumpers ficando igual a imagem abaixo, que já vem com a indicação de qual e o GND e qual e o 3.3v

Essa solda em sí é bem tranquila de fazer e com certeza deve ser feita de sempre de um modo consciente, já que o ferro de solda queima (e queima mesmo)

2 – Ter um conversor usb serial FTDI igual a esse:

Esta placa FTDI é baseada no chip FT232RL que funciona como um conversor USB para serial TTL, permitindo a interface de dispositivos TTL para USB.

Normalmente utilizada para colocar código dentro de ESPs que não tem interface USB como os nodesMCU (ESP8266)

Vale lembrar que se você for soldar os pinos para utilizar em uma protoboard vc deve utilizar a RXD e a TXD e não a RXL e TXL , pois as (L) são para demonstrar led de transferência e não estão vinculadas com a TX e  RX padrão.

Eu optei por utilizar os pinos de fora do componente e não os que já vem na placa, pelo fato de que eu não tenho quase nenhum jumper fêmea/fêmea que seria o ideal para fazer a comunicação direta entre os 2 componentes , e colocando em uma mini protoboard e efetuando a solda do componente ficará assim (não notem minha péssima solda!):

3 – Descobrir o gpio0: Esse passo é um dos mais importantes para o procedimento, pois você precisará colocar um jumper no gpio0 da placa no ground o FTDI (como podem ver na imagem acima saindo 2 jumpers no GND

Vale lembrar que a ligação do sonoff é  (GND – TX – RX – 3.3) e na conexão do FDI deve ser invertido as Ts onde deve ser GND – RX – TX – 3.3), ou seja TX com RX e RX com TX. Ao fazer a ligação e colocar no seu pc, irá acender o led do wifi que ficará piscando além de provavelmente o touch ficará aceso, isso é sinal que tudo deu certo, mas ainda não estamos em modo de programação.

e como identificar a gpio0 na placa? eu fiz um jeito simples e fácil pra descobrir:

Estão vendo uma ‘cobrinha verde’, essa é a antena do wifi. o gpio0 está contanto os pinos, dessa área da antena, são 10 até o gpio0. para ativar e entrar em modo de programação você terá que pegar aquele jumper sobrando no GND e segurar no  gpio0. pra isso acontecer, desligue o cabo do seu pc, reveja se  todos os pinos estão ligados corretamente gnd, tx com rx , rx com tx e 3.3v. segure o jumper no gpio0 (eu até falaria para soldar, mas eu acabei queimando o outro fazendo isso, então segurando já faz a mágica.

Se tudo deu certo, nenhum led embaixo pode estar piscando e você ja pode tirar o jumper do GPIO, porém você vai ter que refazer esse procedimento toda ver que for colocar um código lá dentro.

Caso você tenha chego aqui com sucesso, saiba que teremos que utilizar um “Generic ESP8285 module”que, caso não tenha sido instalado, tem um post no blog (aqui), que eu ensino como fazer.

Precisamos saber que os pinos de ação do sonoff touch são fixos da seguinte forma:

o led do wifi é o pino 13, o led do botão capacitivo e também o que aciona o relé é o 12, e a ação touch do botão é capturada pelo 0

fazendo um código simples para clicar ligar, clicar de novo desligar, ficaria assim

#define LED   13
#define TOUCHLED  12 //Also operates Relay coil
#define TOUCHINPUT 0

void setup() {
  // put your setup code here, to run once:
  //Enable output to the serial monitor
  Serial.begin(115200); Serial.println();

  
  pinMode(LED,OUTPUT); 
  pinMode(TOUCHLED,OUTPUT); 
  pinMode(TOUCHINPUT,INPUT);
  
  digitalWrite(LED,HIGH); //como no esp o led interno e invertido, 1 e desligado e 0 ligado
  digitalWrite(TOUCHLED,LOW); 
  delay(1000);
  
  digitalWrite(LED,LOW);
}

void loop() {
 
  int reading = digitalRead(TOUCHINPUT);
  Int sensorRead = digitalRead(TOUCHLED);
  
  
  if (reading == false){
    sensorRead = !sensorRead
    digitalWrite(TOUCHLED,sensorRead);   
   
  }
  delay(250);
}

Se tudo deu certo e o código subiu, faça uns testes clicando uma vez para acender, e outra para desligar. Ai é só tirar tudo, ligar na energia e o resultado deve ser parecido com esse

Eu havia feito uma live no facebook do clube dos embarcados , mas posso fazer novamente e dessa vez deixar salvo lá!

Qualquer dúvida podem me mandar emails que eu vou respondendo!