Sistema de Alarme Codificado com Arduino, Display 16×2 e Sensor de Vibração SW-420

Sistemas de segurança estão cada vez mais presentes em nosso cotidiano, são eles Alarmes, Cercas Elétricas, câmeras de monitoramento entre outras muitas tecnologias que estão em desenvolvimento para garantir a segurança de quem está disposto a investir nesses equipamentos. Neste tutorial vamos montar um sistema de monitoramento de segurança por alarme sonoro com desarme mediante senha, utilizando um Arduino UNO, um Sensor de Vibração SW-420 e um Display 16×2.

Montando o projeto

Para o desenvolvimento desse projeto será necessária uma placa de desenvolvimento Arduino Uno, onde ela será responsável por receber os sinais do Módulo Sensor de Vibração SW-420 e controlar o microcontrolador para o disparo sonoro com o Buzzer e do Led Vermelho 5mm quando o alarme for ativado.

Quando necessária a senha, o programa mapeará os botões pressionados no teclado e apresentará ao usuário através do display LCD. Para este protótipo o alarme sonoro é realizado por um Buzzer, mas para cada aplicação este dispositivo sonoro pode ser alterado, adaptando buzinas ou sirenes (nestes casos realizando os acionamentos por relé).

Componentes Utilizados:
Arduino Uno
Módulo Sensor de Vibração SW-420
Teclado Matricial 4×4
Display LCD 16×2 BackLight Azul
Buzzer
Resistor 480 ohms
Led Vermelho 5mm

A montagem do protótipo pode ser observada pela figura abaixo:








Inicialmente vamos ligar o display LCD aos pinos do Arduino conforme imagem acima, os pinos digitais de 2 ao 7 são de controle do LCD (demonstrados com fios de cor amarela), Alimentação 5V e GND são ligados em comum ao Arduino. O display também necessita de um potenciômetro de 10k para ajuste de contraste conforme demonstrado acima.

O teclado matricial deve ser conectado como demonstra a ilustração (fios de cor laranja), como se trata de apenas contatos, o teclado não necessita de alimentação.

O sensor de vibração é alimentado por 5V e o pino que envia o sinal D0 é conectado na entrada analógica A3 do Arduino. O Buzzer e LED são ligados respectivamente no pino 9 e A4, a saída de sinal para o Buzzer é modulada por PWM, por isso o pino 9 foi o escolhido por ser um pino com saída PWM no Arduino UNO.

Abaixo também temos na prática a montagem do protótipo:

O vídeo demonstrando o funcionamento desse projeto pode ser acessado pela  página no Instagram:
Laboratório dos Fundos
https://www.instagram.com/laboratorio_dosfundos/

Desenvolvendo o código

Após montagem do hardware, prosseguimos para o código onde receberá os sinais do sensor de vibração controlando assim o teclado matricial e display LCD.
O Código como pode ser observado abaixo, será carregado para o microcontrolador ATMEGA do Arduino:

Você pode consultar, baixar, modificar e compartilhar o código deste tutorial em nosso repositório do GitHub! E lá você encontra todos os códigos já publicados aqui no blog! Vamos compartilhar conhecimento!

Mergulhando no projeto

Software

Inicialmente iremos instalar a biblioteca KEYPAD, esta biblioteca pode ser encontrada facilmente na web para download. Já no sketch incluímos a biblioteca posteriormente instalada  e do LCD.

Logo após, são nomeados os pinos do LED, Buzzer, entrada de sinal e botão desativador. Variáveis do tipo ‘’int’’ são criadas para controle e recebimento de dados do sensor e vetores ‘’Byte’’ para mapeamento dos pinos do teclado byte pinosLinhas[], byte pinosColunas[] . Um vetor ‘’Char’’ criado para pré-definir a senha e outro para armazenar os dígitos no momento de alarme para comparação entre eles no programa, char teclas[4][4] indica os caracteres de cada tecla.

Uma variável de nome teclado1 é criada na biblioteca Keypad para armazenar o caractere pressionado no teclado. Essa série de definições e inclusões termina com o mapeamento dos pinos
utilizados no display LCD LiquidCrystal lcd ( 7, 6, 5, 4, 3, 2).

Função Setup

Na função setup iremos definir as portas onde conectados o Buzzer e LED de alarme como saídas digitais:

E os sinais do sensor de vibração e o botão desativador como entradas:

Em

inicia-se a comunicação com o display LCD e escreve na linha 1 do display a palavra “ALARME” com:

Função Loop

Alarme

A função Loop se inicia escrevendo no display a palavra OFF:

indicando que o alarme está no momento desativado. A variável char tecla_pressionada monitora e armazena as teclas pressionadas no teclado:

Caso a tecla ‘’#’’ for pressionada, o programa entra para realizar os comandos do bloco IF que ativando o alarme escrevendo ON no display.Neste estágio do programa, o sistema monitora o sensor de vibrações constantemente mas esta ação ainda pode ser revertida ao pressionar a tecla‘’*’’.

Enquanto a tecla ‘’*’’ não for pressionada ou o sensor de vibrações if (leitura_sensor == HIGH) não enviar o comando para o Arduino, o programa roda dentro do laço while:

No momento que o Arduino recebe o sinal HIGH do sensor, ele interpreta que uma vibração foi detectada e que o alarme deve ser disparado:

Com o alarme ativo o programa desce uma sequencia de sonorização e cai no  laço while:

que dispara o aviso sonoro do Buzzer intermitente. Para desativar o alarme e sair deste laço o programa tem duas opções, ou o botão desativador de emergência seja acionado levando a variável desliga_alarme para nível LOW ou por senha.

O botão desativador no nosso protótipo está diretamente ligado ao nível alto HIGH, deixando assim a opção de desativar o alarme somente por senha. Já com o alarme ativo e o aviso sonoro intermitente o programa e o display aguardam a senha correta ser digitada para a desativação do sistema. A senha foi definida inicialmente mas pode ser alterada de acordo com a
preferência do usuário em:

Senha

Se alguma tecla for pressionada if (tecla_pressionada), o programa armazena está tecla em:

O contador i++ auxilia até o preenchimento por completo da senha de 4 dígitos. Após o preenchimento da senha digitada por completo ele é comparado com a senha pré-definida:

O programa interpreta que a senha é correta quando está comparação acima seja verdadeira. Caso a comparação for verdadeira o alarme é desativado desabilitando o Buzzer, e escreve OK no display e por fim zera o contador i++ .

Caso a senha for esteja incorreta escreve no display :

e retorna o programa para o laço de alarme com o Buzzer emitindo som intermitente zerando também o contador i++ para uma nova tentativa de senha.

Hardware

Módulo Sensor de Vibração SW-420

O módulo SW-420 foi desenvolvido para detecção de vibrações, através do trimpot na PCI é possível ajustar a sua sensibilidade de acordo com sua aplicação.

Quando houverem vibrações na superfície onde instalado o sensor, um nível alto HIGH será aplicado no pino D0 no mesmo instante também ascenderá o LED verde na PCI sinalizando a captação de vibração. As aplicações para este tipo de sensor são inúmeras.

Pinagem:

– VCC: 3,3 – 5V

– GND: GND

– D0: Saída Digital

Teclado Matricial 4×4

O teclado matricial 4×4 como o nome diz é uma matriz de contatos que quando algum digito é pressionando o contato se fecha de um pino para outro. O esquema de contatos pode ser observado abaixo, linhas e colunas com 8 pinos. Exemplo:
Quando a tecla 1 é pressionada os pinos 1 e 5 se fecham (linha 1, Coluna 1).

Pinagem:

– 1 – Linha 1

– 2 – Linha 2

– 3 – Linha 3
isplay na posição (0,0)

– 4 – Linha 4

– 5 – Coluna 1

– 6 – Coluna 1

– 7 – Coluna 1

– 8 – Coluna 1

Display LCD 16×2 BackLight Azul

O Display LCD 16×2 possibilita e interação do programa com o usuário. As mensagens podem ser enviadas simultaneamente com o processamento no programa possibilitando assim o envio de dados, texto e sinais lidos nas entradas do microprocessador.
O LCD possui 16 colunas e 2 linhas com luz de fundo azul e escrita branca.

Confira também o nosso tutorial sobre o Módulo I2C, que ajuda bastante na conectividade do Display 16×2 com o Arduino!

Conclusão

Através deste protótipo podemos conhecer e controlar diversos tipos de componentes e módulos como o display LCD 16×2, teclado matricial 4×4, sensor de vibração e um Buzzer. Com esses componentes deixamos em aberto a vastas aplicações com o Arduino.O Sistema de monitoramento apresentado pode ser implementado com vários outros tipos de sensores, aumentando assim seu grau de segurança. Deixem suas sugestões e perguntas, compartilhe conhecimento!

Referências

Datasheet Display LCD 16×2

Avatar
Sobre Pedro Pereira 8 artigos
Engenheiro Eletricista, Técnico em Eletrônica e Entusiasta na área de Sistemas Embarcados. https://www.instagram.com/laboratorio_dosfundos/

4 Comentários

    • Olá Ariel.

      A ideia de poder trocar a senha é bastante interessante mesmo. Uma abordagem para implementar tal função, seria primeiramente definir qual comando de teclado
      iria iniciar o comando de troca de senha, poderíamos por exemplo usar uma tecla de letra, teríamos quatro opções: ‘A’, ‘B’, ‘C’ ou ‘D’, já que as teclas ‘*’ e ‘#’ já são usadas em outros contextos dentro do projeto, e utilizá-las novamente poderia ficar confuso.

      Apoś definir o comando que inicia a função de troca de senha, temos que definir em qual contexto seria permitido trocar a senha, acredito que o ideal seria permitir somente quando o alarme estiver desativado.

      Após as definições acima, já começamos a ter uma ideia de como implementar esta função de troca de senha:

      A função loop inicia escrevendo no display que o alarme está off, a variavel tecla_pressionada monitora qual o comando/tecla que o usuário vai pressionar,
      se ele pressionar a techa ‘#’ o alarme é iniciado, mas aqui a gente pode adicionar um outra condição, vamos supor que você escolheu a letra ‘A’ do teclado para iniciar
      a funcionalidade de troca de senha:

      if(techa_pressionada == ‘A’){
      // chama a sua funcao de troca de senha
      trocarSenhar();
      }

      Agora ficou fácil né? A sua função trocarSenha deve escrever alguma frase no display solicitando a senha antiga, depois validar a senha, se a senha estiver correta, escrever uma frase solicitando a nova senha, capturar o novo valor de senha digitado e trocar o valor da variável senha (inicializada na linha 12 do código) pelo valor digitado pelo usuário.
      Se ao validar da senha antiga, o valor estiver incorreto, basta escrever no display: “Senha incorreta”, e depois solicitar a senha novamente.

      Faça um fork do nosso projeto lá no Github e implemente esta nova função e compartilhe esta nova funcionalidade com a comunidade 🙂

      Abraço!

    • Olá Arthur tudo bem? Esse é um projeto didático, nós não o fizemos sem conectá-lo em um PC, mas para fazê-lo sem o PC, você poderia usar como fonte de energia uma bateria de 9V (ou talvez uma com mais de 9V) dessa vendidas em farmácia, e isso exigiria algumas adaptações, olhe o nosso projeto do veículo autônomo para ter uma base de como fazer, ou você ainda poderia usar também uma fonte 9V/12V (ou talvez com mais de 12V), ai neste caso você iria necessitar de um lugar com energia elétrica, e conectaria a fonte no Arduino e na tomada.
      Abraço!

Deixe uma resposta

O seu endereço de email não será publicado.


*