Asusta truco o tratadores con una caja de sonido activada por movimiento de bricolaje

  • Brian Curtis
  • 0
  • 4047
  • 210
Anuncio

Es esa época del año nuevamente cuando se considera socialmente aceptable aterrorizar a los niños pequeños y darles dulces. Oh Alegría. Estoy aquí para facilitar tu trabajo, mostrándote cómo hacer una caja de sonido de Raspberry Pi para Halloween con detección de movimiento. Aquí hay una demostración:

Esto es lo que necesitarás

Probablemente, la única parte que aún no tiene es el sensor de movimiento, una parte pequeña y económica que debería poder encontrar en su Microcentro o Maplin local..

  • Raspberry Pi (cualquier modelo lo hará).
  • Sensor de movimiento (~ $ 3).
  • Cables de conexión.
  • Altavoz con cable (la mayoría de los altavoces Bluetooth tendrán la opción de usar la entrada de línea).
  • Cable estéreo de 3.5 mm, macho a macho.

Una vez que haya terminado, es posible que desee agregar algunos efectos de iluminación sincronizados Cómo sincronizar las luces y la música de la casa para Halloween Cómo sincronizar las luces y la música de la casa para Halloween Ya sea que esté organizando una fiesta de Halloween o desee la casa embrujada más genial del vecindario, es esencial hacer que sus luces parpadeen al ritmo de la música y los efectos de sonido. también, pero en este tutorial solo cubriremos los bits de miedo!

Configurando

Estamos usando Raspbian Jessie Lite y Python 2.7, pero cualquier distribución de Linux que se ejecute en su Pi debería estar bien. Lo dejé en el nombre de host estándar “raspberrypi.local”, así que comience iniciando sesión de forma remota con SSH (abra una ventana de Terminal si está en Mac. Aquí le mostramos cómo hacer lo mismo en Windows 4 Maneras fáciles de usar SSH en Windows 4 Maneras fáciles de usar SSH en Windows SSH es la solución de facto para acceder de forma segura a terminales remotas en Linux y otros sistemas similares a UNIX. Si tiene un servidor SSH remoto al que desea acceder, deberá descargar un cliente SSH ...), o si ha optado por usar un Raspbian completo con escritorio GUI, siéntase libre de pasar a la actualización.

ssh [email protected] (ingrese raspberry como contraseña) sudo apt-get update sudo apt-get install python-pip sudo pip install gpiozero 

Esto instala una biblioteca simple para trabajar con los pines GPIO en Python con muchos tipos de sensores y botones incorporados. Conecte su sensor con el pin de señal en GPIO4, el VCC conectado a 5V y el GND conectado a GND. Esto puede variar según su modelo exacto, así que confirme con un diagrama de pinout.

Crédito de imagen: raspberrypi.org

Con mucha ayuda, mi estuche Pi 2 de Pimoroni tiene un diagrama de pinout grabado con láser directamente sobre él.

Ahora hagamos nuestro script de detección de movimiento.

nano motion.py 

Pegar en:

desde gpiozero import MotionSensor pir = MotionSensor (4) mientras True: if pir.motion_detected: print ("Motion detect!") else: print ("No motion") 

Presione CTRL-X, luego Y para guardar y salir, luego ejecute con:

python motion.py 

Deberías ver el “Sin movimiento” mensaje repetido en la pantalla hasta que mueva su mano frente al sensor, cuando permanecerá en el “Movimiento detectado!”

Si el mensaje no cambia en absoluto, lo ha conectado mal.

Si está interesado en aprender más sobre esta sencilla biblioteca GPIOZero, eche un vistazo a esta fantástica hoja de trucos.

Jugando sonido

Conecte su altavoz portátil y asegúrese de que esté alimentado si es necesario. Usaremos el pygame biblioteca para reproducir sonidos, así que adelante e instálela:

sudo apt-get install python-pygame 

Primero, necesitamos un archivo de sonido para jugar. Si está haciendo esto desde el entorno de escritorio, continúe y descargue un WAV o OGG archivo de algún lugar (encontré una buena selección de sonidos gratuitos de Halloween aquí), y ponerlo en su directorio de inicio. Sugeriría reducir el muestreo primero y convertirlo a un pequeño formato OGG de todos modos.

Si se conecta de forma remota y solo usa la línea de comando, tenemos algunos problemas más con algunos sitios, ya que wget El comando no puede tomar el archivo real. En cambio, podemos descargarlo localmente en nuestro escritorio y usar el scp (copia segura) para copiar sobre la línea de comando. Puede obtener más información sobre scp aquí, pero por ahora, abra una nueva pestaña Terminal y escriba:

scp thunder.ogg [email protected]: 

Cambie el nombre de thunder.ogg según corresponda, pero no olvide el final. : (el comando se completará sin él, pero no hará lo que queremos que haga). Por defecto, esto transferirá el archivo al directorio de inicio del usuario Pi.

Ahora modifiquemos el guión para reproducir un sonido. Comience importando algunos módulos nuevos:

import pygame.mixer desde pygame.mixer import Sound 

Luego, justo después de las declaraciones de importación existentes, repetiremos el mismo sonido una y otra vez para fines de prueba. Deje el resto de su código de detección de movimiento tal como está por ahora: simplemente no se ejecutará, ya que estará atascado en este bucle de reproducción de sonido para siempre.

pygame.init () pygame.mixer.init () # cargar un archivo de sonido, en el directorio de inicio del usuario Pi (no mp3s) thunder = pygame.mixer.Sound ("/ home / pi / thunder.ogg") mientras True : thunder.play () sleep (10) thunder.stop () 

Tenga en cuenta que cuando intenté originalmente este proceso, el sonido se negó a reproducirse y simplemente hizo 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 clip de 15 segundos. Reducir eso a 16 bits con el convertidor al que hice el enlace anterior hizo que todo funcionara bien, y el tamaño se redujo a solo 260 KB!

Si nota un desagradable silbido de sus altavoces cuando su aplicación Python se está ejecutando, pero no de otra manera, escriba:

sudo nano /boot/config.txt 

Y agregue esta línea al final:

disable_audio_dither = 1 

Reinicie para que los cambios surtan efecto. O no te molestes, ya que de todos modos me sonó como lluvia.

Finalmente, modifiquemos el bucle principal de verificación de movimiento para reproducir el sonido cuando se detecte movimiento. Usaremos un retraso de 15 segundos para que se pueda reproducir todo el bucle y actuar como un búfer de correo no deseado para cuando haya mucho movimiento continuo..

while True: if pir.motion_detected: print ("¡Movimiento detectado!") thunder.play () # asegura que la reproducción se haya completado por completo antes de reanudar la detección de movimiento, evita el "envío de spam" del sonido sleep (15) thunder.stop () más: print ("Sin movimiento") 

Comience automáticamente

Probablemente queremos configurar esto en algún lugar con una batería y sin conexión a Internet, por lo que el script debe ejecutarse al reiniciar sin tener que abrir una línea de comando. Para hacer esto, utilizaremos el método más simple posible: el crontab Cómo programar tareas en Linux con Cron y Crontab Cómo programar tareas en Linux con Cron y Crontab La capacidad de automatizar tareas es una de esas tecnologías futuristas que ya está aquí . Todos los usuarios de Linux pueden beneficiarse del sistema de programación y las tareas del usuario, gracias a cron, un servicio en segundo plano fácil de usar. . Tipo:

sudo crontab -e 

Si es la primera vez que ejecuta este comando, comenzará preguntándole qué editor usar. Elegí la opción 2, para nano. Se iniciará en el editor elegido, así que agregue la siguiente línea:

@reboot python /home/pi/motion.py & 

Esto significa que su script motion.py se ejecutará en cada inicio y lo hará en silencio (por lo que se ignorará cualquier salida del script). Reiniciar para probarlo.

Si no se reproduce nada a pesar de que hay movimiento, o si escucha solo un pequeño clic, es posible que no haya utilizado la ruta completa del archivo o que su archivo deba convertirse a una tasa de bits más baja y un tamaño de archivo más pequeño.

Agregar más sonidos

Jugar el mismo efecto una y otra vez es un poco aburrido, así que agreguemos algo de aleatoriedad. Descargue algunos sonidos de Halloween más, recordando reducirlos a un tamaño razonable y una tasa de bits, luego envíelos a su Pi usando scp como antes. Agregué tres tipos diferentes de gritos.

Modifique el código para que en lugar de definir un solo pygame.mixer.Sound variable, en realidad estamos creando un formación de sonidos Esto es simple con Python, solo encierre una lista separada por comas con corchetes, de esta manera:

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

A continuación, importe la biblioteca aleatoria en su archivo, con:

importar al azar 

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

while True: if pir.motion_detected: print ("¡Movimiento detectado!") playSound = random.choice (sounds) playSound.play () # asegura que la reproducción se haya completado por completo antes de reanudar la detección de movimiento, evita el "spam" del sonido de suspensión (15 ) playSound.stop () else: print ("Sin movimiento") 

Tenga en cuenta el cambio menor: en lugar de reproducir la única variable de sonido, estamos utilizando el random.choice función para elegir un sonido aleatorio de nuestra matriz de sonidos, luego reproducir ese.

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

importar pygame desde pygame.mixer importar sonido desde gpiozero importar MotionSensor desde el tiempo importar dormir importar aleatorio pygame.init () pygame.mixer.init () # cargar un archivo de sonido, el mismo directorio que el script (sin mp3) sonidos = [pygame.mixer .Sound ("/ home / pi / thunder.ogg"), pygame.mixer.Sound ("/ home / pi / scary_scream.ogg"), pygame.mixer.Sound ("/ home / pi / girl_scream.ogg") , pygame.mixer.Sound ("/ home / pi / psycho_scream.ogg")] pir = MotionSensor (4) mientras que True: if pir.motion_detected: print ("¡Detección de movimiento!") playSound = random.choice (sonidos) playSound .play () # garantiza que la reproducción se haya completado por completo antes de reanudar la detección de movimiento, evita el "envío de spam" del sonido en reposo (15) playSound.stop () más: print ("Sin movimiento") 

Con solo cuatro muestras, hay una alta probabilidad de repetición cada vez, pero puede agregar más muestras si eso es molesto.

¡Eso es! Escóndelo en los arbustos con algunos ojos monstruosos de LED Cómo hacer que los ojos brillantes de Halloween espeluznantes por menos de $ 5 Cómo hacer los ojos brillantes de Halloween espeluznantes por menos de $ 5 ¿Quieres darle vida a tus decoraciones de Halloween este año? Aprende a hacer ojos LED por menos de $ 5 en este proyecto electrónico para principiantes. , y deberías poder ahorrarte algunos dulces ya que todos los niños huyen gritando antes de llegar a la puerta. O esconderse en el armario porque una mamá enojada está buscando sangre después de que hiciste llorar al pequeño Johnny.

Descargo de responsabilidad: MakeUseOf no es responsable de ninguna lesión personal que pueda resultar de su uso de este proyecto!

¿Harás esta caja de sonido activada por movimiento para asustar a los trucos o tratadores locales? ¿Has configurado algún efecto aterrador con una Raspberry Pi este Halloween? Por favor, háganos saber en los comentarios a continuación!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.