Como fazer um sistema de alarme arduino simples

Detectar movimento, então assustaria de um intruso com uma elevada sons de alarme inclinados e luzes piscando. Será que a diversão de som? Claro que sim. Esse é o objetivo do projeto Arduino de hoje, adequado para iniciantes. Nós vamos estar escrevendo completamente do zero e testar à medida que avançamos para que você possa esperamos ter uma idéia de como tudo é que está sendo feito em vez de simplesmente instalar algo que eu já fiz.

Disclaimer: isso não vai realmente proteger sua casa. isto poderia dar a sua irmã um choque desagradável quando ela foge para seu quarto embora.

Você precisará:

  • um Arduino
  • Ultrasonic “ping” sensor, eu estou usando HC-SR04 A PIR seria melhor, mas aqueles são caros. Um sensor de ping pode ser colocado secretamente em uma porta e ainda servem o mesmo trabalho básico, e é apenas $ 5
  • A campainha piezo
  • Fita LED, com a mesma fiação usamos volta neste projecto.

Como você está fiação até este projecto, não retire tudo de cada vez - apenas manter edifício no último bloco. No momento em que você começa a “Codificação O sistema de alarme”, você deve ter todos os pedaços com fio para cima, olhando algo como isto:

terminou-fiação

Luzes piscando

Utilizar o esquema de ligações a partir deste projeto para ligar o LED strip não mudam os pinos, como precisamos de saída PWM. Usar este código para testar rapidamente sua fiação. Se tudo correr bem, você deve ter o seguinte:Construa seu próprio Iluminação Dinâmica ambiente por um Media CenterConstrua seu próprio Iluminação Dinâmica ambiente por um Media CenterSe você ver um monte de filmes em seu PC ou centro de mídia, eu tenho certeza que você já enfrentou a iluminação dilemma- você completamente desligar todas as luzes? Você mantê-los em plena explosão? Ou...consulte Mais informação

levou-rgb-teste

Sensor de Distância

No módulo SR04, você encontrará 4 pinos. VCC e GND ir para + 5V e chão respectivamente- TRIG é o pino usado para enviar um sinal de sonar, colocar isso no pino 6 ECO é usado para ler o sinal de volta (e, portanto, calcular a distância) - colocar isso no dia 7.

Video: Alarme com Arduino e sensor de movimentos PIR

SR04

Para tornar as coisas incrivelmente simples, há uma biblioteca podemos usar chamada NewPing. Faça o download e colocar em seu Arduino de Biblioteca pasta e reiniciar o IDE antes de continuar. Teste usando este Código- abrir o monitor serial e certifique-se a velocidade está definida para 115200 baud. Com alguma sorte, você deve ver algumas medições de distância a ser enviar de volta para você em um muito de alta velocidade. Você pode encontrar uma variação de 1 ou 2 centímetros, mas isso é bom. Tente executar a mão na frente do sensor, movendo-o para cima e para baixo para observar as leituras em mudança.

ping-produção

O código deve ser bastante simples de entender. Há uma declaração de pinos relevantes no início, incluindo uma distância máxima poucos - pode variar de acordo com o sensor exato que você tem, mas contanto que você é capaz de obter a menos de 1 leituras do medidor com precisão, você deve ser fino.

No circuito deste aplicativo de teste, usamos o pingue () função para enviar um ping sonar, recebendo de volta um valor em milissegundos de quanto tempo levou para o valor para retornar. Para dar sentido a isso, usamos as bibliotecas NewPing construído em constante US_ROUNDTRIP_CM, que define quantas microssegundos que leva para ir de um único centímetro. Há também um atraso de 50 ms entre pings para evitar sobrecarregar o sensor.

Alarme piezo

O sensor Piezo cristal é um sinal sonoro simples e barato, e podemos usar um pino PWM 3 para tornar os tons diferentes. Conecte um cabo ao pino 3, um para a terra ferroviário - não importa qual.

Utilize este código para testar.

A única maneira de matar o alarme em vez desagradável e forte é puxar os plugues. O código é um pouco complexo para explicar, mas envolve o uso de ondas senoidais para gerar um som característico. Ajustar os números para jogar com diferentes tons.

Codificação O sistema de alarme

Agora que temos todas as peças deste puzzle, vamos combiná-los juntos.

Vá em frente e fazer um novo esboço, chamado Alarme. Comece pela combinação de todas as variáveis ​​e definições dos pinos Nós nos exemplos de teste até agora.

#incluir // Seleciona quais pinos PWM com capacidade estão a ser utilizados.#definir RED_PIN 10#definir GREEN_PIN 11#definir BLUE_PIN 9#definir TRIGGER_PIN 6 // Arduino pino amarrado ao pino do gatilho sobre o sensor ultra-sónico.#definir ECHO_PIN 7 // Arduino pin amarrado a ecoar pinos no sensor de ultra-som.#definir MAX_DISTANCE 100 // A distância máxima que queremos fazer o ping for (em centímetros).#definir ALARME 3flutuador Sinval-int toneVal-

Comece escrevendo um básica configuração() função - vamos apenas lidar com as luzes para agora. Eu adicionei um atraso de 5 segundos antes do loop principal é iniciado para nos dar algum tempo para sair do caminho, se necessário.

vazio configuração(){// Conjunto pinModes para tira RGBpinMode(RED_PIN,SAÍDA)-pinMode(BLUE_PIN,SAÍDA)-pinMode(GREEN_PIN,SAÍDA)-// luzes de resetanalogWrite(RED_PIN,0)-analogWrite(BLUE_PIN,0)-analogWrite(RED_PIN,0)-demora(5000)-}

Vamos usar uma função auxiliar que nos permite escrever rapidamente um único valor RGB para as luzes.

// função auxiliar nos permite enviar uma cor em um comandovazio cor (não assinado Caracteres vermelho, não assinado Caracteres verde, não assinado Caracteres azul) // a função de geração de cor{analogWrite(RED_PIN, vermelho)-analogWrite(BLUE_PIN, azul)-analogWrite(GREEN_PIN, verde)-}

Finalmente, o nosso laço por agora vai consistir de um simples piscar de cor entre vermelho e amarelo (ou, o que você quiser que o seu alarme para ser - basta alterar os valores RGB).

vazio laço(){cor(255,0,0)- //vermelhodemora(100)-cor(255,255,0)- //amarelodemora(100)-}

Upload e testar se a garantir que você está no caminho certo.



Agora, vamos integrar o sensor de distância para acionar essas luzes apenas quando algo vem dentro de, digamos, 50 cm (apenas menos do que a largura de uma moldura da porta). Nós já definiu os pinos certos e importou a biblioteca, por isso antes de sua configuração() função adicione a seguinte linha para instanciar-lo:

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE)- // configuração NewPing de pinos e uma distância máxima.

Debaixo disso, adicione uma variável para armazenar o estado do alarme ser acionado ou não, falta de falsa, é claro.

boolean desencadeada = falso-

Adicionar uma linha ao configuração() função para que possamos monitorar a saída em série e de depuração.

Serial.início(115200)- // Abre monitor serial no 115200 de transmissão para ver os resultados de ping. 

Em seguida, vamos mudar o nome do loop de corrente para alarme() - este é o que é vai ser chamado se o alarme foi acionado.

vazio alarme(){cor(255,0,0)- //vermelhodemora(100)-cor(255,255,0)- // yelowdemora(100)-}

Agora crie uma nova ciclo () função, aquela em que buscar um novo Ping, ler os resultados, e acionar o alarme se algo for detectado dentro do intervalo de metro.

vazio laço(){E se(desencadeado == verdade){alarme()-}outro{demora(50)-// Espera 50ms entre sibilos (cerca de 20 sibilos / seg). 29ms deve ser o menor atraso entre sibilos.não assinado int nos = sonar.sibilo()- // Enviar Ping, obter tempo de ping em microssegundos (EUA).não assinado int distância = nos / US_ROUNDTRIP_CM-Serial.println(distância)-E se(distância lt; 100){desencadeado = verdade-}}}

Deixe-me explicar o código brevemente:

  • Comece por verificar para ver se o alarme foi acionado e, em caso afirmativo, disparar a função de alarme (apenas piscando as luzes no momento).
  • Se ele não está ainda disparado, começa a leitura atual do sensor.
  • Se o sensor for lendo lt; 100 cm, algo tem acolchoado o feixe (ajustar esse valor se ele está provocando muito cedo para você, obviamente).

Dê-lhe um ensaio agora, antes de adicionar o buzzer piezo irritante.

Trabalhando? Ótimo. Agora vamos acrescentar que buzzer volta. Adicionar pinMode ao configuração() rotina.

pinMode(ALARME, SAÍDA)-

Em seguida, adicione o loop piezo buzzer para a função de alarme ():

para (int X=0- Xlt;180- X++) {// converter graus em radianos, em seguida, obter o valor pecadoSinval = (pecado(X*(3,1412/180)))-// gerar uma frequência a partir do valor pecadotoneVal = 2000+(int(Sinval*1000))-tom(ALARME, toneVal)-}

Se você tentar compilar neste momento, você vai se deparar com um erro - Deixei isso em deliberadamente assim você pode ver alguns problemas comuns. Neste caso, tanto o NewPing e biblioteca tom padrão usar as mesmas interrupções - eles são conflitantes, basicamente, e não há muita coisa que você pode fazer para corrigi-lo. Oh céus.

Sem preocupações embora. É um problema comum, e alguém tem uma solução já - download e adicione Newtone para a pasta Arduino Bibliotecas. Ajuste o início do seu programa para incluir o seguinte:

#incluir 

E ajustar a linha:

Video: Sistema de alarme com arduino

tom(ALARME, toneVal)-

para

Video: Alarme residencial com Arduino. Envio de email com

Newtone(ALARME, toneVal)-

em vez de.

É isso aí. Definir o alarme até à porta do seu quarto para a próxima infeliz teria de ser ladrão.

Ou, um cão Dunga, que parecia completamente imperturbável pelo alarme.

Tendo problemas com o código? Aqui é o aplicativo completo. Se você estiver recebendo erros aleatórios, tente colá-los abaixo e eu vou ver se posso ajudar.


Artigos relacionados