HCS_PIC – GERANDO PROTOCOLO HCS 200…301 VIA SOFTWARE EM PIC 12F629 – PicSource
Recentemente, neste blog, foi publicado a materia 'HT6P_CLONE_PIC629' sobre como poderiamos, via software em um microcontrolador, gerar o protocolo de um circuito integrado HT6P20B. E que dizer de um circuito integrado HCS 200 ou mesmo um 201? É possivel imita-lo em suas caracteristicas (clone) usando um simples PIC 12f629 ou menor? Veja a resposta…
Sim. Qualquer protocólo, em teoría, pode ser gerado por um programa dentro de um microcontrolador, respeitando-se capacidade, velocidade, e outros parametros. A proposta aqui, a titulo de experiência (porque não compensa o preço inferior de um HCS em relação a de um PIC), é gerar um 'clone' via PIC, de um HCS. Veja o esquema abaixo:
Nota-se uma montagem em 2 versões, típica de um 'chaveirinho' de controle remoto, com opção de usar interruptores ao positivo ou ao negativo. Estas opções podem ser escolhidas direto no programa ASM abaixo, e depois compilar no MPLAB, para obter o arquivo HEX correto a nossa escolha. Após realizar a montagem, carregar o arquivo hex e ligar, voce terá que 'aprender' esta montagem experimental, da mesma forma que se faz com um controle comercial. Aperte um botão e depois o botão 'learn' do receptor. Nunca é demais lembrar, que esta montagem somente funcionará em um receptor com a 'mesma chave' de encriptação. Não irá funcionar, por ex. com seu alarme de carro que usa um controle remoto hcsxxx, a menos que alguém te informou a chave usada pelo fabricante. Ou seja, para ver funcionando esta montagem, voce terá de montar, por exemplo, o receptor generico para HCS com PIC 12F629, publicado neste blog, e colocar a mesma chave que voce escolher , no receptor e no transmissor (no caso, esta montagem experimental, na parte ' escolha sua chave', no programa ASM). No esquema, nota-se as resistencias de pull-up's para versão chave negativa e pull-down para versão chave positiva, necessárias para não haver transmissões esporadicas sem se apertar os botões. O circuito deverá ser alimentado com uma fonte externa de 5 volts bem regulados. O transmissor e receptor usados foram de 433 mhz, do tipo comercial, mas outras frequências poderão ser usados. Todo o programa cabe em menos de 600 bytes da Flash do microcontrolador, sobrando muito espaço, por ex., para uma aplicação conjunta.
A parte do programa ASM, nomeada como rotina 'EMBARALHAR' foi obtida por se estudar toda a rotina de decriptação do receptor, encontrado nas Note Aplicattions da Microchip ,e poderá ter 'bugs' ainda não descobertos (até o momento está funcionando bem). Esta montagem experimental foi realizada e testada em protoboard apenas.
HCS_PIC_ASM
Segue abaixo o arquivo HEX (chaves negativas/Pic 12f629):
HCS_PIC_629N_HEX
Referencias usadas para a o projeto:
HCS 301 DATASHEET
PIC 12F629 (675) DATASHEET
NOTE APPLICATION AN662
NOTE APPLICATION AN661
*Consulte o fabricante quanto ao uso do sistema Hopping code da Microchip
17 thoughts on "HCS_PIC – GERANDO PROTOCOLO HCS 200…301 VIA SOFTWARE EM PIC 12F629"
mesmert diz:
This code works only the Simple Learning. Does not support the Normal Learning and the Secure Learning. Do you works on the other learning methods?
Hi Mesmert!
Im sorry! I don't know about Normal Learning or Secure Learning. Only Simple Learning method.
I want to write the Disc and Seed value. Is this possible?
it is not working recevier modül (PIC16f629)
SERIAL_LW EQU 0X00 ;LSB 'SERIAL NUMBER'
SERIAL_HI EQU 0XF6
SERIAL_UL EQU 0X0A
SERIAL_UH EQU 0X00 ;MSB
K0 EQU 0XCA ;LSB 'MANUFACTURE CODE'
K1 EQU 0X7B
K2 EQU 0X37
K3 EQU 0X22
K4 EQU 0X14
K5 EQU 0X3D
K6 EQU 0X0C
K7 EQU 0X96 ;MSB
it is working recevier modül (Pickit2 programmer HCS301 value)
CA 7B 37 22 14 3D 0C 96 00 00 00 00 00 F6 0A 00
***** M1 RF RECEVIER MODUL ******************
SERIAL_LW EQU 0X4F ;LSB 'SERIAL NUMBER'
SERIAL_HI EQU 0X1E
SERIAL_UL EQU 0X2E
K0 EQU 0X9D ;LSB 'MANUFACTURE CODE'
K1 EQU 0X20
K2 EQU 0XE8
K3 EQU 0XB5
K4 EQU 0X07
K5 EQU 0XB0
K6 EQU 0X98
K7 EQU 0XCE ;MSB
9D 20 E8 B5 07 B0 98 CE 00 00 00 00 4F 1E 2E 00
***** M2 RF RECEVIER MODUL ******************
it is working recevier modül (PIC16f629)
SERIAL_LW EQU 0X0A ;LSB 'SERIAL NUMBER'
SERIAL_HI EQU 0X20
SERIAL_UL EQU 0X81
SERIAL_UH EQU 0X02 ;MSB
K0 EQU 0X4E ;LSB 'MANUFACTURE CODE'
K1 EQU 0X49
K2 EQU 0X43
K3 EQU 0X45
K4 EQU 0X53
K5 EQU 0X4D
K6 EQU 0X52
K7 EQU 0X54 ;MSB
4E 49 43 45 53 4D 52 54 00 00 00 00 0A 20 81 02
00 00 00 00 00 00 0A 00
I made the bellow link the project, other test results are below.
http://picsource.com.br/archives/908
!!!- it is working. S0-S1-S2-S3 LED ON-OFF (PIC16f629) !!!!
!!!!!- it is not working. Only the LED (PIN2) blinking.(Pickit2 programmer HCS301 value)
Unfortunately, I don't know how to help you about use 'Seed' and 'Disc'. I am not a professional programmer, but like only a hobby. The note applications has little information about the use of ' seed ' and ' disc '. The code that was published may have bugs , despite having worked in the tests I did. I thought more in 'didactic use'.
I also have not Pick2kit for testing or another programmer for Hcs. If you are programmer try changing the code to accomplish what you want . But try to contact the Microchip , especially Keelogs about the code and operation.
Hi, Claudio Larios
HCS301 on the code you wrote to me, I try to run but I wrote the study, but the receiver manufacturer code and serial number if you've done with PIC16F628 programmer HCS301 and load when the receiver is running smoothly. The reason I wonder what could be.
SEED can write where the value and the value of this software in a DISC.
Hello Mesmert !
Unfortunately I could not understand what you want.
Could you elaborate? Use their native language if applicable .
certo lario entendir o que voce disse.entao na verdade qual deve ser o meu procedimento se quero gravar 4 codigo em um mesmo pic?se nao nao for querer saber demais.obrigado
Olá José! Eu não entendi bem o que você quer dizer com 'gravar 4 códigos' no pic. Você grava o código do receptor em um pic16f628 e grava um transmissor como clone_hcs. Segue as instruções passadas no blog em cada artigo.
eu dei um a olhada neste datasheet é meio complication mesmo,apesar do meu conhecimento de ingles ser bad.mais quanto a gravar 4 codigo diferentes neste circuito e normal nao é? pois eu gostaria de um clone com 4 codigos em um mesmo pic,estou certo?
Olá José! Se você nota na pagina 10 do datasheet do Hcs200, notará que ele suporta apenas 3 bits de acionamento externo (3 terminais para ligar chaves). Na transmissão o bit s3 será cópia do s2. Já no clone , ele lê a chave e envia um quarto bit. Cada botão do transmissor deverá acionar o led correspondente no receptor
2 de Outubro de 2013 às 08:39
lario bom dia voce diz que este projeto e chato mais dar para montar ne? quero usar o recetptor com 16f628 acionar os 4 leds dará certo nao e mesmo? obrigado
Olá José! Disse que para o seu desenvolvimento deu muito trabalho. Leia por favor, o datasheet do HCS200 para você entender porque digo isto. Nele explica como funciona a atuação dos led's quando trabalhando com este ci codificando.
1 de Outubro de 2013 às 18:25
lario este projeto pode acionar 4 saidas diferente?obrigado
Olá José! Este projeto simula o HCS 200…301. Este dispõe de 4 bits que podem ser usadoa pelo usuário. Na maioria das montagens, tem se usado apenas 2 bits. Trabalha em conjunto com o receptor do artigo 'RECEPTOR DE CONTROLE REMOTO GENERICO PARA HCS200…301 COM PIC 12F629 E 16F628A'. É um pouco mais chato de trabalhar, pois envolve criptografia no 'hopping code'.