Está procurando um esquema fácil de alarme veicular, com controle remoto RF? Que possa usar estes controles remotos comerciais de alarme/portões? Com um pequeno microcontrolador PIC de 8 pinos?
Quando desejamos construir um alarme veicular (moto/carro/onibus,etc), ficará mais fácil se utilizarmos os recursos internos de um microcontrolador. Com poucos componentes interligados a um pequeno PIC 12f675, facilmente obtemos o resultado desejado. O grande problema, para maioria de nós, é ‘como fazer o programa que rodará no PIC’. Este artigo fornece uma sugestão de programa em ‘C’, que poderá ser uma base para seu próprio projeto (relembrando que sou apenas um ‘hobista’ e não ‘programador profissional’!). Veja o esquema abaixo:
Foi usado um receptor comercial de 433mhz, com um pedaço de fio servindo de antena, para receber os sinais emitidos por transmissores do tipo ‘chaveiro’ também de 433mhz. Outras frequências podem ser usadas, desde que tanto o receptor como os transmissores utilizem a mesma frequência.
O pino 4 do PIC está programado para receber os sinais transmitidos pelos ‘chaveirinhos’. Já no pino 7 temos um misto entre o acionamento do led ‘monitor’ e a entrada do botão de programação ‘learn'(prog). O programa se encarrega de alternar entre a função de ‘entrada’ para ler o botão e como ‘saída’, para acionar as piscadas no led ”monitor’. O pino 5 é uma entrada para disparo do alarme, sendo ligado interruptores nas portas, capô e porta-malas, além de outras fontes de disparo, de forma positiva ou negativa. O pino 2 irá acionar um rele destinado a fazer piscar as setas do carro, sendo usado um rele com duplo contato, de 12 volts na bobina. Para acionar a sirene eletrônica ou a buzina (opção) foi usado outro rele de 12 volts, por meio de um transistor BC548, cuja base é acionada pelo sinal proveniente do pino 3. Também temos outro rele que pode ser usado para cortar a alimentação da bomba de combustível ou que interrompa a alimentação da bobina de ignição, quando ocorrer um disparo do alarme. Foi usado outro BC548 para acionar este rele em seu coletor, sendo que sua base é acionada pelo pino 6 do PIC.
Foi previsto no programa a função ‘rearme’ para quando o alarme se encontrar disparado e alguém tentar desligar a bateria para dar um ‘reset’ no alarme. Se isto ocorrer, o alarme reinicia a sirene, bloqueia bomba/bobina e pisca as setas por mais um período de tempo. Utiliza-se a ultima posição da EEprom para guardar o estado do alarme (disparado=0x00 e não disparado = 0xff).
O led ‘monitor’ indica por suas piscadas que o alarme está ativado. Deverá ficar em lugar visível para quem está de fora do carro, com um indicativo de existência de alarme no veiculo. Quando ocorre um disparo do alarme, ele passa a piscar de forma mais rápida, e continuará, mesmo que pare a sirene após um tempo de disparo. Somente retornará a piscar mais lento quando for acionado o controle remoto para desligar/ligar. Este led também é usado para indicar o aprendizado do controle remoto.
Programando controles remotos:
Aperte o botão ‘LEARN’ momentaneamente. Deverá acender o led monitor. Acione um dos botões do controle remoto. Deverá apagar o led, indicando o aprendizado.
Apagar controles remotos da EEprom:
Aperte o botão ‘LEARN’ por mais de 15 segundos. Irá acender e continue a apertar o botão até o momento em que apagará. Solte o botão ‘LEARN’. Está feito o apagamento! Nenhum controle mais funcionará! Deverá ser seguido os passos de aprendizado dos controles desejados, para voltar a operar o alarme.
O programa em ‘C’ permite que o usuário possa ajustar algumas características de funcionamento e depois recompilar, para gerar o arquivo .hex a ser usado na programação do PIC. Por exemplo: Pode-se mudar de 3 para 2 toques ao ligar, escolher o modelo do chip usado no chaveirinho transmissor, acionamento do alarme de modo continuo ou tempo de 5 minutos, único disparo ou não, etc.
Todos os testes foram feitos com um HT6P20b no chaveirinho. Os outros modelos foram apenas simulados e não foi possível fazer um teste mais abrangente. No caso do chip da família HCS200…301, consegui resultados somente quando programado para baud rate de 400 useg, sem usar ‘hopping code’, fazendo uso apenas do ‘serial number’. Este também foi truncado para 3 bytes, visando usar as mesmas rotinas de escrita/leitura dos outros ci’s.
Ao comprar os controles remotos comerciais, certifique que todos sejam iguais (com o mesmo chip interno, conforme as opções do programa).
Se possível, prefira os que tem HT6P20b internamente. Depois carregue o arquivo hex correspondente ao chip usado, fornecidos abaixo na pasta de arquivos.
Importante lembrar que o PIC a ser usado na programação tenha o seu byte de calibração intacto, do contrário não funcionará nada do programa. Caso tenha perdido, altere o arquivo “C” por descomentar a opção ‘perdi_byte_calibração’ e recompilar. Este colocará um valor provisório para teste. As temporizações poderão ser alteradas visto que o oscilador poderá estar com frequência mais alta ou mais baixa que 4 mhz. Para obter o valor correto do byte de calibração do seu PIC, leia o artigo ‘ Como calibrar a frequência do oscilador interno do pic 12f675/629‘.
O programa tem cabeçalhos que mostram o que cada porção do programa realiza, facilitando mudanças no programa.
Quanto ao tempo que o alarme fica disparado (5min) poderá ser alterado na constante:
byte const TMAX_SIRENE = 8*(5);//sirene ligada
Altere o valor entre parenteses de 1 até o limite de 31 min, como máximo permitido.
Obs. Esta montagem foi realizada apenas em placa de protoboard, sujeita a bug’s ainda não detectados. Está sendo fornecido os arquivos que poderão ser alterados conforme a necessidade dos hobistas. O autor não se responsabiliza por acidentes relacionados a montagem/uso deste alarme, em virtude do objetivo apenas didático do artigo.
Segue pasta com os arquivos “C” (CCS COMPILER V. 3.200) e “HEX”:
Manuais:
Pic 12f675
Outros assuntos:
Por que vencer o perfeccionismo?
Você se exercita o suficiente?
A língua da selva — segredos da comunicação entre os animais
Por que se preocupar com a exposição ao sol?
Conceito equilibrado sobre animais de estimação
Quando um bebê gorila chorou
Tome medidas para melhorar sua saúde
Medicina transfusional — seu futuro está garantido?
Mães saudáveis, bebês saudáveis
Esportes radicais — Vale a pena correr o risco?
Viver sob o controle da superstição
Orientações para uma vida melhor:
Como aproveitar bem seu tempo
Como controlar o estresse
Como proteger seus filhos
Por que continuar? Três razões para não desistir da vida
Qual é o sentido da vida?
“Tenho certeza de que existe um Criador”
A verdade sobre magia, encantamento e feitiçaria
Como posso causar uma boa impressão?
Transtornos de humor – Como obter alívio
Como resolver problemas no casamento
Aprenda a perdoar
Como lidar com os sogros
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?
Até o próximo artigo!
Gostaria de entender o funcionamento das “Flags” que você utiliza no programa.
Obrigado.
Olá Bruno!
Segue a função dos flags:
#define flag_l flags,1 //flag para rotina de recepção
#define flag_first flags,2 //já tivemos ou não uma recepção anterior para ser comparada (confirmação e integridade da recepção)
#define flag_aux flags,3 //flag auxiliar
#define flag_rok flags,4 //tivemos uma recepção correta de trens de pulso que poderá ser a primeira ou a que será usada para comparar.
#define flag_acao flags,5 //ok. tx é um dos gravados na eeprom – libera para acionar/desacionar alarme
#define flag_gr flags,6 //usado na operação de gravação de um novo controle
#define flag_1toq flags1,0 //rotina gerará 1 toque na sirene momentâneo
#define flag_2toq flags1,1 //rotina gerará 2 toque na sirene momentâneo
#define flag_ton flags1,2 //sinaliza que temporização do alarme ligada ou desligada
#define flag_on flags1,3 //on/off do alarme (alarme ligado ou desligado)
#define flag_disp flags1,4 //alarme disparado
#define flag_unica flags1,5 //flag para unico disparo e cessa por tempo/Direto
#define flag_inv flags1,6 //usado na geração das ‘piscadas’ das setas
Este programa foi um dos primeiros em “C”. Por isto, deve parecer muito confuso, pois ficou bem próximo de uma rotina “ASM”.
Atualmente tenho usado o short ou int1 para tais flags, facilitando um pouco mais.
Espero que tenha ajudado.
Cláudio
ola Larios! tem como me enviar a aprogramaçao completa?