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

  • Owen Little
  • 0
  • 4236
  • 1163
Anuncio

¿Alguna vez has querido llegar a casa para recibir una bienvenida personal? Con una Raspberry Pi y algunos componentes simples, ¡puedes! En este proyecto simple usaremos un interruptor de láminas para activar una melodía de tema cuando se abre una puerta. Aquí usaremos un Raspberry Pi como controlador, aunque podría usar casi cualquier otro microcontrolador Microcontroladores de $ 5: ¿Arduino, Raspberry Pi Zero o NodeMCU? Microcontroladores de $ 5: ¿Arduino, Raspberry Pi Zero o NodeMCU? Solía ​​ser el caso de que si quisieras obtener una computadora, tendrías que volver a conectar tu casa para pagarla. Ahora, puedes conseguir uno para un Abraham Lincoln. 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 láminas, que cuesta 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 resistencia de 1K Ohm.
  • Resistencia 3 x 10K Ohm.
  • 1 x interruptor de láminas magnético.
  • 1 x LED.
  • 2 x interruptor de botón.
  • Tablero de circuitos.
  • Cables de conexión.
  • Altavoz de computadora o similar.

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

Este proyecto, aunque se realiza principalmente por diversión, cubre los conceptos básicos para muchas aplicaciones en la automatización del hogar de bricolaje. Guía de automatización del hogar con Raspberry Pi y Arduino. Guía de automatización del hogar con Raspberry Pi y Arduino. otro y costoso de instalar. Si tiene una Raspberry Pi y un Arduino, básicamente puede lograr lo mismo en ... y también en la seguridad del hogar de bricolaje ¿Está buscando una solución de sistema de seguridad para el hogar de bricolaje? Pruebe uno de estos ¿Busca una solución de sistema de seguridad para el hogar de bricolaje? Pruebe uno de estos En la era de la tecnología digital y el hardware siempre conectado, configurar un sistema de seguridad para el hogar debería trascender el arte de colocar una caja con forma de alarma en la pared.

Empezando

Comencemos por hacer nuestro circuito. Asegúrese de que su Pi no tenga alimentación y configure su circuito de esta manera:

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. Nuestro poder va al pin 1 (3v3) y al pin 6 (Gnd).

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

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

Conecte la salida de jack de 3,5 mm de su Pi a su sistema de altavoces. Una vez que todo esté listo, debería verse así:

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

Ahora encienda su Pi y acceda a él utilizando 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 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 se conecta 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 ... pueden ayudarlo. Si está utilizando su Raspberry Pi con un monitor, mouse 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 hacer que nuestro Pi hable con nuestro circuito.

Probar nuestra configuración

Para comenzar, revisemos nuestro circuito usando un programa simple. Si está seguro de que ha conectado todo bien hasta ahora, puede omitir este paso, aunque lo recomendaría, ya que puede ahorrar dolores de cabeza más adelante..

Si nunca antes ha programado en Python y se siente un poco intimidado, hay una gran cantidad de sitios web excelentes Los 5 mejores sitios web para aprender la programación de Python Los 5 mejores sitios web para aprender la programación de Python ¿Quiere aprender la programación de Python? Estas son las mejores formas de aprender Python en línea, muchas de las cuales son completamente gratuitas. eso puede ayudarlo a comenzar.

En la terminal, cree 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 tiempo de importación GPIO 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) verdadero: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Botón en GPIO 11") time.sleep (1) if (GPIO.input (13) == 1): print ("Botón en GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("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 tienen resistencias desplegables, por lo que informan ALTO cuando se presionan. El interruptor de imán de láminas informa ALTO cuando su imán acompañante está cerca.

Ejecuta el programa:

prueba de python.py

Debería ver el LED iluminado y un informe en la pantalla cuando presiona sus dos botones y retira el imán de su interruptor de láminas. Si no recibe comentarios cuando presiona los botones, revise sus circuitos nuevamente y asegúrese de que todo esté conectado como debería estar. 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. Revisaremos el código en partes y explicaremos brevemente lo que 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. Viene de serie con Raspbian Jessie, y es una gran biblioteca para todo lo que necesita para hacer juegos de Python y muchos otros proyectos increíbles Cómo construir un bot de Twitter Raspberry Pi Cómo construir un bot de Twitter Raspberry Pi Twitter es el depósito de cortos más grande del mundo mensajes de personas sin nada que decir, y ahora usted también puede contribuir a ese proyecto épico con un bot de Twitter automatizado, impulsado por su Raspberry ... .

Vamos a usar 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 activo activo = 0 print ("Actualmente no activo") def activeState (): global activo si está activo == 1: activo = 0 GPIO.output (7, GPIO.LOW) print ("Actualmente no activo ") 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) print ("Actualmente activo") más: volver 

La primera función aquí crea una variable llamada activo, y lo establece en 0. Darle al estado activo un valor numérico significa que si planea ampliar su programa para tener diferentes estados activos, puede numerarlos en consecuencia. Si bien puede que no sea la mejor programación de Python del 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 ofrece una cuenta regresiva 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 observará nuestro interruptor magnético de láminas:

def watchDoor (): reproducción global jugando = falso mientras verdadero: si está activo == 1 y GPIO.input (15) == 1 y jugando == falso: jugando = verdadero pygame.mixer.music.play () si GPIO.input (13) == 1: print ("Botón de detención presionado: Saliendo") pygame.mixer.music.stop () break si GPIO.input (11) == 1: activeState () time.sleep (0.5) 

Creamos otra variable aquí llamada jugando - esto es simplemente para detener el programa que intenta comenzar a reproducirse repetidamente cuando se activa el interruptor.

Dentro del ciclo while, la primera declaración if comienza la música (de la que aún no tenemos nada, pero no se preocupe, está por llegar). Solo permite que la música comience si el sistema está activo, el interruptor de láminas está abierto y no se está reproduciendo..

La segunda declaració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 declaración if es para alternar si el sistema está activo o no. los tiempo de dormir la función aquí es evitar lecturas de 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, initial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) 

Si ya has experimentado con el Pi antes, esto te resultará familiar. los inicial = GPIO.LOW argumento en la configuración del pin 7 lo establece en 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 () 

Maestro de musica!

En este punto, deberíamos comenzar a pensar en la música para tocar. Puede elegir cualquier archivo de música que desee, pero elegiremos algo disponible para todos por el momento. Si ves YouTube, probablemente ya estés familiarizado con la música de Kevin MacLeod. Vamos a descargar una canción fantástica de él llamado “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 debe usarla? ¿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. Averigüemos más sobre esto y cómo usarlo. usar contenido con estas licencias para sus proyectos.

De vuelta en nuestro código, necesitamos iniciar el mezclador 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 (name) print ("Pista cargada - "+ 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. La configuración, tal como está, funciona 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 espera para configurar el programa activo o salir de él..

while True: if (GPIO.input (13) == 1): print ("Botón de detención presionado: Saliendo") 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 desde cualquiera de los botones y se cierra o cambia el estado a activo en consecuencia. Si el estado de activo se convierte en 1, entonces el watchDoor Se llama a la función que definimos anteriormente 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, que generalmente es una buena práctica para toda la programación en Raspberry Pi.

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

import RPi.GPIO como GPIO import pygame.mixer tiempo de importación def activeSetup (): global active active = 0 print ("Actualmente no activo") def activeState (): global active si está activo == 1: active = 0 GPIO.output ( 7, GPIO.LOW) print ("Actualmente no activo") elif active == 0: print ("Activando 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) print ("Actualmente activo") más: return def watchDoor (): global jugando jugando = False while True: si está activo == 1 y GPIO.input (15) == 1 y playing == False: playing = True pygame.mixer.music.play () si GPIO.input (13) == 1 : print ("Botón de detención presionado: Saliendo") pygame.mixer.music.stop () se rompe si 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 = "Un ojo d Maestro.mp3 "pygame.mixer.music.load (nombre) print (" Pista cargada - "+ str (nombre)) mientras True: if (GPIO.input (13) == 1): print (" Botón Stop presionado : Saliendo ") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO. limpiar() 

Si te desplazaste aquí 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 bienvenida para el hogar que funcione! Coloque su interruptor de láminas en su puerta y pruébelo. El baile embarazoso es opcional pero recomendado.

Este proyecto cubrió los conceptos básicos para 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é detenerte allí? Puede agregar más pistas y hacer que el programa elija una al azar de una lista. Podría agregar un relé 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 totalmente funcional, también tienen un ... y se activan otros objetos al entrar. Si tienes un sistema de música hogareño, ¿por qué no tener una canción para cada habitación??

¿Diseñarás tu propio mensaje personal de bienvenida a casa? ¿Has sido inventivo con los interruptores de láminas en tu 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!




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.