Muitos que trabalham com receptores de controles remotos e placas , reclamam quando tem que reprogramar (reaprender) todos os controles por causa de apenas um que foi perdido. E se pudessemos ter a opção de apagar individualmente um controle que foi perdido? Pouparia muito tempo, e …. reclamações dos usuarios. Como fazer isto? Apresento-lhes o BIG_GEN_6P20B51E.
Veja o esquema abaixo:
O visor LCD foi essencial para podermos acessar posições de memória, visando apagar os controles (chaveirinhos) de forma individual.
Neste projeto, é apresentado o conceito de apagamento individual e gerenciamento de controles. Gerenciamento de controles? ‘O que é isto?’ voce dirá!!!
Pense no seguinte: Adiantaria ter uma maneira de apagar determinado controle remoto (chaveirinho) se não sabermos qual apagar? Aí entra o ‘gerenciamento de controles’. Alguém designado ao serviço de manutenção irá ‘gerenciar’ todos os controles aprendidos, relacionando seu numero com um usuário especifico. Por exemplo: apto 12 – controles n:23,24,25 – Sr. João Silva ………
Na situação do Sr. João Silva vier reclamar que perdeu um controle, poderiamos pedir os outros que ele tem em mãos e acionar vendo os seus numeros no lcd do BIG_GEN. Assim, o numero que não constar , será o que deverá ser apagado. Somente fazendo gerenciamento é possivel usar esta facilidade.
Do contrário, vamos ter que apagar tudo e reprogramar um por um, e … ufa!!!
Como dito, BIG_GEN é uma placa generica com 2 saidas para uso nos pinos 2 e 3 do AT89C2051. Voce poderá ligar sua aplicação nestes pinos para usa-lo como controlador remoto, acionamento de portão automático, iluminação, etc. Permite o uso de 340 controles (max). Estes ficam com seus endereços armazenados na EEprom externa 24c08. Em caso de pane, a EEprom poderá ser usada em outra placa igual, sem perder a programação dos controles cadastrados. Quando o numero de controles chegar a 340, não haverá mais aprendizado, e uma mensagem aparecerá no lcd : ‘limite max mem’ . Se algum controle for apagado , este espaço na memória será usado para alocar um novo controle somente quando tiver atingido o limite maximo de controles na memória. Para controlar a placa, temos 4 botões, sendo: ‘learn’ para aprendizado do controle e para apagamento, botão ‘1’ para incremento rapido do contador de numero de controle, botão ‘2’ para incremento lento e ‘reset’ para cancelar operações e reiniciar.
Ao ligar o BIG_GEN, aparecerá no visor do lcd o nome da placa e em seguida aparecerá:
‘AGUARDANDO TX..!’.
Ficará com esta mensagem até que um controle seja acionado, ou um ‘reset’. Se um controle for acionado e este não estiver programado (aprendido), aparecerá a mensagem:
‘RECEBENDO TX N.: TX DESCONHECIDO’.
Para programar(aprender) este controle (chaveirinho), basta apertar qualquer um dos seus botões e manter apertado. Em seguida, aperte o botão ‘LEARN’ por apenas 1 segundo, que irá aparecer a mensagem:
‘OK! TX APRENDIDO’
Acione novamente o controle (chaveirinho) e irá aparecer a mensagem:
‘RECEBENDO TX N.: XXX’ (Sendo XXX o numero do controle recebido)
Este número tem que ser marcado no controle e registrado em uma lista de usuarios/controles. Obs. Só funciona com controles que usam o circuito integrado HT6P20B.
Esta mensagem ficará no lcd até que uma nova transmissão ocorra, ou se for feita operação de apagamento ou ainda, um ‘reset’.
Como funciona a operação de apagamento?
De duas formas: a forma geral (apagar toda a memória) e a forma individual (apagar um único controle).
Para entrar em ‘modo de apagamento’ faça o seguinte:
1) APAGAMENTO INDIVIDUAL:
Aperte o botão ‘learn’ por mais de 10 segundos, ou até que apareça a mensagem:
‘REMOVER CONTROLE’
Logo em seguida, o lcd irá mostrar na linha superior:
‘APAGAR UNICO TX?’
E na linha inferior:
‘DIG: 1=SIM 2=NÃO’
Se o botão ‘1’ for apertado, aparecerá a mensagem na linha superior:
‘ESCOLHA O N. DO TX’
Depois de um tempo pequeno, será limpo o visor e aparecerá a mensagem na linha superior:
‘1=^R 2= L=E R=C’
Isto significa:
Aperte botão ‘1’ para incremento rapido do contador com numero do controle
Aperte botão ‘2’ para incremento lento do contador com numero do controle
Aperte botão ‘L’ (LEARN) para efetivar o apagamento do número escolhido (mostrado na linha 2 do lcd).
Aperte botão ‘R’ (RESET) para cancelar operação ou espere 30 segundos sem acionar botões.
Na linha 2 aparecerá os valores de 1 a 340, que pode ser alterado com botão ‘1’ ou ‘2’(modo lento/rapido).
Após escolher o numero do controle a apagar, aperte o botão ‘LEARN’. Após isto, aparecerá a mensagem:
‘APAGAMENTO OK!’
Isto confirma que o número do controle escolhido foi devidamente apagado. Após esta etapa, o programa vai para o inicio, apresentando o nome da placa e a mensagem de ‘aguardando tx!’.
2) APAGAMENTO GERAL:
Aperte o botão ‘learn’ por mais de 10 segundos, ou até que apareça a mensagem:
‘REMOVER CONTROLE’
Logo em seguida, o lcd irá mostrar na linha superior:
‘APAGAR UNICO TX?’
E na linha inferior:
‘DIG: 1=SIM 2=NÃO’
Se o botão ‘2’ for apertado, aparecerá a mensagem na linha superior:
‘APAGAR TODOS TX?’
E na linha 2 aparecerá as opções:
‘DIG: 1=SIM 2=NÃO ‘
Aperte botão ‘1’(sim) para apagar geral. Se apertar botão ‘2’(não) irá cancelar a operação com a mensagem:
‘APAG. CANCELADO!’
Após apertar botão ‘1’(sim), aparecerá mensagem de confirmação:
‘CONFIRME: TODOS!’
Aperte botão ‘1’(sim) para confirmar e iniciar o apagamento total da memória. Caso aperte o botão ‘2’(não) irá cancelar a operação com a mensagem:
‘APAG. CANCELADO!’
Depois de confirmado , ainda apagando a memória, aparecerá a mensagem:
‘AGUARDE……..’
e então, com a memória já apagada, aparecerá a mensagem:
‘APAGAMENTO OK!’
Após o que, o programa irá ao início, apresentando o nome da placa e a mensagem de ‘aguardando tx!’.
Com respeito ao programa ASM, foi usada rotinas de verificação da entrada de RF , no pino 11 do AT89C2051, testando a cada 50 microsegundos, e incrementando contadores para nivel 1 e 0. A diferença entre eles determina se o bit a ser deslocado no resultado será ‘1’ ou ‘0’. Após 2 transmissões serem recebidas, estas são comparadas para garantir fidelidade na recepção.
Após isto, o programa vai verificar se tem registrado na memória o número do controle recebido. Senão, mostará a mensagem de ‘tx desconhecido’. Verifica também se o botão ‘learn’ está pressionado, e se tiver, grava o número na proxima posição livre da memória, até um total de 340 controles. Quando em ‘modo de apagamento’, se não for concluida ou se ficar sem acionar nenhum botão por 25 segundos, automaticamente irá a ‘reset’. No ‘modo de apagamento’, não é possivel receber nenhuma transmissão de controles. Por isso, deve ser uma operação rápida. Se for acidentalmente acionada, sairá para ‘modo de uso’ por tempo. A variavel que controla este tempo é ‘TAMG’ ,podendo ser alterada para mais ou menos. O aprendizado dos controles ocorre de forma sequencial, ou seja, a cada controle aprendido receberá o próximo número. Se a memória atingir o limite máximo, haverá uma procura por números apagados e somente nesta situação é que serão usados estes espaços da memória. Por exemplo: Voce programou um controle, cujo número foi 340. Na sequencia, voce programou mais um que recebeu o número 47. Este último, foi programado em uma posição anteriormente apagada. O tamanho do programa quase empata com o espaço da flash do AT89C2051. Sobrou realmente poucos bytes. Mas …. espaço é para ser usado!!!
Foi feita esta montagem apenas em protoboard, usando o esquema acima. Espero que este projeto possa ser de base para sua futura aplicação.
Segue abaixo o arquivo ASM:
Segue abaixo o arquivo HEX:
Até o próximo artigo!!!
Bom dia Claudio,
Gostei muito deste post (ainda não li os outros). O alarme da porta do meu prédio parou de funcionar e então resolvi abrir para ver qual era o problema, notei que havia uma bateria de 9V descarregada, mesmo mal.
Ao investigar a placa, notei que ela usa um HT6P20B e um outro chip DIP8 que está com a parte superior raspada, provavelmente é um microcontrolador PIC ou 8051. A placa é desenvolvida por uma empresa de segurança aqui de BH chamada Innear. Coloquei uma foto dela no Flickr: http://farm3.staticflickr.com/2872/10187825885_ff62548e9f_k_d.jpg
Parabéns pelo blog, embora não programe mais em assembly e nem em PIC, valorizo o trabalho de faça isso.
Olá Akax! Obrigado por seu comentário e compartilhar sua experiência. Pela foto, percebe-se que é um sensor de porta com reed-switch, sem fio.
Claudio
🙁 Opa Claudio, esta versão de receptora com endereçamento e com eeprom externa para uma quantidade maior de tx, seria viavel no pic????
Olá Agnaldo!
Seria viavel, sim. Mas , o grande problema é tempo para converter o código e testar. Vai para o ‘caderninho’. Quanto a enviar seus arquivos de PCB, você poderá envia-los pelo email
claudio@picsource.com.br , que quando receber, vou posta-lo, ok!!!.
Claudio
Prezado Claudinei:
Fico feliz que tenha sido de ajuda. Com respeito ao programa para compilar, tenho usado o Asem51, pois procuro escrever em assembler para obter programas
mais reduzidos e o programador ‘caseiro’ hyperprog’ (já postado).Se voce gosta de ‘basic’ o bascon-51 é muito bom, pois já tem facilidades para usar varios programadores comerciais. Muitos preferem o ‘Keil’ para trabalhos em ‘c’, mas tem que fazer um bom set up para não criar um programa volumoso. Use o que você se sente melhor para trabalhar. Quanto a versão com hcs , parece que, para fins comerciais, somente a linha microchip pode ser usada. Consulte fabricante. Mas para experiencias futuramente postarei alguma coisa.
Claudio
E aí tudo bem Claudio , fiz umas modificaçoes aqui de hardware e funcionou bem como eu queria (qual programa voce recomenda para escrever no AT89C eu utilizo o bascom), e teria como voce postar o mesmo circuito mas para o HCS200…301 seria perfeito….até mais
Parabens cara, voce nao imagina a imensa alegria que tive ao ver esse projeto ,ainda nao tive tempo de ler bem a fundo mas desde ja agradeço me parece excelente..logo estarei postando novos comentarios ..