Hoje encontramos no mercado, transmissores de controle remoto para portão e alarmes com vários circuitos integrados. Que tal um único código em que pudéssemos optar qual modelo usar?
Analisando as muitas situações de uso para os controles remotos, desejei tentar fazer um programa que atendesse as mais variadas necessidades dos hobistas. Por exemplo: Um artigo é postado para um receptor usando um HT6P20b, com 2 canais. Surge alguém que precisa de 3 canais. Outro hobista deseja um canal invertido. Ainda outro, que a saída seja em modo ‘retenção’ para todos os pinos. Sem falar dos que desejam um pino em modo ‘pulso’ e outros em ‘retenção’. Realmente se torna um pouco ‘enfadonho’, escrever e reescrever os códigos já publicados, com estas simples alterações. Também, em muitas localidades não se encontra determinado integrado usado na montagem, mas existe de outros modelos. Surgiu a ideia de escrever um código em que fosse possível montar nosso receptor a ‘LA CARTE’. Cada hobista escolheria sua opção e marcaria no código. Depois é só compilar e carregar o PIC.
As características desejadas obtidas neste código são estas:
1) Opção de escolher qual integrado do transmissor iremos decodificar. Assim, poderá ser optado pelo ci HT6P20B, PT2262,PT2240B e família HCS 200 …301 (somente em modo fixo, sem usar o HOPPING CODE).
Obs. Apenas um modelo pode ser usado por vez.
2) Opção de escolher de forma individual, se as saídas serão em modo ‘PULSO’ ou ‘RETENÇÃO’.
3) Opção de escolha de forma também individual, se as saídas serão ‘invertidas’ ou ‘normais’.
4) Opção por aprendizado único de todos os botões (para uso em um único aparelho) ou aprendizado individual (para uso com vários aparelhos)
5) Escolher entre o PIC 12f675 ou 629.
6) Escolher carregar um byte de calibração provisório (em situações de perda deste de forma acidental). Os Pics ‘encostados’ , por não funcionarem em programas gerados em compiladores ‘C’, pela falta deste byte de calibração, poderão ser reaproveitados.
7) Possibilidade de mudar quais pinos serão usados, respeitando as limitações para pinos específicos.
Outra necessidade é que fosse em uma linguagem mais ‘usual’ e não no ‘Assembly’, pois muitos tem ‘aversão’, uma genuína ‘idiossincrasia’ só da menção do nome desta nobre linguagem. Dando os primeiros passos na linguagem “C”, portanto, esta foi a linguagem escolhida para este humilde projeto de iniciante. Creio que, para quem já é experiente nesta linguagem, não terá dificuldade em alterar e talvez simplificar as linhas de código. Mas foi o que consegui e portanto, estou compartilhando. Todas sugestões serão bem recebidas, de como fazer de uma forma melhor.
Voltando ao código, foi usado o compilador CCS C para a compilação, podendo ser usado a versão de demonstração. Logo no início do programa, podemos alterar nossas escolhas em ‘Opções do Usuário’, por comentar ou descomentar as linhas relacionadas as opções.
A rotina faz uso da interrupção do Timer 0 a cada 100 microssegundos, para analisar o estado da entrada que tem o sinal do receptor de 433mhz (RFIN, pino 3). Se for ‘0’, irá incrementar o contador ‘LC’ e acionar o flag_L. Depois, quando a entrada ficar ‘1’, irá incrementar o contador ‘HC’. Quando a entrada rfin ficar ‘0’ novamente, será analisado se o contador ‘LC’ estourou um valor máximo, o que indicaria um intervalo grande (pausa entre transmissões) e que servirá de sincronização do sinal. Se o valor de ‘LC’ ficou abaixo do permitido, haverá uma subtração de ‘LC’- ‘HC’, cujo valor do ‘carry’ será deslocado para dentro do buffer de recepção de 3 bytes e resetando ‘LC’, ‘HC’ e o ‘flag_L’, em preparação para um novo bit a ser recebido. Ao final de 24 bits recebidos (ou 64 no HCS) teremos uma recepção completa. Isto será sinalizado por setar o ‘flag_rok’. São feitas 2 recepções para comparar e eliminar erros de transmissão. Depois a rotina procura na memória pelo número transmitido (serial number), se já foi aprendido na memória. Se foi, irá acionar as saídas de acordo com as opções escolhidas pelo usuário. Se não, irá verificar se o botão ‘LEARN’ foi apertado (e o led ‘learn’ deverá estar aceso). No caso de ter sido apertado, será gravado este número recebido na EEprom e apagará o led “LEARN’. Com respeito a recepção do HCS, foi aproveitado apenas parte do serial number (HCS usa 28 bits + 4 botões= 32 bits ou 4 bytes da parte ‘fixa’ + 32 bits ou 3 bytes na parte encriptada, mas são gravados na EEprom apenas 22 bits + 2 bits dos botões). A razão desta decisão foi dar compatibilidade com os outros controles que usam apenas 3 bytes para o serial number.
Atenção: Este programa é de caráter didático apenas, sujeito a bugs ainda não detectados.
Segue o arquivo ‘C’:
Segue pasta zipada com os arquivos do projeto (10/11/2013):
Segue pasta zipada com os arquivos do projeto ( atualizada em 17/12/2016):
Segue pasta zipada com os arquivos do projeto, sendo esta uma versão que salva o estado das saídas em retenção na EEprom do pic e retorna no seu reset ( 17/12/2016):
E versão (em teste) para ht6p20d também:
Como a montagem permite muitíssimas combinações de circuitos integrados e modos de operação, ficará evidente porque não tentei fornecer o arquivo Hex. Cada hobista deverá escolher a suas opções e recompilar, para obter o arquivo HEX.
Obs. Ainda não obtive retorno do funcionamento do código para PT2262, sendo testado apenas com o clone do PT2262 deste blog.
Segue os esquemas de 4 sugestões de montagens, onde temos receptores de 1 a 4 canais:
Manuais:
HCS200
PT2262
PT2240b
Pic12F675
Curiosidades:
O rio que teve seu curso invertido
Outros grandes terremotos estão por vir
Será que Deus é o responsável?
Teve um Projeto? O econômico peixe-cofre
Por que a cooperação é essencial
Como poderá manter um conceito equilibrado sobre o dinheiro?
Sou viciado em aparelhos eletrônicos?
20 modos de criar mais tempo
Dengue — uma ameaça crescente
Preservados numa gota dourada
O “mundo perdido” da Bolívia
Outros assuntos:
Um site para você
Como disciplinar seu filho adolescente
Por que eu me corto?
Desempenhem bem o papel de pais
Como fazer seu segundo casamento dar certo
O que acontece quando morremos?
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?
Perguntas Bíblicas Respondidas
Até o próximo artigo!!!
Boa noite Claudio, deixa eu te perguntar? esse código pode ser adaptado para usar um 16F877A invés de programar 4 saídas programar 32 saídas?
Sérgio
Olá Sérgio!
Este programa trabalha com htp20b ou htp20d . Esses somente dispõem respectivamente de 3 e 4 canais Talvez possa usar o tx/rx de 32 canais publicado recentemente neste blog.
Cláudio
Bom dia Claudio! eu de novo! rsrs sobre o sensor de toque capacitivo que tinha comentado em post anterior vou postar os links do site onde achei, não estou no meu pc, mas preciso perguntar uma coisa pra você se seria possível nesse “receptor flex” gravar estado do pino no modo retenção para que na falta de energia ele retornasse no mesmo estado. Seria possível?
Atenciosamente
Sérgio
Olá Sergio!
Terei que dar uma olhada antes de responder. O programa trabalha com muitas opções que acabam complicando qualquer mudança.
Cláudio
Boa tarde Claudio
estou tentando aprender programar , voce poderia me ajudar como programo 12f629 , para receptor 3 canais 433 mhz .
obrigado
Olá James!
Você já programou algum pic alguma vez?
Cláudio
Pois não comprei o programador picburner usb k 150
pois ja programei arduino pelo que eu vi o programador so aceita em hex , gostaria de saber se voce da aulas sobre como programar .
Olá James!
Você poderá obter bastante informação de uso do equipamento consultando o seu manual e adicionalmente, o forum do fabricante. A maioria dos programadores para pic só funcionam com o arquivo hex. Outros fabricantes podem usar nomenclatura diferente em seus arquivos. Para aprender a programar, vá no Youtube e veja videos sob o titulo ‘programar pic’, onde você terá muita informação desde do básico até criar arquivos em ‘C’. Eu não dou aulas de programação, pois sou apenas hobista nesta área.
Cláudio
Claudio certo vou verificar ,
não consegui abrir os arquivos compactados que você deixou pois lá tem em hexa a programação para 3 canais ?
obrigado pela atenção .
Olá James!
Nesta pasta tem um arquivo hex, mas para uma versão especifica de circuito integrado. Para outras versões, deverá alterar nas ‘opções de usuário’ do arquivo C e recompilar usando o compilador CCS C. Desta forma, irá obter o arquivo hex apropriado para a sua montagem.
Cláudio
Hallo Claudio 🙂
I’m trying to do 4-chanel receiver for IC EV1527, but I have enough experience. Can you help me ? 🙂
Best wishes from Bulgaria 🙂
Barlog Hello !
Unfortunately I do not know this chip and I will not know how to help you. Try other blogs dealing with the subject .
Thanks!
Cláudio