Toca tu propia melodía de tema cuando entras en la habitación con Raspberry Pi

Toca tu propia melodía de tema cuando entras en la habitación con Raspberry Pi / Bricolaje

¿Alguna vez has querido llegar a casa a una bienvenida personal? Con una Raspberry Pi y algunos componentes simples, ¡puedes hacerlo! En este proyecto simple usaremos un interruptor de lámina para activar una melodía de tema cuando se abre una puerta. Usaremos una Raspberry Pi como el controlador aquí, aunque podría usar casi cualquier otro microcontrolador de $ 5 microcontroladores: Arduino, Raspberry Pi Zero o NodeMCU? $ 5 Microcontroladores: Arduino, Raspberry Pi Zero, o NodeMCU? Solía ​​ser el caso de que si quería tener una computadora, tendría que volver a equipar su casa para pagarla. Ahora, puedes conseguir uno para un Abraham Lincoln. Leer más para este proyecto utilizando el mismo circuito. Aquí hay una demostración.

Necesitará

Probablemente ya tengas todas las partes que necesitas para hacer esto, excepto el interruptor de láminas, que es de alrededor de $ 2-3, o puedes obtener un paquete de 5 por solo $ 8 aquí.

  • Una Raspberry Pi (cualquier modelo funcionará para esto).
  • 1 x 220 ohmios de resistencia.
  • 1 x resistencia de 1K Ohm.
  • 3 x resistencia de 10K ohmios.
  • 1 x interruptor de lámina magnética.
  • 1 x LED.
  • 2 x interruptor de pulsador.
  • Tablero de circuitos.
  • Cables de conexión.
  • Altavoz de la computadora o similar.

Usaremos la Raspberry Pi para reproducir una canción cuando se ingrese a la sala, y diseñaremos un circuito con botones en nuestra placa de pruebas para activarlo en un retraso y detener el programa..

Este proyecto, aunque se realizó principalmente por diversión, cubre los aspectos básicos de muchas aplicaciones en la automatización doméstica DIY Guía de automatización del hogar con Raspberry Pi y Arduino Guía de automatización del hogar con Raspberry Pi y Arduino El mercado de automatización del hogar está inundado de costosos sistemas de consumo, incompatibles con uno Otro y costoso de instalar. Si tiene una Raspberry Pi y un Arduino, básicamente puede lograr lo mismo en ... Leer más y también en la seguridad doméstica de bricolaje ¿Busca una solución de sistema de seguridad para el hogar de bricolaje? Pruebe uno de estos en busca de una solución de sistema de seguridad para el hogar DIY Pruebe uno de estos En la era de la tecnología digital y el hardware siempre conectado, configurar un sistema de seguridad en el hogar debería trascender el arte de colocar una caja con forma de alarma en la pared. Lee mas

Raspberry Pi 3 Model B Motherboard Raspberry Pi 3 Model B Motherboard Compre Ahora En Amazon $ 34.49

Empezando

Empecemos por hacer nuestro circuito. Asegúrese de que su Pi no esté en funcionamiento, y configure su circuito de esta manera:

El LED está conectado al pin 7 en nuestro pi. Los dos interruptores de botón pulsador están unidos a los pines 11 y 13, y el interruptor de lámina se conecta al pin 15. Nuestro poder va al pin 1 (3v3) y al pin 6 (Gnd).

Asegúrese de verificar que todo esté en el lugar correcto.

Mientras está probando este proyecto, puede ayudar mantener el interruptor de láminas delante de usted para que pueda activarlo o desactivarlo fácilmente. En este caso, el interruptor de láminas ya estaba instalado encima de la puerta. Una vez que su proyecto esté en funcionamiento, puede adjuntar temporalmente el interruptor a su puerta con cinta adhesiva o, si se siente más seguro, puede adjuntarlo de forma más permanente para usar en proyectos futuros.!

Conecte la salida de jack de 3,5 mm de su Pi a su sistema de altavoces. Una vez que se haya juntado todo, debería verse algo como esto:

Tenga en cuenta que el tablero utilizado aquí tiene sus rieles eléctricos al revés al diagrama de Fritzing anterior.

Ahora encienda su Pi y acceda usando SSH para que podamos acceder al terminal. Si no está seguro de cómo hacerlo, esta guía Configuración de su Raspberry Pi para un uso sin cabeza con SSH Configuración de su Raspberry Pi para un uso sin cabeza con SSH La Raspberry Pi puede aceptar comandos SSH cuando está conectada a una red local (ya sea por Ethernet o Wi-Fi), lo que le permite configurarlo fácilmente. Los beneficios de SSH van más allá de alterar el examen diario ... Leer más puede ayudarlo. Si está utilizando su Raspberry Pi con un monitor, ratón y teclado, omita este paso y abra el terminal.

Antes de comenzar, vale la pena verificar si está actualizado. Tipo sudo apt-get update en la terminal.

Ahora podemos pasar a que nuestro Pi esté hablando con nuestro circuito..

Probando nuestra configuración

Para empezar, veamos nuestro circuito mediante un sencillo programa. Si está seguro de que ha conectado todo bien hasta el momento, puede omitir este paso, aunque lo recomendaría ya que puede evitar dolores de cabeza más adelante..

Si nunca antes has programado en Python y te sientes un poco desanimado, hay una gran cantidad de sitios web. Los 5 mejores sitios web para aprender a programar en Python. Los 5 mejores sitios web para aprender a programar en Python. ¿Quieres aprender a programar en Python? Estas son las mejores maneras de aprender Python en línea, muchas de las cuales son completamente gratuitas. Leer más que pueden ayudarte a comenzar.

En la terminal, crea un nuevo script:

nano test.py

Una vez abierto, agregue este código al archivo y presione Ctrl-C para salir, siguiendo el diálogo de guardar:

# Este código fue escrito para un artículo en www.MakeUseOf.com por Ian Buckley. importar RPi.GPIO como GPIO importar tiempo GPIO.setwarnings (False) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO. IN) GPIO.setup (15, GPIO.IN) a la vez que True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Button on GPIO 11") time.sleep (1) if (GPIO.input (13) == 1): imprimir ("Botón en GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): imprimir ("Botón en GPIO 15 ") time.sleep (1) GPIO.cleanup () 

Este código lee el valor de los botones y se imprime en la pantalla cuando cambian. Los dos botones pulsadores tienen resistencias desplegables, por lo que informan ALTO cuando se presionan. El interruptor del imán de lámina reporta ALTO siempre que el imán que lo acompaña esté cerca.

Ejecuta el programa:

python test.py

Debería ver que se enciende el LED y un informe en la pantalla cuando presiona sus dos botones y retira el imán de su interruptor de láminas. Si no está recibiendo comentarios cuando presiona los botones, verifique nuevamente sus circuitos y asegúrese de que todo esté conectado como debería. Cuando hayas terminado de probar, presiona CTRL-C para detener el programa.

Ahora podemos armar un programa simple para configurar, activar y restablecer el sensor de nuestra puerta. Revisaremos el código por partes y explicaremos brevemente qué hace cada parte, aunque si desea ver el código completo, desplácese hacia abajo para verlo presentado en su totalidad..

Necesitamos comenzar importando algunos módulos:

importar Rpi.GPIO como GPIO importar pygame.mixer tiempo de importación 

Estaremos usando el Pygame Módulo para reproducir nuestra música. Se incluye de serie con Raspbian Jessie, y es una excelente biblioteca para todo lo que necesitas para crear juegos de Python y muchos otros proyectos asombrosos Cómo construir un bot de Twitter de Raspberry Pi Cómo construir un Bot de Twitter de Raspberry Pi Twitter es el repositorio más grande del mundo. mensajes de personas que no tienen nada que decir, y ahora usted también puede contribuir a ese proyecto épico con un robot de Twitter automatizado, impulsado por su Raspberry ... Leer más .

Vamos a utilizar una variable llamada activo Para decidir si nuestro sistema está activo o no. Vamos a definir un par de funciones que harán esto por nosotros:

def activeSetup (): global active active = 0 print ("Currently Not Active") def activeState (): global active si active == 1: active = 0 GPIO.output (7, GPIO.LOW) print ("Currently Not Active ") elif active == 0: print (" Activando en 10 segundos ") para x en el rango (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO .LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) imprimir ("Actualmente activo") else: return 

La primera función aquí crea una variable llamada activo, y lo establece en 0. Dando al estado activo un valor numérico significa que si planea escalar más tarde su programa para tener diferentes estados activos, puede numerarlos en consecuencia. Si bien puede que no sea la mejor programación de Python en el mundo, será más que suficiente para este proyecto..

La segunda función cuando se llama verifica si el sistema está activo (o activo == 1). Si es así, configura el sistema para que no esté activo (activo == 0), apaga el LED e imprime en la consola. Si no lo está, le da una cuenta regresiva de 10 segundos para dejar la habitación en la que parpadea el LED, antes de permanecer encendido para mostrar que el sistema está activo.

Ahora podemos definir una función que vigilará el cambio de nuestro imán de lámina:

def watchDoor (): reproducción global jugando = falso mientras es verdadero: si está activo == 1 y GPIO.input (15) == 1 y jugando == falso: jugando = verdadero pygame.mixer.music.play () si GPIO.input (13) == 1: imprimir ("Botón de parada presionado: Salir") pygame.mixer.music.stop () se interrumpe si GPIO.input (11) == 1: activeState () time.sleep (0.5) 

Creamos aquí otra variable llamada jugando - esto es simplemente para detener el programa que intenta iniciar la reproducción repetidamente cuando se activa el interruptor.

Dentro del bucle while, la primera instrucción if comienza con la música (que aún no tenemos, pero no nos preocupemos, ya viene). Solo permite que la música se inicie si el sistema está activo, el interruptor de lámina está abierto y aún no se está reproduciendo..

La segunda sentencia if es para nuestro botón de salida. Si se presiona este botón, la música se detiene y el programa sale..

La tercera instrucción if es para alternar si el sistema está activo o no. los tiempo de dormir La función aquí es evitar que se lean múltiples botones cuando se presiona..

Ahora es el momento de configurar los pines de Pi.

GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, inicial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) 

Si has hecho alguna experimentación con el Pi antes, esto debería resultarte familiar. los initial = GPIO.LOW el argumento en la configuración del pin 7 lo establece en tan bajo tan pronto como se inicializa.

Ahora podemos llamar a nuestra función que configurará el sistema para que no esté activo cuando se inicie el programa.

activeSetup () 

Musica maestro!

En este punto, deberíamos empezar a pensar en la música para tocar. Puede elegir cualquier archivo de música que desee, pero elegiremos algo disponible para todos por ahora. Si ves YouTube, probablemente ya estés familiarizado con la música de Kevin MacLeod. Permite descargar una fantástica melodía por él llamada “Maestro tuerto”. Esto, junto con gran parte de la música en su sitio, está licenciado bajo Creative Commons, y hay muchas buenas razones ¿Qué es Creative Commons, y debería usarlo? ¿Qué es Creative Commons, y debería usarlo? Creative Commons es un conjunto de licencias que automáticamente le da permiso para hacer varias cosas, como reutilizar y distribuir el contenido. Averigüemos más sobre esto y cómo usarlo. Lee más para usar el contenido de estas licencias para tus proyectos..

De vuelta en nuestro código, debemos iniciar el mezclador de Pygame y cargar nuestra melodía.

pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro.mp3 tuerto. pygame.mixer.music.load (nombre) imprimir (" Track cargado - "+ str (nombre)) 

La primera línea de este bloque inicia el Pygame mezclador. El último argumento entre paréntesis es el búfer que controla la latencia en la que se reproduce el sonido. Si experimenta una reproducción entrecortada más tarde cuando se reproduce su música, intente aumentar este número a 4096. Los ajustes, ya que funcionan sin problemas en un Pi 3.

Si descargó su archivo de música en un directorio diferente a su puerta.py programa, deberá proporcionar la ruta completa dentro de los corchetes cuando defina la variable de nombre.

Ahora todo lo que queda por hacer es configurar un bucle que nos espere para que configuremos el programa como activo o para que salgamos de él..

a la vez que Verdadero: si (GPIO.input (13) == 1): imprimir ("Botón de parada presionado: Salir") pygame.mixer.music.stop () se interrumpe si (GPIO.input (11) == 1): estado activo () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup () 

Este bucle mientras espera una entrada de cualquiera de los botones, y cierra o cambia el estado para activarse en consecuencia. Si el estado de activo se convierte en 1, entonces el watchDoor La función que definimos anteriormente se llama y la próxima vez que se abra la puerta, se reproducirá nuestra melodía. Tambien llamamos GPIO.cleanup () para restablecer nuestros pines en la salida, lo que generalmente es una buena práctica para toda la programación en la Raspberry Pi.

Eso es todo lo que necesitamos hacer para que este proyecto esté en funcionamiento, aquí está el código completo:

importar RPi.GPIO como GPIO importar pygame.mixer tiempo de importación def activeSetup (): global active active = 0 print ("Currently Not Active") def activeState (): global active si está activo == 1: active = 0 GPIO.output ( 7, GPIO.LOW) imprimir ("Actualmente no activo") elif activo == 0: imprimir ("Activar en 10 segundos") para x en el rango (0,10): GPIO.output (7, GPIO.HIGH) tiempo .sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) imprimir ("Actualmente activo") else: return def watchDoor (): global jugando jugando = falso mientras es verdadero: si está activo == 1 y GPIO.input (15) == 1 y jugando == falso: jugando = verdadero pygame.mixer.music.play () si GPIO.input (13) == 1 : imprimir ("Botón de parada presionado: salir") pygame.mixer.music.stop () se interrumpe si GPIO.input (11) == 1: estado activo () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO .setup (7, GPIO.OUT, inicial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) activeSetup () pygame. mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "One-eye d Maestro.mp3 "pygame.mixer.music.load (nombre) print (" Tracked Load - "+ str (name)) en True: if (GPIO.input (13) == 1): print (" Botón de parada presionado : Saliendo de "pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO. limpiar() 

Si se desplazó hasta aquí para obtener el código completo de inmediato, tenga en cuenta que todavía necesitará descargar la música en su Pi para que funcione.!

¡Ahora deberías tener una melodía de tema de bienvenida en casa! Acople el interruptor de láminas a la puerta y pruébelo. El baile vergonzoso es opcional pero recomendado.

Este proyecto cubrió los aspectos básicos de muchas formas de supervisión, seguridad y automatización del hogar, y con suerte también fue divertido!

Ahora que has llegado hasta aquí, ¿por qué parar allí? Podría agregar más pistas y hacer que el programa elija una al azar de una lista. Podría agregar un relevo. Comenzando con GPIO en una Raspberry Pi Comenzando con GPIO en una Raspberry Pi Si pensaba que el Arduino era genial, solo espere hasta que tenga una Raspberry Pi, estas cosas son increíbles. Además de ser una computadora completamente funcional, también tienen una ... Leer más y tienen otros objetos activados al ingresar. Si tiene un sistema de música en el hogar, ¿por qué no tener una canción para cada habitación??

¿Diseñarás tu propio mensaje personal de bienvenida? ¿Ha sido creativo con los interruptores de láminas en su hogar de otras maneras? Si es así, deje un comentario sobre lo que está planeando o ya ha hecho en la sección de comentarios a continuación.!

Descubre más sobre: ​​Domótica, Raspberry Pi.