Paso 6: La unidad de Control
La unidad de control consta de un Arduino y dos escudos apilados como sigue;
- Arduino Uno R3 (no clon). http://proto-PIC.co.uk/Arduino-uno/
- Se utiliza para controlar y sincronizar efectos
- Adafruit Waveshield v1.1. https://www.Adafruit.com/products/94
- Esto permite la reproducción de audio utilizando PWM de la ONU ejecutando en la biblioteca de wave Adafruit, WaveHC.h y WaveUtil.h. Detalles aquí; https://Learn.Adafruit.com/Adafruit-Wave-Shield-audio-Shield-for-Arduino
- Adafruit Proto Shield v0.5. https://www.Adafruit.com/products/51
- Esto proporciona 1W de amplificación de audio.
Como mencionado en la primera página, pero será recapitular aquí. Cuando el sistema está inactivo en es estado quieto el ultra brillante LED verde pulso 'amenazantes', esto se logra a través de la modulación controlada de la señal PWM se alimenta al transistor driver que T2 conectado al pin 6 en el Arduino a través de un resistor de 10K. El colector de T2 hunde la corriente de carga de los 5 Leds verdes conectados en paralelo.
Durante la detección de movimiento, la señal de la PIR se pasa al pin analógico A0. Esto se hizo como quería probar unos sensores PIR y leyendo las hojas de datos respectivas me sorprendió aprender que algunas salidas del dispositivo no necesariamente swing el riel de suministro completo. Por lo tanto para salvar a mi tener que añadir cualquier otra electrónica de acondicionamiento de señales conectado la salida del PIR a una entrada analógica para sondear potencialmente un nivel si es necesario. Sucede que el PIR, me conformé con fue una compra de Ebay barata que confiablemente el trabajo y utiliza un colector abierto salida local que tira para arriba. En este caso A0 se configura como una entrada digital y funciona bien.
Software en la ONU se ha escrito para buscar más de un gatillo (es realmente variable de usuario) en cualquier período de tiempo determinado para no producen falsas alarmas. He encontrado 2 disparadores 'DETECTION_COUNTS_MAX' en un período de 10 segundos 'DETECTION_WINDOW_TIMER_VALUE_MS' fue suficiente para dejar de molestar a los vecinos (si miras cerca de la ventana de Bahía en el video que me puede ver frenéticamente agitando para fijar lo apagado). Una máquina de estado basada en casos se utiliza para coger el borde de este evento.
Una vez que se hace una detección de movimiento válido el programa enciende el LED verde completo (de lo contrario interrupciones necesitarían para ejecutar como un proceso simultáneo y yo sospecho que la librería Adafruit Wave necesita acceso sin restricciones a las interrupciones para controlar la generación de sonido), que el código sea más sencillo.
Se producen los ojos del mal y el audio se reproduce. La ruta de Audio esté hacia fuera a través de un relé durante el estado inactivo como encontré en ruido de desarrollo desde el verde LED PWM acoplamiento al audio y causando un notable 'zumbido'.
La pista de audio es una colección de pistas más pequeños ensartados y jugó de forma secuencial. Para hacer la vida más fácil (solo un simple secuencial obtener de la tarjeta flash) me imaginativamente llamado pistas 1th1.wav, 2sc1.wav, 3fs1.wav, 4cd1.wav, 5el1.wav y 6ew1.wav y copiar en una sola vez a la tarjeta de memoria asegurando que fueron colocados en secuencia.
Para sincronizar el cambio de la Calavera de Leds de azul a rojo (esto sucede en el punto de la pista donde se produce la risa y 'saludo' es hablado justo después de la puerta chirriante), reviso para ver cuando pista '4cd1.wav' está completo y luego energizar el relé para cambiar a LED rojos.
Una vez que la pista de audio está completa todo se restablece y el sistema cae de nuevo al estado quieto de monitoreo.
Código de la unidad de control se ha adjuntado a continuación junto con los archivos de audio que utiliza.