FAÇA UMA CENTRAL DE ALARME COM 3 SETORES, COM DISCADORA E CONTROLE REMOTO – USANDO PIC16F628A (REF102)

1

Já por algum tempo, dispositivos de segurança estão em alta, em decorrência do aumento do crime. Que tal ter uma ‘sensação de segurança’ a mais, construindo uma central de alarmes? Veja mais…

Ninguém pode negar: A indústria eletrônica voltada para dispositivos de segurança está florescendo. Isto promove a concorrência e a preços acessíveis nas centrais de alarmes e outros dispositivos associados. A parte ruim é que prova que, cada vez mais, não temos ‘paz e segurança’ necessária para uma qualidade de vida e que temos que, a cada momento, tentar nos proteger do crime.
Podemos encontrar centrais completas entre R$100,00 , das mais simples, a R$ 3000,00, ou mais, dependendo dos mais novos recursos tecnológicos disponíveis.
Compensa fazer uma? É um tanto trabalhoso, e se você realmente não for amante da eletrônica, hobista de ‘carteirinha’, então é melhor comprar uma pronta e peça que instale! Mas se você gosta de desafio e está aprendendo a programar (como eu), ou deseja ver como foi achado uma determinada solução para uma rotina, então você se qualifica a testar/montar este dispositivo. Este é o primeiro alarme que arrisco fazer, em virtude da complexidade em fazer trabalhar juntas as rotinas de teclado, recepção de sinais RF, decodificação, geração de bips, geração de sinais de pulso ou de tom, monitorar entradas, temporizar sirene, etc. Confesso que não está 100% a contento, em virtude de algumas limitações impostas por algumas rotinas escolhidas. Mas, mesmo assim, resolvi publicar (antes que perca a coragem de continuar).
Veja então, algumas das características do alarme proposto:

* Dispositivo de Alarme com 3 zonas, para facilitar o monitoramento da origem da violação.
* Opção de até 25 sensores por RF e 5 controles remotos. Obs. Deverá ser adquiridos sensores/controles remotos comerciais para frequência de 433Mhz, com circuito integrado interno da família HT6P20b.
* Discagem automática, em caso de invasão, para até 4 números telefônicos previamente programados pelo usuário.
* Pode ser programado para discar em modo ‘Pulso’ ou ‘Tom’ (DTMF).
* Opção de ativar todo o sistema ou parte dele (colocando os Jumper em J1, J2).
* Opção de tempo de disparo da sirene : 2min 30seg, 5 min ou 10 min, alterando em ‘Definições do Usuário’ e recompilando o arquivo ASM.
* Opção de temporizar até 3 zonas, ao acionar pelo teclado, alterando em ‘Definições do Usuário’ e recompilando o arquivo ASM.
* Opção de bloquear zonas violadas (um único disparo, mesmo com acionamento posterior do sensor ou deixado aberto), alterando em ‘Definições do Usuário’ e recompilando o arquivo ASM.
* Opção de troca de senha pelo usuário (senha de 4 dígitos).
* Permite recuperar senha padrão (1234), em caso de esquecimento da senha pelo usuário.
* Permite realizar testes de discagem sem acionar a sirene, para conferir a programação dos números telefônicos.
* Permite testar os sensores usando breves toques da sirene para indicar mudança aberto/fechado nos sensores.

Mas, vamos então ao circuito da central de alarmes:

DESCRIÇÃO GERAL DO CIRCUITO:

O microcontrolador escolhido foi o popular 16F628A, disponível com facilidade no comércio eletrônico. Nos pinos 15 e 16 dele, está colocado um cristal de 10 Mhz para garantir precisão nas rotinas de tom (DTMF). O pino 1 é uma saída para acionar um rele, que conecta a linha telefônica aos sinais de discagem e avisos, gerados no PIC.
Em modo ‘Pulso’, este rele irá ‘bater’ no ritmo dos números digitados (tec-tec-tec…). Um led em serie com o resistor de polarização da base do transistor que liga este rele, ajuda a ver quando a central está conectado a linha telefônica. Os pinos 2 e 3 são por onde saem os sinais DTMF gerados ao discar no modo ‘Tom’. O pino 3 necessita de pullup (open colector). Foi previsto um zener de 5 volts e um diodo 1N4148 para proteger o PIC de tensões elevadas oriundas da linha telefônica.
Os pinos 13 e 17 são as entradas das zonas 1 e 2. Note que junto a elas, temos um Jumper ‘J1’ para ser colocado, se a zona 1 não for usada, e o Jumper ‘J2’ , se não for usada a zona 2. Estes jumpers mantêm estas entradas constantemente aterradas e não permite o disparo. Portanto, ao usar estas zonas , tem que retirar o Jumper.
Note que estas entradas se comportam também como saídas para ‘piscar’ os leds de violação Z1 e Z2, via os transistores BC548, ou similar.
O pino 4 está acoplado ao botão ‘Prog’. Este tem o objetivo de programar os controles remotos e sensores sem fio. Seu uso é simples: Aperte e solte o botão ‘Prog’. Ouvirá um apito e começa a piscar o led Arm/Prog. Aperte a tecla ‘1’ para controles ou ‘2’ para sensores sem fio. Ouvirá 2 bips. Aperte o controle remoto ou acione o sensor remoto para que transmita. Então, se ouvirá um outro apito e o led ‘Arm/Prog’ se apaga. Pronto! Repita com todos os controles e sensores desejados, um por um. o botão ‘Prog’ também permite o ‘reset’ da senha (retornar ao valor padrão ‘1234’). Para fazer isto, desligue a alimentação do PIC, aperte o botão ‘Prog’ e mantendo apertado, religue a alimentação do PIC. Ouvirá um apito, e o led ‘Arm/Prog’, ligado no pino 6 , piscará enquanto o botão estiver apertado. Solte o botão e ele se apagará, concluindo a mudança de senha para a ‘padrão’.
Note também, que o pino 6 serve tanto de saída para o led ‘Arm/Prog’, como saída para o ‘bip’ do teclado, por meio de uma capsula de cristal, tipo disco, muito comum.
O pino 12 é uma saída para o led de violação da zona 3, ou seja, dos sensores remotos (sem fio). Todo sensor remoto acionado, quando o alarme estiver armado, fará piscar este led.
Os pinos 7,8,9 e 10 são empregados unicamente para o teclado, de maneira multiplexada. Um simples teclado de telefone foi usado, mas nada impede de faze-lo com chaves dactilares ou outros tipos de interruptores. Os diodos formam uma lógica usada na multiplexação. Uma tabela junto ao esquema, mostra o que liga com quê, ao apertar uma determinada tecla.
O pino 18 está sendo usado para receber os sinais do receptor de 433 Mhz, como uma entrada apenas. Poderá usar qualquer receptor comercial de 433Mhz, daqueles usados em placas de portão, de preços bem acessíveis. Já o pino 11, esta programado como saída, que irá acionar um rele, em cujo contatos será ligado uma sirene, destas comerciais, encontradas com vários tipos de tons e efeitos, a gosto do usuário (preço R$10 a 15 reais).
Bem, só sobraram os pinos de alimentação do PIC, sendo todos muito bem usados, em até mais de uma função.
Foi previsto o uso de uma bateria de 12 volts, para alimentar o circuito, quando houver falta de energia elétrica ou corte dos fios da rede, por um invasor.
Um led de nome ‘REDE’ foi montado, para indicar a conexão a rede elétrica e a devida carga da bateria.

O ARQUIVO ASM

Como destaque, podemos escolher antes de compilar este arquivo, as seguintes opções: Tempo da sirene ligada e quais zonas serão temporizadas, quando o acionamento for feito via teclado.
Basta descomentar a opção desejada e comentar as outras. O compilador se encarrega de gerar
o código Hex apropriado a escolha.
Falando um pouco da operação do sistema, foi usada a interrupção do Timer 0 para criar momentos de verificação (varredura) para o teclado, rotina de recepção RF, o estado das entradas do alarme, o acionamento de leds para violação, gerar tempo em contador específicos, etc.
A cada 130 micro segundos, ocorrerá esta verificação, de forma constante e automática. Mas, esta situação é alterada, quando é necessário usar o Timer 0 e 1 para gerar os tons de discagem (DTMF). Nesta ocasião, a rotina que era em interrupção, passa a ser feita momentaneamente, de forma normal, dentro da rotina de delay , na ocasião do envio da nota. Para orquestrar estas mudanças na rotina, usa-se flags, como o flag nomeado de ‘flag_gtom’, que controla a rotina de interrupção, ora para varredura , ora para geração de tons DTMF.
Note que os tempos dos tons são obtidos por tabelas e depois, são carregados nos Timers 0 e 1. Infelizmente, no período em que ocorre o envio de tom, a recepção do teclado fica lenta, ocorrendo este gargalo neste sistema.
Tanto a rotina de teclado como a de recepção do sinal RF, e outras, trabalham de forma sequêncial, executando uma ação, mas logo seguindo para outra, procurando perder o mínimo de tempo em cada atuação. Os flags guardam a próxima ação a ser realizada, até a finalização de uma requisição pelo usuário ou eventos internos. Assim, cada rotina especifica trabalha com vários flags, liberando ou travando eventos numa sequência lógica para realizar uma operação.
Do contrário, a rotina ficaria presa a um único evento, como por ex. receber um tx e decodificar enquanto as outras rotinas seriam prejudicadas. Na parte de execução em ‘Modo de Programação’, foi usado um registrador ‘Ger’ para gerenciar os passos de qual rotina está sendo usada. Assim, no passo ‘2’ é possível trocar a senha. No passo ‘3’, podemos programar números telefônicos nas memórias 1 a 4. No passo ‘4’, podemos testar esta gravação. No passo ‘5’, escolher o modo de discagem entre tom e pulso.
Para facilitar o entendimento, cada rotina tem seu nome especificado e função, e no final da rotina temos uma ‘saída da rotina’ (ex. sai_teclado, sai_tempor,etc).
Lembre-se que a rotina principal fica em constante ‘looping’, passando por cada rotina e seguindo para a próxima e retornando no início.
Acredito que poderia haver maneiras até mais eficientes para realizar este programa. Mas, como não sou programador profissional, mas sim, um simples hobista, tenho que me contentar com os resultados limitados atuais. Se você, caro leitor, for programador profissional e desejar sugerir soluções para as limitações do sistema, pode ter certeza que serão bem-vindas.

COMO PROGRAMAR CONTROLES E SENSORES SEM FIO

Você deverá inicialmente programar (aprender) os controles remotos e os sensores sem fio, antes de usar (certifique-se que sejam da família HT6P20B), por seguir os passos abaixo:
1) Aperte o botão ‘Prog’ na placa. Começará a piscar o led ‘Arm/Prog’ e será emitido 1 bip.
2) Aperte a tecla ‘1’ para controle ou ‘2’ para sensor e será ouvido 2 bips.
3) Aperte um botão do controle remoto, ou acione o sensor ( próximo a central, no máximo a 2 metros longe). Outro bip confirmará o aprendizado e o led ‘Arm/Prog’ se apagará.
Obs. Caso se demore em teclar ou apertar o controle/sensor, em 30 segundos o sistema saíra do modo de programação de controles e sensores, de forma automática.

COMO ENTRAR EM MODO DE PROGRAMAÇÃO VIA TECLADO
1) Digite a tecla ‘#’
2) Digite a Senha de 4 dígitos
3) O led ‘Arm/Prog’ começará a piscar, indicando que está em modo de programação.
4) Digite a operação desejada, ou digite ‘ * ’ para corrigir digitação errada ou ‘#’ para sair do modo de programação.

COMO TROCAR A SENHA
1) Entre em modo de programação, conforme acima.
2) Digite a tecla ‘0’ (trocar senha)
3) Digite a nova senha de 4 dígitos. Ouve-se 3 bips curtos.
4) Digite novamente a nova senha. Ouve-se 3 bips curtos e sai de modo de programação de forma automática.

Obs. Cuidado para não esquecer a senha. Se isto ocorrer, faça o seguinte:
1) Desligue a alimentação e a bateria.
2) Aperte o botão ‘Prog’ na placa, e mantenha ele apertado.
3) Em seguida, religue a alimentação.
4) O led ‘Arm/Prog’ piscará e ao soltar o botão se apagará, ouvindo um bip longo.
5) A senha retorna ao padrão (1234).
6) Escolha uma nova senha e grave conforme acima.
Nota Importante: Nesta operação, também serão apagados TODOS os controles e sensores, devendo ser reprogramados novamente.
Portanto, não perca a senha!!!

COMO PROGRAMAR NÚMEROS TELEFÔNICOS

O sistema permite gravar até 4 números telefônicos, com até 16 dígitos. Para gravar, proceda da seguinte forma:
1) Entre em modo de programação
2) Digite a tecla ‘1’ para a função ‘Programar números telefônicos’
3) Digite de ‘1’ a ‘4’ para escolher qual memória irá receber o número.
4) Digite na sequência, o número telefônico com operadora, DDD, e número do telefone.
5) Digite a tecla ‘#’ ao digitar todos os números e sair desta programação. Se o número tiver 16 dígitos, não precisará apertar esta tecla, pois sairá de forma automática.
6) Repita os passos ‘1’ a ‘5’ para todas as memórias .

COMO APAGAR UM NÚMERO TELEFÔNICO DE UMA MEMÓRIA

1) Entre em modo de programação.
2) Digite a tecla ‘1’ para função de ‘Programar número telefônico’.
3) Digite o número da memória a apagar (1 a 4).
4) Digite a tecla ‘#’ para apagar e sair de modo de programação.

COMO REALIZAR UM TESTE DE DISCAGEM DE UMA MEMÓRIA ESPECIFICA
1) Entre em modo de programação.
2) Digite a tecla ‘2’ para função ‘Discar para teste’.
3) Digite o número da memória a ser discada (1 a 4).
4) A discagem ocorrerá imediatamente, com o envio de sinal sonoro por 20 segundos.
5) Caso queira finalizar o teste antecipadamente, aperte a tecla ‘#’, causando o fim do teste e saindo do modo de programação.

COMO PROGRAMAR O MODO DE DISCAGEM (TOM OU PULSO)
1) Entre em modo de programação.
2) Digite a tecla ‘3’ para função ‘Modo de discagem’.
3) Digite a tecla ‘0’ para modo pulso e ‘1’ para modo tom (DTMF)
Obs. Este ajuste ficará gravado na Eeprom, mantendo-se mesmo
que seja desligado a bateria.

COMO LIGAR ALARME VIA TECLADO:
1) Para ligar o alarme via teclado, apenas deverá digitar a senha. Será ouvido 2 toques breves na sirene, indicando que foi ligado. Após o que, terá um período de temporização para sair do ambiente e fechar a porta, de 60 segundos. Ao terminar o período inicial de temporização, ocorrerá um outro toque de sirene, indicando que, se for aberto a porta ou outro sensor das zonas temporizadas, ocorrerá o disparo da sirene em 30 segundos.
2) Para desligar, basta digitar a senha novamente. No desligamento, se ouve um toque de sirene.
Obs. Durante o período de discagem, a senha deverá ser introduzida de forma lenta,
apertando-se uma tecla e soltando e esperando o bip antes de digitar a próxima.
O sistema não poderá ser armado (ligado) se um sensor de qualquer zona com fios estiver aberto. Caso tente ligar, se ouvirá 5 curtos toques de sirene.
Atenção: Certifique-se que a porta de acesso ao teclado seja ligado a um circuito com temporização.

COMO LIGAR ALARME VIA CONTROLE REMOTO
1) Os controles devem ter sido previamente aprendidos.
2) Aperte qualquer um dos botões para ligar. Será ouvido 3 toques de sirene.
3) Aperte qualquer um dos botões novamente para desligar. Será ouvido 1 toque de sirene.
Obs. Acionamentos via controle remoto não produz temporização em nenhuma zona.

COMO USAR A FUNÇÃO ‘PANICO’

1) Aperte qualquer botão do controle remoto, até a sirene disparar (5 segundos apertado). Solte o botão imediatamente. A sirene disparará pelo tempo máximo programado no ASM. No entanto, se o botão continuar apertado por mais 1 segundo após o disparo da sirene, ao soltar, desligará a sirene e encerrará a função pânico.
2) Para encerrar a função ‘Panico’, basta apertar novamente qualquer botão do controle remoto.

COMO APAGAR AS MEMÓRIAS DE VIOLAÇÃO DE ZONAS (LEDS Z1, Z2 E Z3)

Para apagar, basta digitar no teclado a senha. Na operação de ligar/desligar via teclado, já realiza a operação de limpeza da memória de violação.

COMO REALIZAR TESTES NOS SENSORES SEM NECESSITAR OLHAR O PAINEL DA CENTRAL DE ALARMES

1) Entre em modo de programação.
2) Digite a tecla ‘4’(Função de teste de sensores).
3) Será ouvido um toque breve de sirene anunciando este modo de teste.

Ao abrir/fechar um sensor com fio, tocará brevemente a sirene. Já nos sensores sem fio, somente tocará na abertura (envio do sinal RF). Após 40 segundos sem acionar algum sensor, sairá deste modo de teste automaticamente.

Segue abaixo, o esquema de montagem para sensores magnéticos, devendo todos serem ligados em série, um com outro.

Abaixo, podemos ver como podem ser ligados sensores infravermelhos, cujos contatos devem ficar em série e suas alimentações em paralelo.

Sugestão para uma caixa para a central:

Se desejar, poderá colocar em uma mesma zona, sensores de vários tipos, como por exemplo, um magnético em série com um infravermelho c/ fio, e outros. Sempre com seus contatos ligados em série. Lembrando apenas que os sensores sem fios, todos, sem exceção, pertencem unicamente a zona 3.

Também convém considerar um pouco sobre os sensores sem fio. Muitos executam uma transmissão a cada minuto apenas, mesmo que constantemente disparados. O objetivo é economizar energia e prolongar a vida da bateria. Alguns sensores infravermelhos tem um jumper interno que controla a sensibilidade do dispositivo. Estes estão sujeitos a falsos disparos ocasionados por cortinas, correntes de vento próximas a janelas, pequenos pássaros e animais,etc. Certifique-se de instalar longe de janelas, de fontes de calor e em locais que tenham animais. Visto que podem deixar de funcionar por descarregamento da bateria, não deverá ser o único tipo de sensor a ser usado.
Quanto a colocação da central, deverá ser, de preferencia, embutida na parede, com fios dentro de conduíte dentro da parede e não externos. A primeira coisa que um invasor fará será ‘arrancar’ os fios da central, para desativa-la. A sirene deverá ser montado em local alto, de difícil acesso, como dentro do telhado e não deverá ficar a vista.

Segue o arquivo ASM:

ALARME_3Z_ASM

Segue o arquivo HEX (compilado com opção de bloqueio de zonas disparadas e z1 e z3 com temporização):

ALARME_3Z_HEX

Nota: Lembrando que esta montagem é didática, sem ser feito teste de campo. Portanto, antes de montar em placa de circuito impresso esta central, monte em protoboard e verifique se ela atende as suas necessidades.

Manuais:
PIC16F628A
Sensor Infra

Informações úteis:
Como se proteger do crime
Cuidado! Podem roubar sua identidade
Proteja-se contra ladrões de carros
A policia: a esperança e o medo da população
O problema do crime tem solução?
Qual é o futuro da polícia?
Furto em lojas — quem paga?
Quem realmente governa o mundo?
“Um crime bárbaro”
O paradoxo da privacidade

Outros assuntos:
Aprenda a perdoar
Como fazer seu segundo casamento dar certo
Quando seu filho tem uma deficiência
O que fazer se você tem um problema de saude – Parte 1
Como parar de discutir
Como enfrentar o bullying sem ter de partir para a briga (animação)
Como acabar com a tática do silêncio
Como resolver problemas em seu casamento?
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?

Até o próximo artigo!!!

1

21 comments

  1. 0

    Oi Claudio tudo bem? Primeiro parabéns por disponibilizar um projeto desse, muito bom. Compilei o programa e o .HEX ficou com quase 9K, programei o pic 16f628 e funcionou normalmente, minha dúvida é como cabe um hex desse tamanho num pic 16f628 que tem 2K de flash? Desculpeminha ignorância, abraço.

    1. 0

      Olá José!
      Creio que você deve ter dito quase 9 k bits , ou 8kbits mais um pouco. Note que a memória do 628 é de 2 kbytes, sendo que 1 kbyte equivale a 1024 bytes vezes 8 bits, que é igual a 8192 bits. Esta confusão que muitas vezes fazemos é muito comum. Assim, lembre que kbits é diferente de kbytes.
      Claudio

      1. 0

        Verdade, eu não tinha me atentado aos multiplos…Agora ficou claro. Muito obrigado pela atenção.

  2. 0

    Claudio, sei da complexidade desse tipo de projeto mas será que futuramente seria possível uma versão em C?
    Montei esse é funciona bem, porem gostaria de entender como é gerado o DTMF e leitura de teclado e meu conhecimento de asm é muito pequeno. Deixo novamente meus agradecimentos por compartilhar seu conhecimento que está sendo de grande ajuda!

    1. 0

      Olá Silva45!
      O DTMF é gerado por meio dos timer 0 e timer . Cada um deles gera uma das frequências correspondente a tecla apertada (2 tons devem ser gerados). Em “ASM” já achei difícil acertar as frequências corretas e creio que em “C” deva ficar pior ainda, devido as linhas adicionais geradas pelo compilador. Quem sabe eu volte a tratar deste assunto no futuro, se chegar a alguma conclusão produtiva. Quanto ao teclado, o processo usa diodos para fazer uma lógica, permitindo que apenas 4 ports consiga ler 12 teclas. Quando tiver um tempo irei ver como ficaria em ‘C’.

      Cláudio

  3. 0

    Bom dia Claudio . como vai ? você faria uma adaptação
    para usar um chip gsm ao invés de usar uma linha telefônica ? seria para instalar numa casa de praia
    sem telefone .

    1. 0

      Olá Michael! Infelizmente, não poderei ajudar. Ainda não tenho ‘know_how’ de como fazer isto.
      Quem sabe no futuro…
      Cláudio

  4. 0

    lario boa tarde; preciso adquirir estes controles chaveirinho pois estou fasendo esta central.
    como eu preciso fazer os pedidos fora existe uma marca especifica que tem o ht6p,ou tenho que abrir um por um e verificar?aguardo

  5. 0

    bom dia lario: alguem te disse ter montado esta central?
    pois vou encarar o desafio e monta_la.vou procurar comprar este teclado pronto,se nao tenho que fazer_lo
    este layout do circuito voce nao tem pronto nao é?

    1. 0

      Olá José ! Até agora ela não foi testada na prática. Não tenho layout pois usei um teclado de telefone antigo.
      Cláudio

  6. 0

    de fato lario esta e uma central alarmatica completa,tem tudo que sistema deste porte nessesita.
    porem nem todos possui uma linha telefonica,neste caso esta linha telefonica poderá ser eliminada junto com o teclado nao pode ?ou poderá gerar algum conflito na central?fico aguardo

    1. 0

      Olá José! Necessita do sistema completo para funcionar. Agora , ligar ou não uma linha telefônica é opcional.
      Claudio

  7. 0

    Claudio tenho que falar que você é um gênio. Esse seu esquema da leitura das teclas do teclado, é fenomenal. Quebrei a cabeça durante duas horas para entender, e vi que corrigiu um erro que era ler o 1,5,9 por último como no seu projeto “fechadura elétrica com senha (code lock) sem display – com pic 12f675”, pois daí se o cara apertasse o 3 quando o programa estava naquela parte o número iria sair como 1, mas desse jeito, lendo antes o 1,5,9, daí se o cara apertar o 3 por exemplo, ele lê a sequencia do 1,5,9 e depois le a seguencia do 3,6,#, corrigindo o número e saindo o número 3. Perfeito. Nunca vi essa forma de leitura de teclado de 12 teclas em outro projeto sem ser os seus, então meus parabéns, e vou adotar esse método, pois economizamos de pinos do PIC pois seria uma matriz 4X3 ou seja usaríamos 7 pinos. Muito bom mesmo. Parabéns

    1. 0

      Olá Deivid! Agradeço seus comentários motivadores. Quanto a ser ‘gênio’, não é o meu caso. Tenho um dom dado por Deus de ter ‘persistência’ nos objetivos. Assim, os créditos são Dele.
      Cláudio

Comments are closed.