Ou melhor dizendo - Tentando desvendar Controle Remoto RF.

Depois que consegui fazer funcionar o Analisador Lógico com o Arduino, tenho feito várias verificações que sempre quis fazer. Fiz uma análise de controle remoto usando a Luz infravermelha e agora estou fazendo uma análise mais apurada de controle remoto que usa Rádio-frequência RF).

Tutorial - Analisador Lógico com Arduino:

http://labdegaragem.com/profiles/blogs/tutorial-analisador-l-gico-c...

Decodificando Controle Remoto infravermelho:

http://labdegaragem.com/profiles/blogs/6223006:BlogPost:315534

Já li em vários Blogs do Lab de Garagem, que muitos desejam usar o Controle Remoto RF com o Arduino.

Para a minha decepção e acredito que  muitos se decepcionarão também, os controles remotos atuais são criptografados.Por isso, alguns já tentaram usar e falharam.

Para entender melhor, fiz uma análise do Controle Remoto do fabricante Rossi. (aciona a abertura e fechamento de portões de garagem). Esse controle usa o chip HCS201 da Microchip:

http://ww1.microchip.com/downloads/en/DeviceDoc/41098c.pdf

Possui dois botões (chaves) S0 e S1. A frequência da portadora é de 433,92 MHz. Usa uma pilha de 12V.

O link da Rossi portões, com os circuitos de controle de portões:

http://www.rossiportoes.com.br/produtos/120-central-de-comando.html

Lendo o data sheet do chip HCS201 da Microchip, percebi que a tecnologia usada é bem segura.

Ele é bem versátil - cada chip tem um número de série programável de 28 bits e uma chave de criptografia de 64 bits (acredito que é impossível descobri-la) . Essas informações são gravadas pelo fabricante do controle remoto (no caso a Rossi).

Cada transmissão tem um código diferente, por isso, se o circuito receptor não souber a chave criptográfica do fabricante, não haverá rotina de decodificação que permita identificar qual código foi transmitido. Fiz vários testes e comprovei ! Pressionei várias vezes o botão S1 e a cada momento o trem de pulsos era de um formato diferente.

Seria possível usar o controle remoto, desde que usasse um chip programado pelo desenvolvedor.

Assim a rotina de decodificação usaria a chave gravada no chip.

Vejam que interessante as várias telas capturadas usando o Analisador Lógico com o Arduíno.

Minhas medições foram no saída TX OUT do chip HCS201. Alimentei o controle remoto com 5V para não danificar o Arduino.

Essa captura foi feita pressionando o botão S1 - taxa de amostragem de 5 KHz :

Vejam que tem 12 pulsos de preambulo para sincronização :

Taxa de amostragem de 10 Khz.

Os 12 pulsos de preambulo usam a largura de pulso de 780 us:

(taxa de amostragem 50 KHz) 

Para decodificar os bits 0 e bit 1 :

Esse é o formato do Bit 0 : (taxa de amostragem 50 KHz) 

E esse é o formato do Bit 1 : (taxa de amostragem 50 KHz) 

Exibições: 87366

Responder esta

Respostas a este tópico

Pessoal corrigindo uma falta de informação.

O Programa  DECODER FOR HT6P20B ENCODER criado pelo Afonso Turcato, foi baseado na criação original do Jaques Moresco .

http://forum.arduino.cc/index.php/topic,54788.msg707885.html#msg707885

/* 
ARDUINO DECODIFICADOR HT6P20B COM RESISTOR DE 2M2 NO OSC.
ESTE CÓDIGO NÃO USA TIMER, INTERRUPÇÃO EXTERNA E NEM PINO DEFINIDO DE ENTRADA.
ELE MEDE O TEMPO DO PILOT PERIOD E COMPARA SE ESTÁ DENTRO DA FAIXA DEFINIDA,
SE TIVER ELE PASSA PARA CODE PERIOD E FAZ AS MEDIDÇÕES DE TEMPO EM NIVEL ALTO
SE TIVER DENTRO DA FAIXA ACRECENTA BIT 1 OU 0 NA VARIAVEL _DATA CASO NÃO ZERA AS VARIÁVEIS E RE-INICIA
APOS RECEBER TODOS OS BITS ELE PEGA OS 4 BITS DO ANTE CODE E TESTA PARA SABER SE O CÓDIGO FOI RECEBIDO 
CORRETAMENTE, CASO RECEBIDO CERTO ELE COLOCA A VARIAVEL ANTCODE EM 1.

CRIADO POR: JACQUES DANIEL MORESCO
DATA: 28/02/2012 USANDO ARDUINO 0022.
FONES:54 3324 2251 54 9206 7168
E-MAIL: ibisul@ibisul.com.br
Permitido o uso público, mas deve-se manter o nome do autor.
*/

int x,startbit,ctr,dataok,t1,larpulso,larpulso1,larpulso2,larpulso3,larpulso4,bt1,bt2,antcode=0;
unsigned long _data=0;   // DATA é o Código recebio do HT6p20 todos os 28 BITS onde, 22 do coodigo+2 dos botões+4 do anti-codigo;
unsigned long _dur,_dur1;      // Duração do Pulso
byte          _pin;    // Pino que vai receber o sinal RF digital.

void setup()

{
  _pin=2;
  Serial.begin(9600);
  pinMode(2, INPUT);
  pinMode(13, OUTPUT);
}

void loop()

{
  
digitalWrite(13, digitalRead(2)); //Pisca o LED conforme o valor da entrada digital, testar interferencias.
if (startbit==0)
 {// Testa o tempo piloto até o Bit de inicio;
  _dur = pulseIn(_pin, LOW);
  if(_dur > 8000 && _dur < 12000 && startbit==0)
  {
    larpulso=_dur/23;
    larpulso1=larpulso-50;
    larpulso2=larpulso+50;
    larpulso3=larpulso+larpulso-50;
    larpulso4=larpulso+larpulso+50;
    startbit=1;
        _dur=0;
       _data=0;
      dataok=0;
         ctr=0;
  }
 }
 
// Se o Bit de inicio OK ENTÃO Inicia a medição do tempo em Nivel ALTO dos sinais, e testa se o tempo está na faixa.
if (startbit==1 && dataok==0 && ctr < 28)
  {
         ++ctr;
        _dur1 = pulseIn(_pin, HIGH);
   if(_dur1 > larpulso1 && _dur1 < larpulso2)     // Se a largura de pulso é entre 1/4000 e 1/3000 segundos
   {
     _data = (_data 1) + 1;      // anexar um * 1 * para a extremidade mais à direita do buffer
   }
   else if(_dur1 > larpulso3 && _dur1 < larpulso4)   // Se a largura de pulso é entre 2/4000 e 2/3000 segundos
   {
     _data = (_data 1);       // anexar um * 0 * para a extremidade mais à direita do buffer
   }
   else
   {
     /* força finalização do laço */
          startbit=0;
   }
        
   }
   
   
   

if (ctr==28)
   { if (bitRead(_data,0)==1)
         { 
           if (bitRead(_data,1)==0)
              {
                if (bitRead(_data,2)==1)
                   {
                     if (bitRead(_data,3)==0)
                        {
                          antcode=1;
                        }
                   }
              }
         }    

      if (antcode==1)
         {// Se foram recebidos todos os 28 Bits, o valor vai para a variavel _data e pode ser usada como exemplo abaixo.
           dataok=1;
           Serial.println(_data,BIN);
           ctr=0;
           startbit=0;
           antcode=0;
           delay(100);
         }
   }
}

Olá  José, é preciso permissão para baixar o arquivo? 

Como escrito :

Permitido o uso público, mas deve-se manter o nome do autor.

Olá 2 José, tudo bem?

Peço a sua orientação, estou tentando fazer um controle remotor RF com decoder e Encoder HT12E e  HT12D.

Mas, preciso dos codigos da teclas para usa-los no programa pois usarei o ARDUINO,  como conseguir esses codigos?  ALEM DISSO,  só posso controlar 4 dispositivos? pois ele só tem quatro saidas de dados?

Me desculpa a ignorancia, procurei tutoriais na inter, e achei esse: 

“CLONAGEM” DE CONTROLE REMOTO RF “Learning Code” (HT6P20B) com ARDUINO

https://acturcato.wordpress.com/2014/01/14/clonagem-de-controle-remoto-rf-learning-code-ht6p20b-com-arduino/

Isto posto, o sketch apresentado abaixo utiliza um Arduino + Receptor RF 433,92 MHz + Transmissor RF 433,92 MHz + dois botões e um LED parareceber o sinal emitido por um controle remoto RF (encoder HT6P20B), decodificá-lo, armazenar os dados decodificados na memória e retransmiti-los quando o botão for pressionado.

Mas não entendi muito bem, esse tutorial é para que? clonar os codigos do controle remoto, usando o  (encoder HT6P20B), ? só esse?  daria para usa-lo com o meu decoder encoder? e ele disse:  decodificá-lo, armazenar os dados decodificados na memória e retransmiti-los quando o botão for pressionado. MAS eu preciso dos codigos, no meu caso de 4 botões para usa-los num progrOma do ARDUINO.

Cara! estou precisando muito de ajuda, obrigado

O controle remoto usando o HT12E e HT12D não precisa de Arduino!

Já é uma solução que um é o chip transmissor e outro é o receptor.

Tudo é feito através do hardware (chips) ...

Sobre o tutorial , recomendo que consulte o desenvolvedor - Afonso Turcato. 

Sim, sei disso, mas quero usar o ARDUINO para controlar um DIMMER via RF

Dimmer normalmente é usado com controle remoto infravermelho.

Deseja mesmo usar controle remoto RF ?

Você tera que ter um controle remoto com no mínimo três botões.

Um para ligar/desligar , um para aumentar a potência e outro para diminuir a potência ? É isso ?

Sim, e um quarto para outra função. mas com exrair o codigo para trabalhar no ARDUINO?

Essa é a dificuldade.

Eduardo primeiros passos:

- Usar um controle remoto com quatro botões , que tenha o chip da Holtek HT6P20D .

http://www.holtek.com.tw/pdf/consumer/6p20v170.pdf

Esse controle remoto da Intelbras tem quatro botões e usa o chip HT6P20D :

http://www.intelbras.com.br/empresarial/alarmes/acessorios/xac-3000-4k

Eu tenho um e já abri para confirmar a presença do chip.

E comprar um circuito receptor na frequencia de 433 MHz. 

Olá de novo, mas esse link do codigo, é o seu modificado? ou é o do tutorial do site?

LÀ tem 2 codigos a serem baixados:

ACT_HT6P20B_RX-04.ino (Rev. 04)

ACT_HT6P20B_RX-01.ino (Rev. 01)

Obrigado

Recomendo que consulte o Turcato, que é o desenvolvedor do programa. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço