Susto trick-or-treat con una caja acústica activa con el movimiento de bricolaje

Es esa época del año otra vez cuando se considera socialmente aceptable para aterrorizar a los niños pequeños y darles dulces. Oh Alegría. Estoy aquí para hacer su trabajo más fácil, mostrando cómo hacer una sencilla caja de resonancia Frambuesa Pi de Halloween de detección de movimiento. He aquí una demostración:

Esto es lo que necesitará

Probablemente, la única parte que no lo tiene es el sensor de movimiento, una parte pequeña y de bajo costo que debe ser capaz de encontrar en su microcentro local o Maplin.

  • Frambuesa Pi (cualquier modelo puede servir).
  • sensor de movimiento (~ $ 3).
  • Cables de montaje.
  • altavoces con conexión de cable (la mayoría de los altavoces Bluetooth tendrán la opción de utilizar la línea de entrada).
  • cable estéreo de 3,5 mm, de varón a varón.

Una vez que haya terminado, es posible que desee añadir un poco efectos de iluminación sincronizados también, pero en este tutorial vamos a estar cubriendo solamente los sonidos poco de miedo!Cómo sincronizar Inicio luces y música para HalloweenCómo sincronizar Inicio luces y música para HalloweenYa sea que organice una fiesta de Halloween o desea que la casa embrujada más fresco en el barrio, por lo que las luces parpadean en el tiempo a la música y efectos de sonido es esencial.Lee mas

Configuración

Estamos utilizando Raspbian Jessie Lite y Python 2.7, pero cualquier distribución de Linux que se ejecuta en su pi debe estar bien. Lo he dejado en el nombre de host estándar “raspberrypi.local”, así que comience ingresando en forma remota a través de SSH (abrir una ventana de terminal, si estás en Mac. Aquí está cómo hacer lo mismo en Windows) - o si usted ha optado uso de un Raspbian completa con interfaz gráfica de usuario de escritorio, puede saltarse a la actualización.

ssh [email protected](introducir frambuesa como la contraseña)sudo apt-get actualizarsudo apt-get instalar python-pipsudo pepita instalar gpiozero

Esto instala una biblioteca simple para trabajar con los pines GPIO en Python con muchos tipos de sensores y botones incorporados. De cable hasta el sensor con el pasador de señal en GPIO4, el VCC conectado a 5V y GND conectado a GND. Esto puede variar de acuerdo a su modelo exacto, por lo confirme con un diagrama de pines.

Diagrama GPIO Pi de frambuesa
Crédito de la imagen: raspberrypi.org

Amablemente, mi caso Pi 2 de Pimoroni tiene un diagrama de pines grabado con láser directamente sobre ella.

Caso Frambuesa Pi etiquetada

Ahora vamos a hacer nuestro script de detección de movimiento.

nano motion.py

Pegar en:

de gpiozero importar MotionSensorpir = Sensor de movimiento(4)mientras Cierto:Si pir.motion_detected:impresión("Detección de movimiento!")más:impresión ("ningún movimiento")

Hit CTRL-X entonces Y para guardar y salir, a continuación, ejecutar con:

motion.py pitón

Debería ver el mensaje “sin movimiento” repetida en la pantalla hasta que hace señas con la mano delante del sensor, cuando va a quedarse en el “Movimiento Detectado!”

Movimiento detectado en el terminal

Si el mensaje no cambia en absoluto, que ha atado con alambre para arriba equivocado.

Si usted está interesado en aprender más acerca de esta biblioteca simple GPIOZero, echar un vistazo a este fantástico cheatsheet.

sonido jugar

Conectar hasta que el altavoz portátil y asegúrese de que es accionado si necesita ser. Vamos a utilizar el pygame biblioteca para reproducir sonidos, así que adelante e instalarlo:

sudo apt-get instalar python-pygame

En primer lugar, necesitamos un archivo de sonido para reproducir. Si estás haciendo esto desde dentro del entorno de escritorio, y luego seguir adelante y descargar una WAV o OGG archivo desde algún lugar (me encontré con una buena selección de sonidos libres de Halloween aquí), y lo puso en su directorio personal. Yo te sugeriría que la disminución de resolución primera y la conversión a un formato OGG pequeña de todos modos.

Si se conecta de forma remota y sólo utilizando la línea de comandos, tenemos un poco más de dificultad con algunos sitios, ya que la wget comando no puede agarrar el archivo real. En cambio, podemos descargarlo localmente a nuestro escritorio y utilizar el SCP comando (Secure Copy) para copiar sobre la línea de comandos. Usted puede aprender más sobre SCP aquí, pero por ahora, abrir una nueva pestaña Terminal y escriba:

SCP thunder.ogg [email protected]:

Cambiar el nombre de thunder.ogg según el caso, pero no se olvide que la última : (El comando completará sin ella, pero no va a hacer lo que nosotros queremos que haga). Por defecto, esta transferirá el archivo en el directorio personal del usuario Pi.

Ahora vamos a modificar el guión para reproducir un sonido. Para empezar, la importación de algunos de los nuevos módulos:

importar pygame.mezcladorde pygame.mezclador importar Sonar

A continuación, sólo después de las declaraciones de importación existentes, vamos a rizar el mismo sonido una y otra con fines de prueba. Deje el resto de su código de detección de movimiento que es por ahora - simplemente no funcionará, ya que tendremos que aguantar en este bucle de sonido de juego para siempre.

pygame.en eso()pygame.mezclador.en eso()#load un archivo de sonido, en el directorio principal del usuario Pi (no mp3)trueno = pygame.mezclador.Sonar("/home/pi/thunder.ogg")mientras Cierto:trueno.jugar()dormir(10)trueno.detener()

Tenga en cuenta que cuando originalmente intentado este proceso, el sonido se negó a jugar y acaba de hacer clic en su lugar. El tamaño del archivo o la tasa de bits fue el culpable: era de 24 bits y más de 5 MB para un segundo clip 15. Descamada lo que reduce a 16 bits utilizando el convertidor he vinculado a por encima de todo lo hecho funcionar muy bien, y el tamaño fue reducido a sólo 260KB!

Si usted nota un silbido desagradable de los altavoces cuando su aplicación se está ejecutando Python, pero no de lo contrario, escriba:

sudo nano /boot/config.txt

Y añadir esta línea al final:

disable_audio_dither=1

Reiniciar para que los cambios surtan efecto. O no se moleste, ya que tipo de sonaba como lluvia para mí de todos modos.

Por último, vamos a modificar el bucle principal de movimiento de cheques para reproducir el sonido cuando se detecta movimiento. Usaremos un retardo de 15 segundos para que todo el bucle se puede jugar, y para actuar como un amortiguador para el correo no deseado cuando hay mucho movimiento sin parar.

mientras Cierto:Si pir.motion_detected:impresión("Detección de movimiento!")trueno.jugar()# Garantizar una reproducción ha sido totalmente completada antes de reanudar la detección de movimiento, previene "envío de correo basura" de sonidodormir(15)trueno.detener()más:impresión ("ningún movimiento")

Inicio automático

Probablemente queremos configurar esto en algún lugar con una batería y sin conexión a Internet, por lo que el guión tiene que ejecutar en el reinicio y sin tener que abrir una línea de comandos. Para ello, usaremos el método más simple posible: crontab. Tipo:Cómo programar tareas en Linux con Cron y CrontabCómo programar tareas en Linux con Cron y CrontabLa capacidad de automatizar tareas es una de esas tecnologías del futuro que ya está aquí. Cada usuario de Linux puede beneficiarse de sistema de programación y las tareas del usuario, gracias a cron, un servicio en segundo plano y fácil de usar.Lee mas

sudo crontab -mi

Si esta es la primera vez que ejecuta este comando, que va a comenzar preguntando qué editor usar. Elegí la opción 2, para nano. Se va a iniciar el sistema en su editor elegido, por lo que añadir la siguiente línea:

@reboot pitón /home/pi/motion.py &

Esto significa que su guión motion.py se ejecutará en cada inicio, y lo hacen en silencio (por lo que se tendrá en cuenta cualquier salida del script). Reiniciar el sistema para probarlo.

Si no juega pesar de que haya movimiento, o se oye sólo un pequeño clic, puede que no haya utilizado la ruta completa del archivo, o el archivo puede ser necesario convertir a un tamaño de archivo más baja tasa de bits y más pequeños.

Añadir más Sonidos

Jugando el mismo efecto una y otra es un poco aburrido, así que vamos a añadir algo de aleatoriedad a la misma. Descargar algunos más sonidos de Halloween, recordando a escalar hacia abajo a un tamaño razonable y tasa de bits, y luego enviarlos a través de su uso de Pi SCP como antes. He añadido tres tipos diferentes de grito.

Modificar el código para que en lugar de definir un único pygame.mixer.Sound variables, en realidad estamos creando una formación de sonidos. Esto es simple con Python, simplemente rodean una lista separada por comas de ellas con corchetes, así:

sonidos = [pygame.mezclador.Sonar("/home/pi/thunder.ogg"),pygame.mezclador.Sonar("/home/pi/scary_scream.ogg"),pygame.mezclador.Sonar("/home/pi/girl_scream.ogg"),pygame.mezclador.Sonar("/home/pi/psycho_scream.ogg")]

A continuación, importar la biblioteca de azar en su archivo, con:

importar aleatorio

Ahora modificar el bucle principal de detección de movimiento de la siguiente manera:

mientras Cierto:Si pir.motion_detected:impresión("Detección de movimiento!")reproducir sonido = aleatorio.elección(sonidos)reproducir sonido.jugar()# Garantizar una reproducción ha sido totalmente completada antes de reanudar la detección de movimiento, previene "envío de correo basura" de sonidodormir(15)reproducir sonido.detener()más:impresión ("ningún movimiento")

Tenga en cuenta el cambio de menor importancia: en lugar de jugar a la variable solo sonido, estamos usando la random.choice función para recoger un sonido al azar de nuestra gama de sonidos, luego jugar eso.

Aquí está el código completo en caso de que usted está teniendo problemas:

importar pygamede pygame.mezclador importar Sonarde gpiozero importar Sensor de movimientode hora importar dormirimportar randompygame.en eso()pygame.mezclador.en eso()#load un archivo de sonido, mismo directorio que la escritura (no mp3)sonidos = [pygame.mezclador.Sonar("/home/pi/thunder.ogg"),pygame.mezclador.Sonar("/home/pi/scary_scream.ogg"),pygame.mezclador.Sonar("/home/pi/girl_scream.ogg"),pygame.mezclador.Sonar("/home/pi/psycho_scream.ogg")]pir = Sensor de movimiento(4)mientras Cierto:Si pir.motion_detected:impresión("Detección de movimiento!")reproducir sonido = aleatorio.elección(sonidos)reproducir sonido.jugar()# Garantizar una reproducción ha sido totalmente completada antes de reanudar la detección de movimiento, previene "envío de correo basura" de sonidodormir(15)reproducir sonido.detener()más:impresión ("ningún movimiento")

Con sólo cuatro muestras, hay una alta probabilidad de repetición cada vez, pero se puede añadir más muestras si eso es molesto.

¡Eso es! Esconderlo en los arbustos con algunos miedo monstruo ojos LED, y usted debería ser capaz de ahorrar un poco de caramelo como todos los niños corriendo y gritando antes de que lleguen a la puerta. O esconderse en el armario porque una mamá enojada está fuera de la sangre después de realizar gritito Johnny.Cómo hacer Spooky Halloween Brillante Ojos de menos de $ 5Cómo hacer Spooky Halloween Brillante Ojos de menos de $ 5¿Quieres darle vida a sus decoraciones de Halloween este año? Aprender cómo hacer que los ojos de LED por menos de $ 5 en la electrónica de este proyecto principiante.Lee mas

Exención de responsabilidad: MakeUseOf no se hace responsable por cualquier daño personal que pueda resultar de su uso de este proyecto!

¿Va a hacer esta caja acústica activada por movimiento con el fin de asustar a los trick-or-treat locales? ¿Usted ha establecido ningún efecto de miedo con un Frambuesa Pi este Halloween? Por favor, háganos saber de ello en los comentarios!

Artículos Relacionados