Riproduci il tuo tema personale quando entri nella stanza con Raspberry Pi

Hai mai desiderato di arrivare a casa per un benvenuto personale? In questo semplice progetto Raspberry Pi useremo un interruttore reed per attivare una melodia quando viene aperta una porta.

Hai mai desiderato di arrivare a casa per un benvenuto personale?  In questo semplice progetto Raspberry Pi useremo un interruttore reed per attivare una melodia quando viene aperta una porta.
Annuncio pubblicitario

Hai mai desiderato di arrivare a casa per un benvenuto personale? Con un Raspberry Pi e alcuni componenti semplici, puoi! In questo semplice progetto useremo un interruttore reed per attivare un motivo a tema quando viene aperta una porta. Useremo un Raspberry Pi come controller qui, anche se potresti usare quasi tutti i microcontrollori di altri microcontrollori da $ 5: Arduino, Raspberry Pi Zero o NodeMCU? Microcontrollori $ 5: Arduino, Raspberry Pi Zero o NodeMCU? In passato, se volevi un computer, dovevi remortgage la tua casa per pagarlo. Ora puoi prenderne uno per un Abraham Lincoln. Leggi di più per questo progetto usando lo stesso circuito. Ecco una demo.

Avrai bisogno

Probabilmente già possiedi tutte le parti necessarie per farlo, ad eccezione dell'interruttore a lamella, che è di circa $ 2-3, oppure puoi ottenere un pacchetto di 5 per poco più di $ 8 qui.

  • Un Raspberry Pi (qualsiasi modello funzionerà per questo).
  • 1 resistenza da 220 Ohm.
  • 1 x resistore da 1K Ohm.
  • 3 resistenze da 10 Ohm.
  • 1 x interruttore magnetico reed.
  • 1 x LED.
  • 2 x interruttore a pulsante.
  • Basetta.
  • Cavi di collegamento.
  • Altoparlante per computer o simile.

Useremo il Raspberry Pi per suonare una canzone quando viene inserita la stanza, e progettiamo un circuito con i pulsanti sulla nostra breadboard per attivarlo su un ritardo e interrompere il programma.

Questo progetto, pur essendo realizzato principalmente per divertimento, copre le basi per molte applicazioni nella domotica fai da te Home Automation Guide Con Raspberry Pi e Arduino Home Automation Guide Con Raspberry Pi e Arduino Il mercato domotico è invaso da costosi sistemi di consumo, incompatibili con uno un altro e costoso da installare. Se possiedi un Raspberry Pi e un Arduino, puoi sostanzialmente ottenere la stessa ... Read More e anche la sicurezza domestica fai-da-te Cerchi una soluzione DIY Home Security System? Prova uno di questi cerchi una soluzione di sicurezza domestica fai-da-te? Prova uno di questi Nell'era della tecnologia digitale e dell'hardware sempre connesso, l'installazione di un sistema di sicurezza domestica dovrebbe trascendere l'arte di mettere una scatola a forma di allarme sul muro. Leggi di più

Scheda madre Raspberry Pi 3 Model B Scheda madre Raspberry Pi 3 Model B Acquista ora su Amazon $ 29, 99

Iniziare

Iniziamo facendo il nostro circuito. Assicurati che il tuo Pi non sia alimentato e imposta il tuo circuito in questo modo:

Fritzing Annotated HQ

Il LED è collegato al pin 7 sul nostro pi. I due interruttori a pulsante sono collegati ai pin 11 e 13 e l'interruttore reed si collega al pin 15. La nostra alimentazione va al pin 1 (3v3) e al pin 6 (Gnd).

diagramma a pin

Assicurati di controllare che tutto sia esattamente nel posto giusto.

Mentre stai testando questo progetto, potrebbe essere utile mantenere l'interruttore reed di fronte a te in modo da poterlo attivare o disattivare facilmente. In questo caso l'interruttore a lamella era già installato sopra la porta. Una volta che il tuo progetto è attivo e funzionante, puoi collegare temporaneamente l'interruttore alla tua porta usando il nastro, o se ti senti più sicuro di poterlo collegare in modo permanente per l'utilizzo in progetti futuri!

interruttore reed installato

Collega l'uscita jack da 3, 5 mm di te al sistema di altoparlanti. Una volta che tutto è stato assemblato dovrebbe assomigliare a questo:

impostazione completa corretta

Nota che il breadboard usato qui ha i binari del potere al contrario nel diagramma di Fritzing sopra.

Ora accendi il tuo Pi e accedici utilizzando SSH per accedere al terminale. Se non sei sicuro su come farlo, consulta la guida Configurazione del tuo Raspberry Pi per l'uso senza testa con SSH Configurazione del tuo Raspberry Pi per l'uso senza testa con SSH Il Raspberry Pi può accettare comandi SSH quando è connesso a una rete locale (tramite Ethernet o Wi-Fi), che consente di configurarlo facilmente. I vantaggi di SSH vanno oltre a sconvolgere lo screening quotidiano ... Leggi di più può aiutarti. Se stai usando il tuo Raspberry Pi con un monitor, un mouse e una tastiera, salta questo passaggio e apri il terminale.

Prima di iniziare, vale la pena controllare se sei aggiornato. Digitare sudo apt-get update nel terminale.

Ora possiamo passare a far parlare il nostro Pi al nostro circuito.

Testare il nostro setup

Per iniziare, controlliamo il nostro circuito usando un semplice programma. Se sei sicuro di aver telegrafato tutto fino a questo punto, puoi saltare questo passaggio, anche se lo consiglierei in quanto può salvare mal di testa in seguito.

Se non hai mai programmato in Python prima e ti senti un po 'scoraggiato, ci sono una miriade di grandi siti Web I 5 migliori siti web per imparare la programmazione Python I 5 migliori siti web per imparare la programmazione Python Negli ultimi dieci anni, il linguaggio di programmazione Python è esploso in popolarità tra i programmatori in tutte le aree della codifica. Dagli sviluppatori web ai progettisti di videogiochi ai creatori di strumenti interni, molte persone sono cadute in ... Leggi di più che possono aiutarti a iniziare.

Nel terminale, crea un nuovo script:

 nano test.py 

Una volta aperto, aggiungi questo codice al file e premi Ctrl-C per uscire, seguendo il dialogo di salvataggio:

 #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() 

Questo codice legge il valore dei pulsanti e stampa sullo schermo quando cambiano. I due pulsanti sono dotati di resistori pull down, quindi riportano HIGH quando premuto. L'interruttore magnetico reed segnala HIGH quando il magnete di accompagnamento è vicino.

interruttori

Esegui il programma:

 python test.py 

Dovresti vedere il LED acceso e un rapporto sullo schermo quando premi i due pulsanti e allontana il magnete dall'interruttore a lamella. Se non ricevi feedback quando premi i pulsanti, controlla di nuovo i circuiti e assicurati che tutto sia collegato come dovrebbe. Al termine del test, premere CTRL-C per interrompere il programma.

Ora possiamo mettere insieme un semplice programma per impostare, attivare e ripristinare il sensore della porta. Andremo oltre il codice in parti e spiegheremo brevemente cosa fa ogni parte, anche se vuoi vedere il codice completo scorrere verso il basso per vederlo presentato per intero.

Dobbiamo iniziare importando alcuni moduli:

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

Useremo il modulo Pygame per suonare la nostra musica. È fornito di serie con Raspbian Jessie ed è una grande libreria per tutto ciò che serve per creare giochi Python e molti altri progetti incredibili Come costruire un Bot di Twitter Raspberry Pi Come costruire un Twitter Bot di Raspberry Pi Twitter è il più grande repository mondiale di short messaggi da persone che non hanno nulla da dire - e ora anche tu puoi contribuire a quel progetto epico con un bot di Twitter automatizzato, alimentato dal tuo Raspberry ... Leggi altro.

Utilizzeremo una variabile chiamata active per decidere se il nostro sistema è attivo o meno. Lasciamo definire un paio di funzioni che faranno questo per noi:

 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 prima funzione crea una variabile denominata active e imposta su 0. Assegnando allo stato attivo un valore numerico significa che se si pianifica di aumentare gradualmente il programma in modo da avere diversi stati attivi, è possibile numerarli di conseguenza. Anche se potrebbe non essere la migliore programmazione Python al mondo, sarà più che sufficiente per questo progetto.

La seconda funzione quando viene chiamata controlla se il sistema è attivo (o attivo == 1 ). Se lo è, imposta il sistema su non attivo ( attivo == 0 ), spegne il LED e stampa sulla console. Se non lo è, ti dà un conto alla rovescia di 10 secondi per lasciare la stanza in cui il LED lampeggia, prima di rimanere acceso per mostrare che il sistema è attivo.

Ora possiamo definire una funzione che guarderà il nostro interruttore magnetico a lamella:

 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) 

Creiamo un'altra variabile chiamata play - questo è lì semplicemente per fermare il programma che tenta di avviare la riproduzione ripetutamente quando l'interruttore viene attivato.

All'interno del ciclo while, la prima istruzione if avvia la musica (di cui non ne abbiamo ancora nessuna, ma non preoccupatevi, arriverà). Consente solo l'avvio della musica se il sistema è attivo, l'interruttore reed è aperto e non sta già suonando.

La seconda istruzione if è per il nostro pulsante di uscita. Se viene premuto questo pulsante, la musica si interrompe e il programma si chiude.

La terza istruzione if serve per attivare o disattivare il sistema. La funzione time.sleep serve per impedire la lettura di più pulsanti quando viene premuto.

Ora è il momento di montare gli spilli di 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) 

Se hai fatto qualche esperimento con il Pi prima che questo ti sia familiare. L'argomento iniziale = GPIO.LOW nell'impostazione del pin 7 lo imposta su basso non appena viene inizializzato.

Ora possiamo chiamare la nostra funzione che imposterà il sistema a non essere attivo all'avvio del programma.

 activeSetup() 

Maestro di musica!

A questo punto, dovremmo iniziare a pensare alla musica da suonare. Puoi scegliere qualsiasi file musicale che desideri, ma per ora sceglieremo qualcosa a disposizione di tutti. Se guardi YouTube probabilmente conosci già la musica di Kevin MacLeod. Consente di scaricare un brano fantastico da lui chiamato "One-eyed Maestro". Questo, insieme a gran parte della musica sul suo sito, è concesso sotto licenza Creative Commons, e ci sono molte buone ragioni. Che cos'è Creative Commons, e dovresti usarlo? Che cos'è Creative Commons e dovresti usarlo? Creative Commons è un insieme di licenze che ti danno automaticamente il permesso di fare varie cose, come riutilizzare e distribuire il contenuto. Scopriamo di più su di esso e come usarlo. Leggi altro per utilizzare i contenuti con queste licenze per i tuoi progetti.

Tornando al nostro codice, abbiamo bisogno di avviare il mixer Pygame e caricare la nostra melodia.

 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 prima riga di questo blocco avvia il mixer Pygame . L'ultimo argomento tra parentesi è il buffer che controlla la latenza in cui viene riprodotto il suono. Se durante la riproduzione della musica si verifica una riproduzione discontinua, provare ad aumentare questo numero fino a 4096. Le impostazioni man mano che funzionano senza alcun problema su un Pi 3.

Se hai scaricato il tuo file musicale in una directory diversa nel tuo programma door.py, dovrai definire il percorso completo tra parentesi quando definisci la variabile del nome.

Ora tutto ciò che resta da fare è impostare un ciclo che ci aspetta per impostare il programma attivo o per uscirne.

 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() 

Questo ciclo while attende un input da uno dei due pulsanti e chiude o cambia lo stato in attivo di conseguenza. Se lo stato di attivo diventa 1, viene chiamata la funzione watchDoor che abbiamo definito in precedenza e la prossima volta che la porta si apre la nostra melodia suonerà. Chiamiamo anche GPIO.cleanup () per resettare i nostri pin all'uscita, che è generalmente una buona pratica per tutte le programmazioni sul Raspberry Pi.

Questo è tutto ciò che dobbiamo fare per far funzionare questo progetto, ecco il codice per intero:

 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() 

Se scorri quaggiù per prendere subito il codice completo, tieni presente che dovrai comunque scaricare la musica sul tuo Pi per farlo funzionare!

Ora dovresti avere una melodia del tema casa di benvenuto funzionante! Attacca l'interruttore a lamella alla tua porta e provalo. La danza imbarazzante è facoltativa ma consigliata.

Questo progetto copriva le basi per molte forme di monitoraggio domestico, sicurezza e automazione, e si sperava che fosse anche divertente!

Ora che sei arrivato così lontano, perché fermarti qui? Potresti aggiungere più tracce e fare in modo che il programma ne scelga uno a caso da una lista. È possibile aggiungere un relè Guida introduttiva di GPIO su un Raspberry Pi Guida introduttiva a GPIO su un Raspberry Pi Se anche voi l'Arduino fosse bello, aspettate di mettere le mani su un Raspberry Pi - queste cose sono incredibili. Oltre ad essere un computer perfettamente funzionante, hanno anche un ... Leggi di più e hanno altri oggetti da attivare all'entrata. Se hai un sistema di home music, perché non hai una sigla per ogni stanza?

Progetterai il tuo messaggio personale di benvenuto? Sei stato creativo con gli interruttori a lamella nella tua casa in altri modi? Se è così, lascia un commento su ciò che stai pianificando o hai già fatto nella sezione commenti qui sotto!

In this article