Reproduzca su propia melodía temática cuando entre en la habitación con Raspberry Pi

¿Alguna vez quisiste llegar a casa con una bienvenida personal? En este simple proyecto de Raspberry Pi usaremos un interruptor Reed para activar una melodía cuando se abre una puerta.

¿Alguna vez quisiste llegar a casa con una bienvenida personal?  En este simple proyecto de Raspberry Pi usaremos un interruptor Reed para activar una melodía cuando se abre una puerta.
Anuncio

¿Alguna vez quisiste llegar a casa con una bienvenida personal? Con una Raspberry Pi y algunos componentes simples, ¡puedes! En este proyecto simple usaremos un interruptor Reed para activar una melodía de tema cuando se abre una puerta. Vamos a usar una Raspberry Pi como controlador aquí, aunque podrías usar casi cualquier otro microcontrolador $ 5 Microcontroladores: Arduino, Raspberry Pi Zero, o NodeMCU? $ 5 Microcontroladores: Arduino, Raspberry Pi Zero, o NodeMCU? Solía ​​ocurrir que si querías tener una computadora, tendrías que remortgage tu casa para pagarla. Ahora, puedes obtener uno para Abraham Lincoln. Lea más para este proyecto usando el mismo circuito. Aquí hay una demostración.

Necesitará

Es probable que ya tenga todas las piezas que necesita para hacer esto, excepto el interruptor de lengüeta, que es de alrededor de $ 2-3, o puede obtener un paquete de 5 por poco más de $ 8 aquí.

  • Una Raspberry Pi (cualquier modelo funcionará para esto).
  • 1 x resistencia de 220 ohmios
  • 1 x 1K Ohm resistor.
  • Resistencia de 3 x 10K Ohm.
  • 1 x Interruptor de lengüeta magnético.
  • 1 x LED.
  • 2 x interruptor de botón.
  • Tablero de circuitos.
  • Cables de conexión.
  • Altavoz de computadora o similar.

Utilizaremos la Raspberry Pi para reproducir una canción cuando se ingrese la sala, y diseñaremos un circuito con botones en nuestra placa para activarla con un retraso y detendremos el programa.

Este proyecto, aunque se realiza principalmente por diversión, cubre los aspectos básicos para 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 la domótica está inundado con costosos sistemas de consumo, incompatibles con uno otro y costoso de instalar. Si tienes un Raspberry Pi y un Arduino, básicamente puedes lograr lo mismo en ... Leer más y también seguridad casera DIY ¿Estás buscando una solución DIY Home Security System? Pruebe uno de estos buscando 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, la configuración de un sistema de seguridad para el hogar debería trascender el arte de colocar una caja con forma de alarma en la pared. Lee mas

Placa base Raspberry Pi 3 Modelo B Placa madre Raspberry Pi 3 Modelo B Comprar ahora En Amazon $ 29.99

Empezando

Comencemos haciendo nuestro circuito. Asegúrate de que tu Pi no esté encendida, y configura tu circuito así:

Fritzing Annotated HQ

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

diagrama de pin

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

Mientras prueba este proyecto, puede ser útil mantener el interruptor de láminas frente a usted para poder 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 conectar temporalmente el interruptor a su puerta con cinta o, si tiene más confianza, puede colocarlo de manera más permanente para utilizarlo en futuros proyectos.

Interruptor de láminas instalado

Conecte la salida jack de 3.5 mm de su Pi a su sistema de altavoces. Una vez que todo se ha unido, debería verse más o menos así:

toda la configuración correcta

Tenga en cuenta que la placa de prueba utilizada aquí tiene sus rieles de potencia al revés, en el diagrama de Fritzing.

Ahora enciende tu Pi y accede usando SSH para que podamos acceder a la terminal. Si no está seguro de cómo hacerlo, esta guía Configuración de su Raspberry Pi para uso sin cabeza con SSH Configuración de su Raspberry Pi para uso sin cabeza con SSH La Raspberry Pi puede aceptar comandos SSH cuando está conectado 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 ... Read More puede ayudarlo. Si está utilizando su Raspberry Pi con un monitor, mouse y teclado, omita este paso y abra la terminal.

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

Ahora podemos pasar a que nuestro Pi hable a nuestro circuito.

Probando nuestra configuración

Para comenzar, revisemos nuestro circuito con un programa simple. Si confías en que has conectado todo bien hasta el momento, puedes omitir este paso, aunque lo recomendaría ya que puede ahorrarte dolores de cabeza más adelante.

Si nunca antes has programado en Python y te sientes un poco intimidado, hay una gran cantidad de sitios web geniales. Los 5 mejores sitios web para aprender Programación de Python Los 5 mejores sitios web para aprender programación de Python Durante la última década, el lenguaje de programación Python ha explotado en popularidad entre los programadores en todas las áreas de codificación. Desde desarrolladores web hasta diseñadores de videojuegos y creadores de herramientas internas, muchas personas han caído en ... Leer más que pueden ayudarlo a comenzar.

En la terminal, crea una nueva secuencia de comandos:

 nano test.py 

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

 #This code was written for an article on www.MakeUseOf.com by Ian Buckley. import RPi.GPIO as GPIO import time 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) while True: GPIO.output(7, GPIO.HIGH) if (GPIO.input(11)==1): print("Button on GPIO 11") time.sleep(1) if (GPIO.input(13)==1): print("Button on GPIO 13") time.sleep(1) if (GPIO.input(15)==1): print("Button on GPIO 15") time.sleep(1) GPIO.cleanup() 

Este código lee el valor de los botones e imprime en la pantalla cuando cambian. Los dos botones tienen resistencias desplegables, por lo que informan HIGH cuando se presionan. El interruptor magnético de lengüeta informa ALTO cuando el imán que lo acompaña está cerca.

interruptores

Ejecuta el programa:

 python test.py 

Debería ver que el LED se enciende y un informe en la pantalla cuando presiona los dos botones y retira el imán del interruptor de láminas. Si no recibe retroalimentación cuando presiona los botones, revise los circuitos nuevamente y asegúrese de que todo esté conectado como debería. Cuando termine de probar, presione CTRL-C para detener el programa.

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

Necesitamos comenzar importando algunos módulos:

 import Rpi.GPIO as GPIO import pygame.mixer import time 

Utilizaremos el módulo Pygame para reproducir nuestra música. Viene de serie con Raspbian Jessie, y es una gran biblioteca para todo lo que necesitas para hacer juegos de Python y muchos otros proyectos increíbles. Cómo construir un Bot de Twitter Raspberry Pi Cómo crear un Twitter de Raspberry Pi Twitter es el repositorio más grande del mundo de short 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 ... Lea más.

Vamos a usar una variable llamada activa 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 if active==1: active=0 GPIO.output(7, GPIO.LOW) print("Currently Not Active") elif active==0: print ("Activating in 10 seconds") for x in range(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) print("Currently Active") else: return 

La primera función aquí crea una variable llamada activa, y la establece en 0. Dar al estado activo un valor numérico significa que si planea escalar posteriormente su programa para tener diferentes estados activos, puede numerarlos según corresponda. 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 comprueba si el sistema está activo (o activo == 1 ). Si es así, configura el sistema como no activo ( activo == 0 ), apaga el LED e imprime en la consola. Si no es así, le da una cuenta atrás de 10 segundos para salir de 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 mirará nuestro interruptor de imán reed:

 def watchDoor(): global playing playing = False while True: if active==1 and GPIO.input(15)==1 and playing == False: playing=True pygame.mixer.music.play() if GPIO.input(13)==1: print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if GPIO.input(11)==1: activeState() time.sleep(0.5) 

Creamos aquí otra variable llamada reproducción, que está ahí simplemente para detener el programa que intenta comenzar a tocar repetidamente cuando se activa el interruptor.

Dentro del ciclo while, la primera instrucción if inicia la música (que todavía no tenemos, pero no hay que preocuparse, ya viene). Solo permite que la música se inicie si el sistema está activo, el interruptor de láminas está abierto y no se está reproduciendo.

La segunda instrucción 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. La función time.sleep aquí es para evitar lecturas múltiples de botones cuando se presiona.

Ahora es el momento de configurar los pins de Pi.

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

Si has hecho alguna prueba con el Pi antes de que esto te sea familiar. El argumento inicial = GPIO.LOW en la configuración del pin 7 lo pone a 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() 

¡Música Maestro!

En este punto, deberíamos comenzar a pensar en la música para jugar. Puede elegir cualquier archivo de música que desee, pero debemos elegir algo disponible para todos por el momento. Si miras YouTube probablemente ya estés familiarizado con la música de Kevin MacLeod. Permite descargar una canción fantástica de él llamada "One-eyed Maestro". Esto, junto con gran parte de la música de su sitio, está licenciado bajo Creative Commons, y hay muchas buenas razones ¿Qué es Creative Commons, y debe usarlo? ¿Qué es Creative Commons, y debe usarlo? Creative Commons es un conjunto de licencias que automáticamente le dan permiso para hacer varias cosas, como reutilizar y distribuir el contenido. Descubramos más sobre él y cómo usarlo. Lea más para usar contenido con estas licencias para sus proyectos.

De vuelta en nuestro código, tenemos que iniciar el mezclador de Pygame y cargar nuestra canción.

 pygame.mixer.init(44100, -16, 2, 1024) pygame.mixer.music.set_volume(1.0) name = "One-eyed Maestro.mp3" pygame.mixer.music.load(name) print("Loaded track - "+ str(name)) 

La primera línea de este bloque inicia el mezclador Pygame . El último argumento en los 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 adelante cuando se reproduce su música, intente aumentar este número a 4096. La configuración, ya que funcionan sin problemas en un Pi 3.

Si descargó su archivo de música en un directorio diferente a su programa door.py, 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 ciclo que nos permita configurar el programa o salir de él.

 while True: if(GPIO.input(13)==1): print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if(GPIO.input(11)==1): activeState() time.sleep(0.5) if(active==1): watchDoor() break GPIO.cleanup() 

Este ciclo while espera una entrada de cualquiera de los botones, y lo cierra o cambia el estado a activo de acuerdo con esto. Si el estado de activo se convierte en 1, entonces se llama a la función watchDoor que definimos anteriormente y la próxima vez que se abra la puerta se reproducirá nuestra melodía. También llamamos a GPIO.cleanup () para restablecer nuestros pines al salir, lo que generalmente es una buena práctica para toda la programación en el Raspberry Pi.

Eso es todo lo que tenemos que hacer para poner en marcha este proyecto, aquí está el código completo:

 import RPi.GPIO as GPIO import pygame.mixer import time def activeSetup(): global active active=0 print("Currently Not Active") def activeState(): global active if active==1: active=0 GPIO.output(7, GPIO.LOW) print("Currently Not Active") elif active==0: print ("Activating in 10 seconds") for x in range(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) print("Currently Active") else: return def watchDoor(): global playing playing = False while True: if active==1 and GPIO.input(15)==1 and playing == False: playing=True pygame.mixer.music.play() if GPIO.input(13)==1: print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if GPIO.input(11)==1: activeState() time.sleep(0.5) GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT, initial=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-eyed Maestro.mp3" pygame.mixer.music.load(name) print("Loaded track - "+ str(name)) while True: if(GPIO.input(13)==1): print("Stop button pressed: Exiting") pygame.mixer.music.stop() break if(GPIO.input(11)==1): activeState() time.sleep(0.5) if(active==1): watchDoor() break GPIO.cleanup() 

Si te desplazaste hacia abajo para obtener el código completo de inmediato, ten en cuenta que aún necesitarás descargar la música en tu Pi para que funcione.

Ahora debería tener una melodía de tema de inicio de bienvenida. Conecte su interruptor de láminas a su puerta, y pruébelo. El baile embarazoso es opcional pero recomendado.

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

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

¿Estará diseñando su propio mensaje de inicio de bienvenida personal? ¿Ha sido inventivo con interruptores de láminas en su hogar de otras maneras? Si es así, ¡deje un comentario sobre lo que está planeando o ya lo ha hecho en la sección de comentarios a continuación!

In this article