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

Riproduci il tuo tema personale quando entri nella stanza con Raspberry Pi / Fai da te

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, tranne l'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.
  • breadboard.
  • Cavi di collegamento.
  • Altoparlante per computer o simile.

Useremo il Raspberry Pi per suonare una canzone quando viene inserita la stanza, e disegnare un circuito con i pulsanti sulla nostra breadboard per attivarlo in ritardo e fermare 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 $ 34,49

Iniziare

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

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

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 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!

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

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 questa 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. genere 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 siti Web fantastici I 5 migliori siti web per imparare la programmazione Python I 5 migliori siti web per imparare la programmazione Python Vuoi imparare la programmazione Python? Ecco i modi migliori per imparare Python online, molti dei quali sono completamente gratuiti. Ulteriori informazioni 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:

# Questo codice è stato scritto per un articolo su www.MakeUseOf.com di Ian Buckley. importare RPi.GPIO come tempo di importazione 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) mentre True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Pulsante su GPIO 11") time.sleep (1) if (GPIO.input (13) == 1): print ("Button su GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Pulsante su 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.

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 delle prove, premere CTRL-C per fermare 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 in modo completo.

Dobbiamo iniziare importando alcuni moduli:

importare Rpi.GPIO come importazione GPIO pygame.mixer tempo di importazione 

Useremo il pygame modulo 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 di più .

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

def activeSetup (): globale attivo attivo = 0 stampa ("attualmente non attivo") def activeState (): globale attivo se attivo == 1: attivo = 0 GPIO.output (7, GPIO.LOW) stampa ("Attualmente non attivo ") elif attivo == 0: print (" Attivazione in 10 secondi ") per x nel 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 ("Attualmente attivo") else: return 

La prima funzione qui crea una variabile chiamata attivo, e imposta su 0. Dando 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 (): riproduzione globale = false mentre True: se attivo == 1 e GPIO.input (15) == 1 e riproduzione == False: playing = True pygame.mixer.music.play () se GPIO.input (13) == 1: print ("Stop button pressed: Exiting") pygame.mixer.music.stop () interrompe se GPIO.input (11) == 1: activeState () time.sleep (0.5) 

Creiamo un'altra variabile qui chiamata giocando - 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. Il time.sleep la funzione qui è quella di 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. Il iniziale = GPIO.LOW argomento 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 una melodia fantastica da lui chiamata “Maestro con un occhio solo”. 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 (nome) print ("Percorso caricato - "+ str (nome)) 

La prima riga di questo blocco avvia il pygame mixer. L'ultimo argomento tra parentesi è il buffer che controlla la latenza in cui viene riprodotto il suono. Se la riproduzione viene riprodotta in un secondo momento durante la riproduzione della tua musica, prova ad aumentare questo numero 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 sul tuo door.py programma, è necessario fornire il percorso completo all'interno delle parentesi quando si definisce la variabile 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 () interrompe if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (attivo == 1): watchDoor () interrompe 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, allora il watchDoor la funzione che abbiamo definito in precedenza viene chiamata 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 come importazione GPIO pygame.mixer tempo di importazione def activeSetup (): globale attivo attivo = 0 stampa ("attualmente non attivo") def activeState (): globale attivo se attivo == 1: attivo = 0 GPIO.output ( 7, GPIO.LOW) stampa ("Attualmente non attivo") elif attivo == 0: stampa ("Attivazione in 10 secondi") per x nell'intervallo (0,10): tempo GPIO.output (7, GPIO.HIGH) .sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) print ("Attualmente attivo") altro: return def watchDoor (): global giocando a play = False mentre True: se attivo == 1 e GPIO.input (15) == 1 e giocando == False: playing = True pygame.mixer.music.play () se GPIO.input (13) == 1 : print ("Stop button pressed: Exiting") pygame.mixer.music.stop () interrompe se 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-eye d Maestro.mp3 "pygame.mixer.music.load (nome) stampa (" Traccia caricata - "+ str (nome)) mentre True: if (GPIO.input (13) == 1): stampa (" Pulsante di interruzione premuto : Exiting ") pygame.mixer.music.stop () interrompe if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (attivo == 1): watchDoor () interrompe GPIO. pulire() 

Se scorri verso il basso qui per prendere subito il codice completo, tieni presente che dovrai comunque scaricare la musica sul tuo Pi per farla 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 spera, 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 avere 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!

Scopri di più su: Domotica, Raspberry Pi.