FAÇA UM ALARME VEICULAR COM CONTROLE REMOTO RF – COM PIC 12F675 (REF139)

2

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”:

ARQUIVOS_ALARME_VEICULAR

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!

2

35 comentários sobre “FAÇA UM ALARME VEICULAR COM CONTROLE REMOTO RF – COM PIC 12F675 (REF139)

    1. 0

      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

    1. 0

      Olá Tiago! Que tipo de sensor você está se referindo?
      Se for um simples contato (interruptor de porta, por ex. ) basta acrescentar mais um diodo e liga-lo conforme for acionamento positivo ou negativo.

      cláudio

  1. 0

    Caro Cláudio só estou precisando que o mesmo código do artigo que você acabou de responder funcione no artigo alarme de controle remoto abraços

    1. 0

      Olá Marcos!
      Infelizmente, não são compatíveis. Exigiria reescrever o código e realizar novos testes, sendo isto um processo demorado. Adicionalmente, não tenho disponibilidade de tempo para poder ajuda-lo.
      Cláudio

  2. 0

    B.noite Caro Cláudio ,montei o circuito acima ,e depois que vi que não era o que estava precisando ai preciso da sua ajuda .para fazer com que esse circuito acima funcione por presença ,com aquele chaveirinho que manda sinal a cada 40seg.

    1. 0

      Olá Marcos!
      Eu não conheço a tecnologia empregada pelos fabricantes deste chaveirinhos de presença, portanto não saberia te ajudar. No entanto, fiz uma versão de receptor + tx com este objetivo, usando o protocolo do Ht6p20b. Veja os artigos ‘CHAVEIRO EMISSOR DE CÓDIGO HT6P TEMPORIZADO ( TRANSMITE A CADA 40 SEGUNDOS, PARA FINS DE ALARMES DE PRESENÇA)’ e também : ‘RECEPTOR DE SENSOR DE PRESENÇA COM ALARME PARA USO VEICULAR – COM PIC12F675‘.
      Cláudio

  3. 0

    oi amigo.
    quanto vc me cobra para fazer um projeto de um alarme residencial, super simples e me passar o diagrama, programação do ci e componentes? tenho o esquema de funcionamento.
    grato

    1. 0

      Olá Alfini!
      Não realizo projetos de forma comercial. Os circuitos que foram postados são em caráter de hobbie e de natureza experimental, pois não trabalho com isto e nem sou programador profissional.
      Claudio

  4. 0

    OLa Larios

    Gostei do projeto e exatamente que eu estava procurando ,só que para atender minhas necessidades teria como voce colocar o pic para travar e destravar as travas eletricas do carro ?seria melhor ainda se voce tivesse como disponibilizar o codigo em c com pic 16f628 .

    Obrigado

    1. 0

      Olá MRFF! Obrigado por seu comentário e sua sugestão de melhoria. Não estou em condições de mexer neste projeto no momento. Quem sabe, no futuro…
      Cláudio

  5. 0

    Bom dia. Não entendi como fica a ligação dos sensores. Na entrada positiva eu monto um sensor (uma chave na porta por exemplo)fechando com os 5V da placa ou é um sinal 12V direto da bateria mesmo? E as entradas negativas? Me desculpe se não fui claro sou leigo no assunto. Ah e obrigado pelo ótimo artigo!

    1. 0

      Olá Moretti! O objetivo destas entradas + e – é para facilitar a ligação conforme o veículo que o hobista tem. Alguns veículos tem interruptores ligados ao +12volts e a luz de cortesia ao negativo. Outros tem o +12 volts na luz de cortesia e os interruptores ligado ao chassis (-). Assim , escolha a que favoreça no seu caso e deixe desligada as não usadas. Nas portas traseiras geralmente se coloca interruptores adaptados para acionar o alarme ligando ao – (chassis). O mesmo no capo e porta_malas. As entrada positivas podem sim receber +12v direto da bateria porque tem os resistores limitadores.
      Cláudio

  6. 0

    Boa noite Larios. Estou tendo um problema no alarme pois após um dia ligado direto ele começa a ligar sozinho sem comando algum do controle!
    Teria uma Solução Grato!

    1. 0

      Olá Matheus!
      Eu não entendi bem o seu problema: O alarme dispara? Ou religa se estiver desligado? Se ele for disparado pelos sensores, e for desligado a alimentação irá religar disparado. Será que tem alguma coisa a ver? Por favor, não economize linhas para descrever o seu problema.
      Cláudio

      1. 0

        Boa tarde Larios!
        O problema e o seguinte: Ja coloquei o alarme em um carro e o problema é q ele ta rearmando sozinho sem comando
        algum.Isso só acontece depois de um dia de funcionamento até ja comprei outro pic tentei programa-lo e fico na mesma depois de um dia ele rearma.

        Só queria saber se teria uma opinião do que pode ser!
        Grato

        1. 0

          Olá Matheus!
          Interessante! Qual o chip do controle remoto (chaveirinho) que está usando? Quando ele fica um dia ligado ele também desliga?
          Quando você diz ‘um dia de funcionamento’ quer dizer: ficou ligado o dia todo e depois você o desligou usando o controle remoto, mas após isto, passando-se um tempo desconhecido, ele rearma sozinho, ficando ligado novamente do ‘nada’? Ou não é nada disto?
          Claudio

          1. 0

            Boa tarde!
            O chip que estou utilizando é o HT6p20b. Ele não desliga só esta rearmando do nada,e depois disso começa a rearmar direto se tentar desligar ele rearma de novo.
            Grato!

          2. 0

            Olá Matheus! Se tanto desligasse como ligasse sozinho, acharia que fosse algum tipo de interferência na RF. Mas parece que o caso é proveniente de um provável ‘reset’ decorrente de picos na alimentação ocasionadas por indutâncias . Pode ocorrer depois de acionar algum dispositivo elétrico como por exemplo relés, acionados sem ter um diodo em sua bobina. Você colocou o diodo 1n4007 na entrada junto ao 7805 e nas bobinas dos reles? Tente perceber se o defeito se apresenta ao acionar um determinado dispositivo elétrico do carro.
            Cláudio

  7. 0

    Olá amigo, estou utilizando um controle remoto Peccinin eu gostaria de saber o Baud rate que você colocou no seu projeto para os controles, o chip interno do meu controle, é um chip da microchip HCS201.
    Aaah, já ia esquecendo… Gostei muito do tópico, ficou muito bom ! 🙂

    1. 0

      Olá TJmarino! Com controles usando chip HCS somente funcionarão os que tiverem sido programado para pulso básico de 400 Microsegundos. Não sei dizer qual é a duração da programação do seu controle, apesar de você informar que é da empresa Peccinin. Poderá visualizar a transmissão usando um receptor de 433mhz e um osciloscópio ligando na saída ‘out digital’, para tirar a duvida. Também, lembrando que não operará a parte do ‘hopping code’, sendo usado somente o ‘serial number’ enviado na parte fixa do código.
      Cláudio

  8. 0

    Boa noite Larios,
    Fiz a montagem do alarme na placa de circuito impresso e até agora está funcionando corretamente
    de acordo com as suas especificações só gostaria de mudar de 3 para 2 toques e se possível mudar a velocidade dos toques de: suponho 1 segundo para 0,5 segundos é possível ?

    1. 0

      Olá Carlos!

      Para alterar de 3 para 2 toques terá que alterar o arquivo ‘c’ na porção de código mostrada abaixo, comentando o define ‘3toques’ por colocar // na frente e recompilar
      o arquivo c novamente usando o compilador CCS.

      // ESCOLHA SE DEVERÁ SER 2 TOQUES OU 3 TOQUES NA SIRENE, PARA INDICAR ‘LIGADO’
      // #DEFINE 3TOQUES // SERÁ 3 TOQUES //<<<<<<comente esta linha aqui!!!!!!!!!!
      // OBS. DESCOMENTE O DEFINE ACIMA PARA 3 TOQUES E COMENTE PARA 2 TOQUES.
      Já para mudar a velocidade dos toques, terá que alterar na porção abaixo de código, trocando 'ts2,3' por ts2,2. Isto reduzira pela metade o tempo do toque. Também terá que recompilar usando o compilador C da CCS.

      //=======================================================================================
      // GERA TOQUE NA SIRENE
      //=======================================================================================
      if (bit_test(flag_1toq)){
      sirene=1;
      seta=1;
      if(bit_test(ts2,3)){ //<<<<<<<<<<<<trocar ts2,3 por 'ts2,2'!!!!!!!!!!
      sirene=0;
      seta=0;
      bit_clear(flag_1toq);
      ++tok;
      }
      }

      #IFDEF 3TOQUES
      if (bit_test(flag_2toq)){ //OPÇÃO 2 TOQUES
      if ((tok==0) || (tok==2)||(tok==4)) { bit_set(flag_1toq);}
      if((tok==1)||(tok==3)){ if (!bit_test(ts2,3)){ ++tok;} //<<<trocar ts2,3 por 'ts2,2'
      }
      if(tok==6) {bit_clear(flag_2toq);}
      }
      #ELSE
      if (bit_test(flag_2toq)){ //OPÇÃO 3 TOQUES
      if ((tok==0) || (tok==2)) { bit_set(flag_1toq);}
      if(tok==1){ if (!bit_test(ts2,3)){ ++tok;} //<<<<<<trocar ts2,3 por 'ts2,2'
      }
      if(tok==4) {bit_clear(flag_2toq);}
      }
      #ENDIF

      //========================================================================================
      Divirta-se!!!!
      Cláudio

  9. 0

    boa noite Mestre Claudio, como diz meu amigo Lourival, trabalhamos juntos, e abusando de seu conhecimento gostaria de trocar umas idéias, montei um Receptor utilizando o PIC 12F675, utilizando seu arquivo que ilustra um receptor genérico, ainda estamos engatinhando no assemble, mas gostaria de alterar algumas coisas pra que funcione de acordo com o que preciso e gostaria se possivel de sua ajuda pra entender, quando cadastro o controle no receptor ele está aprendendo todos os botoes e acionando saidas diferentes no pic, porem preciso que acione apenas uma saida, e que quando estiver fazendo o cadastro eu transmita e grave apenas o botão que apertei e não o controle todo, para que eu possa utilizar o controle para acionamento de outro receptor no mesmo local com botão diferente do controle ou ainda aproveitar o controle para outros acionamentos que por ventura possam existir. assim poderiamos aproveitar a memória para gravar até 42tx pois teriamos apenas um dos botões cadastrados é possivel?grande abraço e parabens pelo trabalho.

    1. 0

      Olá Sidney! Por favor, nada de chamar de ‘mestre’. Sou apenas um hobista na área de microcontroladores, e estou também aprendendo. Vamos ao que você deseja: Ao ocorrer uma transmissão são enviados 28 bits mais o anticode (que é desprezado por nós). Os 2 últimos bits da transmissão, são os bits relativos ao estado dos botões. Quando eu quero aprender todo o controle remoto, com um único aperto de qualquer botão, eu salvo estes bits em outro lugar, e os apago para serem gravados na EEprom. Assim, em cada recepção, estes 2 bits não entram na comparação, sendo salvos e apagado antes da comparação. Assim, todos os outros serão aceitos. Para gravar um único botão apenas, precisa eliminar esta ação, gravando o código incluindo os 2 últimos bits. Fazendo assim, terá que aprender cada botão.
      Foi feito um exemplo no artigo ‘CONTROLANDO 3 RECEPTORES COM UM ÚNICO CONTROLE REMOTO (C/CI HT6P20B) – COM PIC 12F675’, que talvez lhe seja útil para um estudo.
      Cláudio

  10. 0

    Boa noite, agradeço pela informação irei a procura do transmissor e pretendo comprar as peças para montar o alarme.

    obrigado Larios

  11. 0

    Boa tarde Larios,
    Sou novo no forum e não conheço muito bem eletrônica mas gosto de fazer montagens nas horas vagas.
    Estou com problemas quanto ao transmissor o único que tenho utiliza o ci mc145026na frequência de 315 mhz
    inclusive havia montado o transmissor e receptor com dois canais para uso em outro projeto mas achei o seu bem mais interessante fazendo até inscrever-me no site.
    Enfim, gostaria de saber se posso utiliza-los no projeto.
    desde já agradeço.
    Carlos

    1. 0

      Olá Carlos! Este seu transmissor é um modelo mais antigo usando o ci 145026. Infelizmente, para as montagens aqui citadas ele não servirá. O ideal é você adquirir novos tx’s (chaveirinhos comerciais) na frequência de 433 mhz e de preferencia com ci. ht6p20b internamente. O modulo receptor para 433mhz é facilmente encontrado nas lojas de componentes eletronicos com varios formatos, sendo muito usado em placas de controle de portões para residências. Poderá adquirir inclusive em lojas da internet , que enviam tais itens pelo correio.
      Existem inúmeros circuitos integrados usados em controles remotos. Seria muito difícil para mim, fazer um projeto para cada um, até mesmo impossível.
      Seja bem-vindo!!
      Cláudio

  12. 0

    lario estou aproveitando as minhas horinhas de folga e apreciando estas magnificas engenharia que voce desenvolve,parece mais uma arte do que mesmo projeto,eu tenho uma leve impressão que voce ja visitou a naza,pois sua inteligencia em bolar o esquema o software simular e postar é uma tarefa desafiadora. estou curioso para chegar em casa e realizar a montagem deste formidavel dispositivo de segurança que a tempo estou a procura.lario obrigado ainda existem pessoas como voce que nos dão muitas alegrias. jose luiz

    1. 0

      Olá José! Obrigado por seu comentário. Mas… por favor, não exagere! Divirta-se com a montagem!
      Cláudio

Os comentários estão fechados.