Annuncio pubblicitario

Hai mai desiderato arrivare a casa per un benvenuto personale? Con un Raspberry Pi e alcuni semplici componenti, puoi farlo! In questo semplice progetto useremo un interruttore reed per attivare una melodia a tema quando viene aperta una porta. Useremo un Raspberry Pi come controller qui, anche se potresti usarne quasi tutti altro microcontrollore $ 5 Microcontrollori: Arduino, Raspberry Pi Zero o NodeMCU?In passato, se si voleva ottenere un computer, si sarebbe dovuto riabilitare la propria casa per pagarla. Ora, puoi averne uno per un Abraham Lincoln. Leggi di più per questo progetto usando lo stesso circuito. Ecco una demo.

Avrai bisogno

Probabilmente avrai già tutte le parti necessarie per farlo, tranne l'interruttore reed, 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 resistenza da 1K Ohm.
  • Resistenza 3 x 10K Ohm.
  • 1 x interruttore reed magnetico.
  • instagram viewer
  • 1 x LED.
  • 2 x interruttore a pulsante.
  • Basetta.
  • Cavi di aggancio.
  • Altoparlante per computer o simile.

Useremo il Raspberry Pi per riprodurre un brano quando si entra nella stanza e progetteremo un circuito con pulsanti sulla nostra breadboard per attivarlo in ritardo e interrompere il programma.

Questo progetto, sebbene realizzato principalmente per divertimento, copre le basi di molte applicazioni in Domotica fai-da-te Guida alla domotica con Raspberry Pi e ArduinoIl mercato dell'automazione domestica è invaso da costosi sistemi di consumo, incompatibili tra loro e costosi da installare. Se hai un Raspberry Pi e un Arduino, puoi praticamente ottenere la stessa cosa a ... Leggi di più e anche Sicurezza domestica fai-da-te Alla ricerca di una soluzione di sistema di sicurezza domestica fai-da-te? Prova uno di questiNell'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ù

Iniziare

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

Fritzing HQ annotato

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 potenza va al pin 1 (3v3) e al pin 6 (Gnd).

diagramma a spillo

Assicurati di controllare che tutto sia esattamente nel posto giusto.

Durante il test di questo progetto, può essere utile mantenere il reed switch di fronte a te in modo da poterlo attivare o disattivare facilmente. In questo caso l'interruttore reed era già installato sopra la porta. Una volta che il progetto è attivo e in esecuzione, è possibile collegare temporaneamente l'interruttore alla porta utilizzando nastro o, se ti senti più sicuro, puoi attaccarlo in modo permanente per utilizzarlo in futuro progetti!

interruttore reed installato

Collega l'uscita jack da 3,5 mm del tuo Pi al tuo sistema di altoparlanti. Una volta che tutto è messo insieme, dovrebbe assomigliare a questo:

tutta la configurazione è corretta

Nota che la breadboard usata qui ha le barre di alimentazione al contrario del diagramma Fritzing sopra.

Ora accendi il tuo Pi e accedilo usando SSH in modo che possiamo accedere al terminale. Se non sei sicuro di come farlo, questa guida Configurazione di Raspberry Pi per l'uso senza testa con SSHRaspberry Pi può accettare comandi SSH quando è collegato a una rete locale (tramite Ethernet o Wi-Fi), consentendo di configurarlo facilmente. I benefici di SSH vanno oltre il turbare lo screening quotidiano ... Leggi di più posso aiutarti. Se stai utilizzando Raspberry Pi con monitor, mouse e tastiera, salta questo passaggio e apri il terminale.

Prima di iniziare, vale la pena verificare se si è aggiornati. genere sudo apt-get update nel terminale.

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

Test della nostra installazione

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

Se non hai mai programmato in Python prima e ti senti un po 'scoraggiato, ce ne sono molti ottimi siti web I 5 migliori siti Web per imparare la programmazione PythonVuoi imparare la programmazione Python? Ecco i modi migliori per imparare Python online, molti dei quali sono completamente gratuiti. Leggi di più che può 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 la finestra di dialogo di salvataggio:

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

Questo codice legge il valore dei pulsanti e stampa sullo schermo quando cambiano. I due pulsanti hanno resistenze pull down, quindi riportano ALTO quando vengono premuti. L'interruttore del magnete reed segnala ALTO ogni volta che 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 allontani il magnete dall'interruttore reed. Se non ricevi feedback quando premi i pulsanti, controlla di nuovo i tuoi circuiti e assicurati che tutto sia collegato come dovrebbe essere. Al termine del test, premere CTRL-C per interrompere il programma.

test

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

Dobbiamo iniziare importando alcuni moduli:

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

Useremo il pygame modulo per riprodurre la nostra musica. Viene fornito di serie con Raspbian Jessie ed è un'ottima libreria per tutto ciò di cui hai bisogno per realizzare giochi Python e molti altri progetti fantastici Come costruire un bot Twitter di Raspberry PiTwitter è il più grande archivio al mondo di brevi messaggi di persone che non hanno nulla da dire - e ora anche tu puoi contribuire a quel progetto epico con un bot Twitter automatizzato, alimentato dal tuo Lampone... Leggi di più .

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

def activeSetup (): global active active = 0 print ("Attualmente non attivo") def activeState (): global active se active == 1: active = 0 GPIO.output (7, GPIO.LOW) print ("Attualmente non attivo") elif active == 0: print ("Attivazione in 10 secondi") per x nell'intervallo (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) attivo = 1 GPIO.output (7, GPIO.HIGH) stampa ("Attualmente Attivo ") else: return. 

La prima funzione qui crea una variabile denominata attivoe lo imposta su 0. Assegnare allo stato attivo un valore numerico significa che se si prevede di ridimensionare 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). In tal caso, 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 reed:

def watchDoor (): riproduzione globale giocando = False mentre True: se attivo == 1 e GPIO.input (15) == 1 e riproduzione == False: riproduzione = True pygame.mixer.music.play () se GPIO.input (13) == 1: stampa ("Pulsante di arresto premuto: in uscita") pygame.mixer.music.stop () si interrompe se GPIO.input (11) == 1: activeState () time.sleep (0.5)

Creiamo un'altra variabile qui chiamata giocando - questo è semplicemente per fermare il programma che prova a iniziare a giocare ripetutamente quando l'interruttore è attivato.

All'interno del ciclo while, la prima istruzione if inizia la musica (di cui non abbiamo ancora nessuno, ma non preoccuparti, arriverà). Consente l'avvio della musica solo se il sistema è attivo, l'interruttore reed è aperto e non è già in riproduzione.

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

La terza istruzione if serve a cambiare se il sistema è attivo o meno. Il time.sleep qui la funzione è di impedire la lettura di più pulsanti quando viene premuto.

Ora è il momento di impostare i pin di Pi.

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

Se hai già fatto qualche esperimento con il Pi prima, questo dovrebbe esserti familiare. Il = Iniziali GPIO.LOW l'argomento nella configurazione del pin 7 lo imposta su basso non appena viene inizializzato.

Ora possiamo chiamare la nostra funzione che imposterà il sistema in modo che non sia 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 desideri, ma per ora sceglieremo qualcosa di disponibile per tutti. Se guardi YouTube probabilmente hai già familiarità con 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 in licenza da Creative Commons, e ci sono molte buone ragioni Che cos'è Creative Commons e l'uso non commerciale?Che cos'è Creative Commons? Che cosa significa "uso non commerciale"? Scopri le licenze Creative Commons e il loro funzionamento. Leggi di più per utilizzare i contenuti con queste licenze per i tuoi progetti.

wget

Tornando al nostro codice, dobbiamo 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 ("Traccia caricata -" + 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 si verifica una riproduzione discontinua in seguito durante la riproduzione della musica, provare ad aumentare questo numero a 4096. Le impostazioni così come sono funzionano senza problemi su un Pi 3.

Se hai scaricato il tuo file musicale in una directory diversa dalla tua door.py programma, sarà necessario fornire il percorso completo tra parentesi quando si definisce la variabile del nome.

Ora non resta che impostare un loop che ci aspetta per impostare il programma attivo o per uscire da esso.

while True: if (GPIO.input (13) == 1): print ("Pulsante Stop premuto: Uscita") 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 attivo diventa 1, quindi il watchDoor la funzione che abbiamo definito in precedenza viene chiamata e la prossima volta che si aprirà la porta suonerà la nostra melodia. Chiamiamo anche GPIO.cleanup () ripristinare i nostri pin all'uscita, che è generalmente una buona pratica per tutta la programmazione su Raspberry Pi.

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

importare RPi. GPIO come GPIO. import pygame.mixer. import time def activeSetup (): global active active = 0 print ("Attualmente non attivo") def activeState (): global active se active == 1: active = 0 GPIO.output (7, GPIO.LOW) print ("Attualmente Non Attivo ") elif active == 0: stampa (" Attivazione in 10 secondi ") per x nell'intervallo (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) attivo = 1 GPIO.output (7, GPIO.HIGH) stampa ("Attualmente attivo") altro: restituisce def watchDoor (): riproduzione globale = Falso mentre vero: se attivo == 1 e GPIO.input (15) == 1 e riproduzione == Falso: giocando = True pygame.mixer.music.play () se GPIO.input (13) == 1: stampa ("Pulsante di arresto premuto: in uscita") pygame.mixer.music.stop () si interrompe se GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, iniziale = 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 (nome) print ("Traccia caricata -" + str (nome)) mentre True: if (GPIO.input (13) == 1): print ("Pulsante Stop premuto: Uscita") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()

Se scorri verso il basso qui 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 di benvenuto a casa ben funzionante! Collega l'interruttore reed alla tua porta e provalo. La danza imbarazzante è facoltativa ma consigliata.

Questo progetto ha coperto le basi di molte forme di monitoraggio domestico, sicurezza e automazione, e spero sia stato anche divertente!

Ora che sei arrivato così lontano, perché fermarsi qui? È possibile aggiungere più brani e fare in modo che il programma ne scelga uno a caso da un elenco. Potresti aggiungere un relè Introduzione a GPIO su un Raspberry PiSe pensi che Arduino fosse bello, aspetta solo 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 fare in modo che altri oggetti vengano attivati ​​all'entrata. Se hai un sistema musicale domestico, perché non avere un tema musicale per ogni stanza?

luci a relè

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

Ian Buckley è un giornalista freelance, musicista, performer e produttore video che vive a Berlino, in Germania. Quando non sta scrivendo o sul palco, armeggia con l'elettronica fai-da-te o il codice nella speranza di diventare uno scienziato pazzo.