Como hacer un sencillo sistema de alarma arduino
Detectar el movimiento, a continuación, asustar a los diablos de un intruso la máxima sonidos de alarma de tono y luces intermitentes. Hace que la diversión de sonido? Claro que lo hace. Ese es el objetivo del proyecto Arduino de hoy, apto para principiantes. Vamos a estar escribiendo desde cero y prueba a medida que avanzamos por lo que se espera que puedan hacerse una idea de la forma en que todo se hace en lugar de la simple instalación de algo que ya he hecho.
Responsabilidad, esto no va a proteger realmente su casa. Eso podría dar a su hermana una desagradable sorpresa cuando ella se cuela en su habitación sin embargo.
Necesitarás:
- un Arduino
- Ultrasónica “ping” del sensor, estoy usando HC-SR04 Un PIR sería mejor, pero esas son caros. Un sensor de ping puede ser colocado subrepticiamente en una puerta y todavía sirven para la misma función básica, y es sólo $ 5
- Un zumbador piezo
- tira de luz LED, con el mismo cableado que usamos de nuevo en este proyecto.
Como usted está cableando este proyecto, no quite todo cada vez - sólo seguir edificio en el último bloque. En el momento de llegar a “Codificación El sistema de alarma” sección, usted debe tener todas las partes y piezas cableados, mirando algo como esto:
Luces parpadeantes
Utilice el diagrama de cableado de este proyecto para conectar su LED en forma de banda no cambie los pasadores, ya que necesitamos salida PWM. Utilizar este código para probar rápidamente su cableado. Si todo va bien, usted debe tener presente:Construya su propio alumbrado dinámico ambiente durante un Media CenterConstruya su propio alumbrado dinámico ambiente durante un Media CenterSi ves un montón de películas en su PC o centro de medios, estoy seguro de que ha enfrentado el dilema de iluminación es lo que apagar completamente todas las luces? Cómo los tenéis a todo volumen? O...Lee mas
sensor de distancia
En el módulo SR04, encontrará 4 pines. VCC y GND vaya al carril de + 5V y tierra respectivamente- TRIGONOMETRÍA es el pin se utiliza para enviar una señal de sonda, poner esto en el pin 6 ECO se utiliza para leer la señal de vuelta (y por lo tanto calcular la distancia) - poner esto en 7.
Para hacer las cosas muy simple, hay una biblioteca que podemos utilizar llamada NewPing. Descargar y colocar en sus de Arduino Biblioteca carpeta y reiniciar el IDE antes de continuar. Prueba usar este código- abrir el monitor serie y asegúrese de que la velocidad se establece en 115.200 baudios. Con un poco de suerte, debería ver algunas mediciones de la distancia que se envían de nuevo a usted en una muy alta velocidad. Usted puede encontrar una variación de 1 ó 2 centímetros, pero esto está muy bien. Pruebe a ejecutar la mano delante del sensor, moviéndolo hacia arriba y hacia abajo para observar las lecturas cambiantes.
El código debe ser bastante simple de entender. Hay unos pocos declaración de pasadores correspondientes al inicio, entre ellos una distancia máxima - esto puede variar de acuerdo con el sensor exacto que tiene, pero siempre y cuando usted es capaz de obtener menos de 1 lecturas del medidor con precisión, que debe estar bien.
En el bucle de esta aplicación de prueba, se utiliza el silbido() función para enviar un ping del sonar, volviendo un valor en milisegundos de tiempo que tomó para el valor a devolver. Para dar sentido a esto, utilizamos las bibliotecas construidas en NewPing constante de US_ROUNDTRIP_CM, que define el número de microsegundos que se tarda en recorrer un solo centímetro. También hay un retardo de 50 ms entre pings para evitar sobrecargar el sensor.
piezoalarma
El sensor de cristal piezoeléctrico es un timbre simple y barato, y podemos usar un pin PWM 3 para hacer diferentes tonos. Conecte un cable a la clavija 3, uno a tierra Raíl - no importa cuál.
Use este código para probar.
La única manera de matar la alarma en lugar desagradable y fuerte es para tirar de los tapones. El código es un poco más complejo de explicar, pero implica el uso de ondas sinusoidales para generar un sonido distintivo. Ajustar los números para jugar con diferentes tonos.
El sistema de alarma de codificación
Ahora que tenemos todas las piezas de este rompecabezas, vamos a combinarlos.
Seguir adelante y hacer un nuevo boceto, Alarma. Para empezar, la combinación de todas las variables y las definiciones que hemos pin en los ejemplos de prueba hasta ahora.
#incluir // SELECT que pines PWM-capaz se van a utilizar.#definir RED_PIN 10#definir GREEN_PIN 11#definir BLUE_PIN 9#definir TRIGGER_PIN 6 // pin Arduino atado para desencadenar pin en el sensor ultrasónico.#definir ECHO_PIN 7 // pin Arduino atado a eco pin en el sensor ultrasónico.#definir MAX_DISTANCE 100 // La distancia máxima que queremos hacer ping para (en centímetros).#definir ALARMA 3flotador SINVAL-int toneVal-
Comienza escribiendo un básico preparar() función - que sólo nos ocuparemos de las luces por ahora. He añadido un retraso de 5 segundos antes de que se inicie el bucle principal para darnos un poco de tiempo para salir del camino si es necesario.
vacío preparar(){// set pinModes para RGB tirapinMode(RED_PIN,SALIDA)-pinMode(BLUE_PIN,SALIDA)-pinMode(GREEN_PIN,SALIDA)-// luces de restablecimientoanalogWrite(RED_PIN,0)-analogWrite(BLUE_PIN,0)-analogWrite(RED_PIN,0)-retrasar(5000)-}
Vamos a utilizar una función de ayuda que nos permite escribir rápidamente un solo valor RGB a las luces.
Vídeo: Video alarma Arduino
// función auxiliar que nos permite enviar un color en un comandovacío color (no firmado carbonizarse rojo, no firmado carbonizarse verde, no firmado carbonizarse azul) // la función de generación de color{analogWrite(RED_PIN, rojo)-analogWrite(BLUE_PIN, azul)-analogWrite(GREEN_PIN, verde)-}
Por último, nuestro bucle por ahora se va a consistir en un simple destello de color entre rojo y amarillo (o, lo que usted quiere que su alarma para que sea - sólo cambiar los valores RGB).
vacío lazo(){color(255,0,0)- //rojoretrasar(100)-color(255,255,0)- //amarilloretrasar(100)-}
Sube y probar que, para asegurarse de que está en el camino correcto.
Ahora, vamos a integrar el sensor de distancia para activar las luces sólo cuando algo viene dentro de, digamos, 50 cm (un poco menos que el ancho de un marco de puerta). Ya hemos definido las clavijas correctas y importamos la biblioteca, así que antes de su preparar() función de añadir la siguiente línea a instanciarlo:
NewPing sonar(TRIGGER_PIN, ECHO_PIN, DISTANCIA MÁXIMA)- // configura NewPing de pasadores y la distancia máxima.
Debajo de eso, añadir una variable para almacenar el estado de la alarma se activa o no, por defecto a falso, por supuesto.
booleano desencadenada = falso-
Añadir una línea a la preparar() función de lo que puede supervisar la salida en serie y depuración.
De serie.empezar(115200)- // Abrir monitor serie a 115200 baudios para ver resultados de ping.
A continuación, vamos a cambiar el nombre del bucle de corriente alarma() - esto es lo que se llama si la alarma se ha disparado.
vacío alarma(){color(255,0,0)- //rojoretrasar(100)-color(255,255,0)- // yelowretrasar(100)-}
Ahora crear una nueva lazo() función, una en la que buscamos a un nuevo ping, leemos los resultados, y activar la alarma si se detecta algo dentro de la gama metros.
vacío lazo(){Si(desencadenada == cierto){alarma()-}más{retrasar(50)-// Esperar 50 ms entre pings (alrededor de 20 pings / seg). 29ms de retardo debe ser el más corto entre los pings.no firmado int nos = sonar.silbido()- // Enviar ping, obtener el tiempo de ping en microsegundos (US).no firmado int distancia = nos / US_ROUNDTRIP_CM-De serie.println(distancia)-Si(distancia lt; 100){desencadenada = cierto-}}}
Voy a explicar brevemente el código:
- Comience por comprobar para ver si la alarma se ha disparado, y si es así, disparar la función de alarma (solo parpadear las luces en el momento).
- Si no está activa todavía, consiga la lectura actual del sensor.
- Si el sensor está leyendo lt; 100 cm, algo que ha rellenado el haz (ajustar este valor si se trata de activación demasiado pronto para usted, obviamente).
Darle un periodo de prueba ahora, antes de añadir el zumbador piezo molesto.
¿Trabajando? Estupendo. Ahora vamos a añadir que el zumbador posterior. Añadir pinMode al preparar() rutina.
pinMode(ALARMA, SALIDA)-
A continuación, añadir el bucle piezo zumbador a la función de alarma ():
para (int x=0- xlt;180- x++) {// convertir grados a radianes y luego obtener un valor pecadoSINVAL = (pecado(x*(3.1412/180)))-// generar una frecuencia con el valor del senotoneVal = 2000+(int(SINVAL*1000))-tono(ALARMA, toneVal)-}
Si intenta compilar en este punto, que va a encontrarse con un error - He dejado esto en forma deliberada para que pueda ver algunos problemas comunes. En este caso, tanto el NewPing y la biblioteca de tono estándar utilizan las mismas interrupciones - que básicamente son contradictorios, y no hay mucho que puede hacer para solucionarlo. Oh querido.
No se preocupe sin embargo. Es un problema común, y alguien tiene una solución ya - descargar y agregar este NewTone a la carpeta Bibliotecas de Arduino. Ajustar el comienzo de su programa para incluir lo siguiente:
#incluir
Y ajustar la línea:
tono(ALARMA, toneVal)-
a
NewTone(ALARMA, toneVal)-
en lugar.
Vídeo: Sistema de alarma a distancia con arduino UNO
Eso es. Establecer la alarma en la puerta de su habitación para la siguiente desafortunado aspirante a ladrón.
O bien, un perro tonto, que parecía completamente imperturbable por la alarma.
Tiene problemas con el código? Aquí está la aplicación completa. Si usted está recibiendo errores aleatorios, tratar pegándolos a continuación y voy a ver si puedo ayudar.