RECEPTOR DE CONTROLE REMOTO GENERICO PARA HT6P20B COM PIC 12F629/675

Decodificar transmissores de controle remoto que usam o ci HT6P20B não é algo muito dificil de se fazer. Para ajudar os que desejam implementar aplicações com este circuito integrado, segue esta sugestão.

Adquirindo um controle remoto comercial (qualquer um usado em alarmes, portões, etc que use o HT6P20B) , carregando o código hex no microcontrolador PIC 12F629, e colocando na mesma placa do receptor de controle remoto genérico já publicado, você terá a opção de fazer experiências interessantes ou ainda , agregar a uma aplicação que deseje fazer ou usar. O programa permite a captura dos 24 bits enviados pelo transmissor (chaveirinho) e testa se já existe este endereço gravado na EEprom. Se tiver, testará os bit 6 e 7 da ultima palavra transmitida, que contem a chave apertada. Conforme o botão apertado, acenderá o Led1 ou Led2, por um período de 0,5 segundo e apaga de novo. Se manter o botão apertado, irá continuar aceso. Caso o endereço não esteja gravado na EEprom, necessitará ser ‘aprendido’ apertando o botão ‘learn’ na placa e acionando um dos botões do controle remoto. Após piscar uma vez o ‘ led learn’ na placa, terá sido bem sucedido a operação de aprendizado.
O HT6P20B já vem de fabrica programado com o ‘serial number’ que é recebido , com mais 2 bits que correspondem aos 2 botões (S1 e S2) nos pinos 1 e 2 do HT6P20B.
Mais informações, veja o datasheet do HT6P20B.
Para gravar o código hex no chip, poderá usar o SIMPLES PROGRAMADOR DE PIC e um software programador como o ‘WINPIC2000′, que é uma mão na roda para todos os hobistas.

Para obter uma versão em ‘C’, veja o artigo “RECEPTOR GENERICO FLEX – UM PROGRAMA PARA VARIAS OPÇÕES DE CIRCUITOS INTEGRADOS – COM PIC 12F675/629″> ‘RECEPTOR GENERICO FLEX – UM PROGRAMA PARA VARIAS OPÇÕES DE CIRCUITOS INTEGRADOS – COM PIC 12F675/629’ deste blog.

Segue abaixo o arquivo ASM:

RX_GEN_HT6P20_V3P1_ASM

Segue abaixo o arquivo HEX a ser gravado no chip PIC 12F629:

RX_GEN_HT6P20_V3P1_HEX

A versão acima está dando um bug ao programar 42 botões de controle, sendo operacional com menos. Segue abaixo pasta com arquivos de uma versão corrigida e melhorada. Foi alterado o modo de programar e ao atingir 42 botões aprendidos, o led ‘learn’ piscará para indicar memória cheia:

RX_GEN_HT6P20_V3P2_ASM

Clique aqui para ver o esquema da placa genérica.

Clique aqui para ver a sugestão da placa de circuito impresso.

clique aqui para ver a montagem dos componentes na placa visto pelo lado cobreado e lista de materiais.

Segue abaixo versão ASM/HEX que quando mantém o botão apertado, o led se mantém aceso, sem piscar:

RX_GEN_HT6P_V4P1_ASM

RX_GEN_HT6P_V4P1_HEX

Segue abaixo versão idêntica ao acima, mas com opção de inverter a saída no código Asm:

RX_GEN_HT6P20B_V41_INVERTIDO_ASM

RX_GEN_HT6P20B_V41_INVERT_HEX

Segue versão para 3 leds com aprimoramentos:

RX_GEN_HT6P_V5P1_ASM

RX_GEN_HT6P_V5P1_HEX

Segue arquivo ASM (versão 6) com opção de usar o pino 3 como entrada para uma chave seletora para modo ‘PULSO/RETENÇÃO’:

RX_GEN_629_V6P1_ASM

Segue arquivo HEX (versão 6):

RX_GEN_629_V6P1_HEX

Segue esquema de ligação (versão 6):

Na versão 7, com opção de usar mais um led (led3) no pino 3, podendo ser alterado o programa para modo ‘PULSO’ ou ‘RETENÇÃO’, por comentar e descomentar na ‘opção de usuário’ do arquivo ASM e recompilar. Para facilitar, segue uma pasta com arquivos compilados para modo PULSO e outra para modo RETENÇÃO, atualizada em 15/10/2017:

RX_GEN_HT6P20_V7_PULSO_

RX_GEN_HT6P20_V7_RET_

Segue vídeo caseiro do funcionamento da versão 7 em modo retenção:

Segue arquivo ASM para versão acima, mas com inversão das saídas no modo Pulso (alterável no linha de código como opção).

RX_GEN_HT6P_V7P1_INVERTIDO_ASM

Segue arquivo HEX para versão acima:

RX_GEN_HT6P_V7P1_INVERTIDO_HEX

Segue esquema para versão 7 abaixo:

Segue arquivo ASM para versão 8 (apenas didática, apresentando como podemos piscar os led’s na saída por um número de vezes, alterar qual saída fará isto, piscar mais de um led junto, alterar tempo aceso dos led’s , alterar tempo apagado, etc.

RX_GEN_629_V8BP1_ASM

Segue o arquivo ASM para versão 9 (idem versão 6, mas com aprendizado individual de controles, para poder usar um controle
com uma ou mais placa):

RX_GEN_629_V9AP1_ASM

Segue o arquivo HEX para a versão 9:

RX_GEN_629_V9AP1_HEX

Os arquivos abaixo permitem operação mista, entre retenção e pulso.
Acionando o botão 1 apenas, obtemos acendimento do led1 e se soltar, apaga. O mesmo com o botão 2 e led2 (modo pulso).
Mas se apertar os dois juntos, acende o led 3. Soltando-os e apertando-os de novo, apaga (retenção no led 3)
Obs. Necessita de pull up no pino 3 para funcionar. Veja esquema abaixo da V10.

Segue o arquivo ASM para a versão 10:

RX_GEN_629_V10P1_ASM

Segue o arquivo Hex para versão 10:

RX_GEN_629_V10P1_HEX

Segue o esquema para versão 10:

Esquema v10

Segue pasta zipada com versão 11 (14/07/2015) com 3 canais, programável no arquivo “C” (Compilador CCS C) por comentar/descomentar as linhas, para funcionar em modo retenção ou pulso, saída normal ou invertida, de forma individual para cada canal. Rotina de recepção alterada para testar cada parte do bit recebido (em teste):

RX_GEN_675_V11

Veja também o artigo:‘RECEPTOR DE 3 CANAIS PARA USO COM CONTROLE REMOTO (CI HT6P20B) E PULSO/RETENÇÃO INDIVIDUAL- COM PIC 12F675’

Segue abaixo uma versão de 1 canal, modo pulso, feito em “C” no compilador MPLAB-IDE XC8:

RX_HT6P20B_PULSO_XC8

Segue abaixo uma versão de 1 canal, modo retenção, feito em “C” no compilador MPLAB-IDE XC8:

RX_HT6P_XC8_RET

Links:
datasheet 12f629

Curiosidades:
controle remoto e o efeito estufa
ataques cibernéticos
Comportamento anti-colisão dos peixes
Jóqueis-robos para camelos

Outros assuntos:
Como acabar com a tática do silêncio
Os milagres são possíveis – 3 objeções
Como enfrentar o bullying sem ter de partir para a briga (animação)
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

248 comments on “RECEPTOR DE CONTROLE REMOTO GENERICO PARA HT6P20B COM PIC 12F629/675

  1. Cláudio, boa noite!

    Para fins de aprendizado montei este circuito em minha protoboard, baixei o arquivo, compilei, gerou o arquivo HEX, utilizei o programador K150 para gravar o pic e fui testar …. Porém … o mesmo não está gravando o controle que estou utilizando (http://produto.mercadolivre.com.br/MLB-655061336-controle-remoto-jfl-rolling-code-433-mhz-para-porto-alarme-_JM) na memória.

    Por exemplo: se eu segurar o botão ‘learn’, após um período longo de tempo, é setado a memória apagando todos os controles nele gravados, ok, isso deu certo, se eu segurar o botão por um tempo o ‘learn’ pisca 3 vezes indicando o mesmo. Ok, mas quando fui gravar, simplesmente não funcionou! Ou seja, o led nao pisca uma vez indicando que foi gravado nem nada, simplesmente não funciona auhsuahsuha

    Se pudesse me ajudar ficaria muito agradecido, pois já testei todas as ligações, e até o receptor rf, visto que ele altera-se o valor de tensão quando um botão do emissor (chaveirinho) é apertado, e esta tudo ok pelo que testei.

    1. Olá Bruno!
      Se não me engano, este seu controle trabalha com sistema ‘rolling code’, que troca os dados a cada transmissão, geralmente usando o integrado da família Hcs xxx. Já o receptor de controle remoto genérico para Ht6p20b tem que usar o integrado Ht6p20b no chaveirinho transmissor. Por favor, abra seu controle e verifique se isto acontece. Se não for, terá que adquirir um controle que tenha ele ou usar um outro software como o receptor genérico flex com esquema de montagem apropriado. Mas no último caso, não será possível aproveitar a parte ‘rolling code’, mas unicamente o serial enviado. Para usar a função ‘rolling’ exige-se que o integrado HCSxxx seja programado para uma chave criptografada e a mesma tem de ser usada no receptor. Fica bem complexo e não recomendo para iniciantes.
      Cláudio

      1. Cláudio, boa tarde!

        Então, comprei este chaveirinho mais especificamente pois ele vem com o smd do HT6p20b, porém, não me atentei a este detalhe do ‘rolling code’, pois desconhecia isso …

        Irei adquirir outro controle remoto genérico, com o HT6p20b porém dessa vez sem o ‘rollin code’ e farei o teste novamente. Muito obrigado.

        1. Olá Bruno !
          Se este seu controle usa o smd Ht6p20b então deveria funcionar, exceto que não seja da frequência 433mhz. Verifique se a frequência veio corretamente compatível com o teu receptor. Se veio errada, você decidirá se compra outro tx ou receptor.
          Cláudio

  2. Parabéns pela dedicação.

    Embora estes controles sejam bastante INSEGUROS, pois são de fácil clonagem, bastando identificar a sequencia e repetir.

    Gostaria de comentar também, que tenho feito uso do receptor comercial (http://www.spya.net/ftp/intrusao/ecp/manuais/Manual%20Reptor%20433MHz%202%20Canais.pdf) para ocasiões onde não são necessárias muita segurança.

    Poderia sugerir para uma próxima versão, um receptor que tenha seleção de função, como ocorre no receptor citado acima.

    Obrigado.

    1. Olá rtek1000!
      Obrigado por seu elogio aos trabalhos realizados pelo blog. Agradeço também a sua sugestão, que talvez possa ser base para um futuro artigo.
      Cláudio

  3. Bom dia Claudio!Estou querendo montar um tipo de interruptor pro farol de de milha de carro.Gostaria de saber se voce pode montar um programa com pic12f629.
    Seria assim,(EXEMPLO). NO PINO 2 DO CI VAI TER UM BOTAO DE PULSO,(tipo que usa nos controles remotos).quando acionar pra o terra, fica asceso um led1 que vai ser no pino 3 do ci, e tambem o led2 pino 4. Quando eu acionar duas vezes em seguida, fica o led1 piscando,o led2 apagado,e fica aceso o led3 que vai sair do pino 5 do ci.E quando eu presionar o botao por mais de 2 segundos apaga tudo, tem como? Quanto vc cobra? Valeu!
    a pinagem do ci nao precisa ser esta sequencia, pode ser a que der pra fazer.ABRAÇOS.
    Geraldo Santos (gsnsoares@yahoo.com.br)

    1. Olá Geraldo!
      Parece que você tem uma ideia interessante! Mas não realizo programas comercialmente, apenas para o blog e em base experimental, pois sou apenas um hobista nesta atividade. Se você puder compartilhar a ideia conosco poderei colocar no ‘caderninho’ para no futuro fazer um artigo que possa ser usado por outros colegas. Agora se for algum projeto para fins comerciais, então poderá direcionar o trabalho para um profissional de programação da sua escolha.

      Cláudio

  4. Boa noite Claudio;
    Conforme explicado, modificaria o tempo das saídas estou certo?
    Como farei para mudar apenas a saída 2 por exemplo, preciso de uma com tempo curto e outra com tempo longo 120s.
    Estes tempo servirão para luz de cortesia para uma garagem.
    Desde já agradeço a atenção.

    1. Olá Marcelorxds!
      Sim, modificaria os tempos de saídas. Seguindo aquele exemplo anterior, poderá fazer um desvio do programa para acessar um delay maior e o outro menor:

      Veja a porção do código abaixo modificada para funcionar com 2 tempos diferentes:

      ACIONAR

      BTFSC RES2,7 ;TESTA QUAIS BOTÕES FORAM ACIONADOS NA TRANSMISSÃO
      BSF LED1 ;ATIVA LED1
      BTFSS RES2,7
      BCF LED1 ;APAGA LED1

      BTFSC RES2,6
      BSF LED2 ;ATIVA LED2
      BTFSS RES2,6
      BCF LED2 ;APAGA LED2

      BTFSS LED2
      GOTO TEMPORIZA_LED1
      MOVLW .20
      CALL DELAYM ;TEMPO QUE SE MANTEM ACESO (TEMPO CURTO)
      BCF LED2
      TEMPORIZA_LED1:
      BTFSS LED1
      GOTO INICIO
      MOVLW .255 (TEMPO LONGO)
      CALL DELAYM ;TEMPO QUE SE MANTEM ACESO
      MOVLW .255
      CALL DELAYM ;TEMPO QUE SE MANTEM ACESO
      MOVLW .255
      CALL DELAYM ;TEMPO QUE SE MANTEM ACESO
      MOVLW .255
      CALL DELAYM ;TEMPO QUE SE MANTEM ACESO
      MOVLW .255
      CALL DELAYM ;TEMPO QUE SE MANTEM ACESO ;COLOQUE QUANTOS FOREM NECESSÁRIOS PARA SEU TEMPO DESEJADO
      ….
      BCF LED1
      GOTO INICIO

      Este é um jeito , no meu ver, mais simples para sua necessidade.

      Cláudio

  5. BOA TARDE,
    PARABÉNS PELO TRABALHO, SOU INICIANTE EM PROGRAMAÇÃO,GOSTARIA DE SABER SE É POSSÍVEL NESTE OU OUTRO CONFIGURAR A SAÍDA PULSO COMO TEMPORIZADA
    OU AUMENTAR O TEMPO DO PULSO?

    1. Olá Marcelo! Sim, é possível. Mas cada versão postada será de uma forma diferente. Por exemplo, na versão RX_GEN_HT6P20BV3P1.ASM basta alterar o valor do delay do tempo ligado, conforme porção de código abaixo e recompilar:

      ACIONAR

      BTFSC RES2,7 ;TESTA QUAIS BOTÕES FORAM ACIONADOS NA TRANSMISSÃO
      BSF LED1 ;ATIVA LED1
      BTFSS RES2,7
      BCF LED1 ;APAGA LED1

      BTFSC RES2,6
      BSF LED2 ;ATIVA LED2
      BTFSS RES2,6
      BCF LED2 ;APAGA LED2

      MOVLW .20 << aumente este valor para mais tempo
      CALL DELAYM ;TEMPO QUE SE MANTEM ACESOS
      BCF LED1
      BCF LED2
      GOTO INICIO

      Se o tempo requerido for grande, haverá necessidade de usar mais registradores em cascata.

      Cláudio

Comments are closed.

Back To Top