Publicitate

Ați dorit vreodată să ajungeți acasă la o întâmpinare personală? Cu un Raspberry Pi și câteva componente simple, puteți! În acest proiect simplu, vom folosi un comutator stuf pentru a declanșa o melodie tematică atunci când o ușă este deschisă. Vom folosi un Raspberry Pi ca controller aici, deși puteți folosi aproape oricare alt microcontroler Microcontrolere 5 USD: Arduino, Zmeură Pi Zero sau NodMCU?Se întâmpla în cazul în care, dacă vrei să iei un computer, ar trebui să remorcizi casa pentru a o plăti. Acum, puteți obține unul pentru un Abraham Lincoln. Citeste mai mult pentru acest proiect folosind același circuit. Iată o demonstrație.

Vei avea nevoie

Probabil că veți deține deja toate piesele de care aveți nevoie pentru a face acest lucru, cu excepția comutatorului de stuf, care este în jur de 2-3 USD, sau puteți obține un pachet de 5 pentru puțin peste 8 USD aici.

  • Un zmeură Pi (orice model va funcționa pentru asta).
  • 1 x 220 Ohm rezistor.
  • 1 x 1K rezistor Ohm.
  • Rezistență de 3 x 10 K Ohm.
  • instagram viewer
  • 1 x Comutator cu stuf magnetic.
  • 1 x LED.
  • 2 x Comutator cu buton apăsat.
  • Breadboard.
  • Cabluri de conectare.
  • Difuzor computer sau similar.

Vom folosi Raspberry Pi pentru a reda o melodie la intrarea în cameră și vom proiecta un circuit cu butoane pe placa noastră de panou pentru a o activa cu întârziere și pentru a opri programul.

Acest proiect, deși a fost realizat mai ales pentru distracție, acoperă elementele de bază pentru multe aplicații din Automatizare DIY Ghid de automatizare acasă cu zmeură Pi și ArduinoPiața automatizării casnice este inundată cu sisteme de consum scumpe, incompatibile între ele și costisitoare de instalat. Dacă aveți un Raspberry Pi și un Arduino, puteți obține același lucru la ... Citeste mai mult Si deasemenea DIY securitate la domiciliu Căutați o soluție de sistem de securitate pentru casă? Încercați una dintre acesteaÎn era tehnologiei digitale și a hardware-ului conectat mereu, crearea unui sistem de securitate la domiciliu ar trebui să transcende arta de a pune o casetă în formă de alarmă pe perete. Citeste mai mult

Noțiuni de bază

Să începem să ne facem circuitul. Asigurați-vă că dispozitivul dvs. Pi nu este alimentat și configurați-vă astfel circuitul:

Sediul fiscal adnotat de frictare

LED-ul este conectat la pinul 7 al pi. Cele două întrerupătoare cu buton apăsat sunt atașate la pinii 11 și 13, iar comutatorul stuf se conectează la pinul 15. Puterea noastră merge la pinul 1 (3v3) și pinul 6 (Gnd).

diagrama de ac

Asigurați-vă că pentru a verifica totul este exact în locul potrivit.

În timp ce testați acest proiect, vă poate ajuta să mențineți comutatorul stufului în fața dvs., astfel încât să îl puteți activa sau dezactiva cu ușurință. În acest caz, comutatorul de stuf a fost deja instalat deasupra ușii. Odată ce proiectul dvs. este în funcțiune, puteți atașa temporar comutatorul la ușa dvs. utilizând bandă sau dacă vă simțiți mai încrezători, îl puteți atașa mai permanent pentru utilizare în viitor Proiecte!

s-a instalat comutatorul de stuf

Conectați ieșirea jack jack de 3.5 mm la sistemul de difuzoare. Odată ce totul este pus împreună, ar trebui să arate așa:

configurare întreagă corectă

Rețineți că panoul de panou utilizat aici are șinele de alimentare invers în diagrama Fritzing de mai sus.

Acum alimentați Pi-ul și accesați-l cu SSH, astfel încât să putem accesa terminalul. Dacă nu sunteți sigur cum puteți face acest lucru, acest ghid Configurarea zmeurului Pi pentru utilizare fără cap cu SSHRaspberry Pi poate accepta comenzi SSH atunci când este conectat la o rețea locală (fie prin Ethernet, fie prin Wi-Fi), permițându-vă să o configurați cu ușurință. Avantajele SSH depășesc ecranizarea zilnică ... Citeste mai mult vă poate ajuta. Dacă utilizați Raspberry Pi cu un monitor, mouse și tastatură, săriți acest pas și deschideți terminalul.

Înainte de a începe, merită să verificați dacă sunteți la curent. Tip Actualizare sudo apt-get în terminal.

Acum putem trece la conversația Pi cu circuitul nostru.

Testarea configurației noastre

Pentru început, permiteți verificarea circuitului nostru folosind un program simplu. Dacă sunteți sigur că ați conectat totul până acum, puteți sări peste acest pas, deși l-aș recomanda, deoarece poate salva durerile de cap mai târziu.

Dacă nu ați mai programat niciodată în Python și vă simțiți puțin amăgiți, există o mulțime de site-uri web grozave Cele mai bune 5 site-uri web pentru a învăța programarea PythonVrei să înveți programarea Python? Iată cele mai bune metode de a învăța Python online, multe dintre ele fiind complet gratuite. Citeste mai mult asta te poate ajuta să începi.

În terminal, creați un script nou:

nano test.py

Odată deschis, adăugați acest cod în fișier și apăsați Ctrl-C pentru a renunța, urmând dialogul de salvare:

#Acest cod a fost scris pentru un articol pe www. MakeUseOf.com de Ian Buckley. import RPi. GPIO ca GPIO. timp de import. 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) în timp ce True: GPIO.output (7, GPIO.HIGH) if (GPIO.input (11) == 1): print ("Buton on GPIO 11") time.sleep (1 ) dacă (GPIO.input (13) == 1): print ("Buton pe GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Buton pe GPIO 15") timp. adormit (1) GPIO.cleanup ()

Acest cod citește valoarea butoanelor și se imprimă pe ecran atunci când se schimbă. Cele două butoane cu apăsare au rezistențe în jos, astfel încât acestea raportează HIGH atunci când sunt apăsate. Comutatorul cu magnet de trestie raportează HIGH de fiecare dată când magnetul său însoțitor este aproape.

întrerupătoare

Rulați programul:

testul python.py

Ar trebui să vedeți LED-ul aprins și un raport la ecran când apăsați cele două butoane și trageți magnetul de pe comutatorul stufului. Dacă nu primiți feedback la apăsarea butoanelor, verificați din nou circuitul și asigurați-vă că totul este conectat așa cum trebuie. După ce ați terminat testarea, apăsați CTRL-C pentru a opri programul.

Test

Acum putem pune laolaltă un program simplu de setat, declanșat și resetat senzorul ușii noastre. Vom trece codul în părți și vom explica pe scurt ce face fiecare parte, deși dacă doriți să vedeți codul complet defilați în jos pentru a-l vedea prezentat integral.

Trebuie să începem prin importul unor module:

import Rpi. GPIO ca GPIO. import pygame.mixer. timp de import. 

Vom folosi pygame modul pentru a reda muzica noastră. Vine la standard cu Raspbian Jessie și este o bibliotecă excelentă pentru tot ce ai nevoie pentru a face jocuri Python și multe alte proiecte uimitoare Cum să construiți un bot de zmeură pe TwitterTwitter este cel mai mare depozit mondial de mesaje scurte de la oameni fără nimic de spus - și acum de asemenea, puteți contribui la acel proiect epic cu un bot automat Twitter, alimentat de dvs. Zmeură... Citeste mai mult .

Vom folosi o variabilă numită activ pentru a decide dacă sistemul nostru este activ sau nu. Să definim câteva funcții care vor face acest lucru pentru noi:

def activeSetup (): global activ activ = 0 print ("În prezent nu este activ") def activeState (): global activ dacă este activ == 1: activ = 0 GPIO.output (7, GPIO.LOW) print ("În prezent nu este activ") elif active == 0: print ("Activarea în 10 secunde") pentru x în intervalul (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) time.sleep (0,5) activ = 1 GPIO.output (7, GPIO.HIGH) print ("În prezent Activ ") altceva: retur. 

Prima funcție aici creează o variabilă numită activ, și îl stabilește pe 0. Obținerea unei valori numerice statului activ înseamnă că dacă intenționați să extindeți mai târziu programul pentru a avea diferite stări active, le puteți numera în consecință. Deși este posibil să nu fie cea mai bună programare Python din lume, va fi mai mult decât suficient pentru acest proiect.

A doua funcție atunci când este apelată verifică dacă sistemul este activ (sau activ == 1). Dacă este, setează sistemul să nu fie activ (activ == 0), oprește ledul și se imprimă la consolă. Dacă nu este, vă oferă un numărătoare inversă de 10 secunde pentru a părăsi camera în care LED-ul clipește, înainte de a rămâne aprins pentru a arăta că sistemul este activ.

Acum putem defini o funcție care va urmări comutatorul nostru de magnet reed:

def watchDoor (): joc global de joc = False while True: if active == 1 și GPIO.input (15) == 1 și joc == False: play = True pygame.mixer.music.play () dacă GPIO.input (13) == 1: print („Butonul Stop apăsat: Ieșire”) pygame.mixer.music.stop () break dacă GPIO.input (11) == 1: activeState () time.sleep (0,5)

Creăm aici o altă variabilă numită joc - aceasta este doar pentru a opri programul încercând să înceapă să joace în mod repetat atunci când comutatorul este declanșat.

În interiorul buclei de timp, prima afirmație dacă începe muzica (pe care încă nu o avem, dar nu vă faceți griji, va veni). Acesta permite pornirea muzicii numai dacă sistemul este activ, comutatorul stuf este deschis și nu se redă deja.

A doua declarație dacă este pentru butonul nostru de ieșire. Dacă este apăsat acest buton, muzica se oprește și programul iese.

A treia instrucțiune dacă este de a comuta dacă sistemul este activ sau nu. time.sleep funcția aici este de a preveni citirea mai multor butoane atunci când este apăsat.

Acum este timpul să configurați pinii lui Pi.

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

Dacă ați făcut vreun experiment cu Pi înainte să vă fie familiar. = Inițial GPIO.LOW argumentul din configurația pinului 7 îl stabilește la scădere imediat ce este inițializat.

Acum putem apela funcția noastră care va seta sistemul să nu fie activ la începerea programului.

activeSetup ()

Maestro de muzică!

În acest moment, ar trebui să începem să ne gândim la muzica de redat. Puteți alege orice fișier muzical doriți, dar noi vom alege ceva disponibil pentru toți deocamdată. Dacă vizionați YouTube, probabil că sunteți deja familiarizați cu muzica lui Kevin MacLeod. Vă permite să descărcați un ton fantastic pe care l-a sunat „Maestro cu un ochi”. Aceasta, împreună cu o mare parte din muzica de pe site-ul său, este licențiată sub Creative Commons, și există multe motive bune Ce este Creative Commons și utilizarea necomercială?Ce este Creative Commons? Ce înseamnă „utilizare necomercială”? Aflați mai multe despre licențele Creative Commons și modul în care funcționează. Citeste mai mult să utilizați conținut cu aceste licențe pentru proiectele dvs.

wget

Înapoi în codul nostru, trebuie să pornim mixerul Pygame și să ne încărcăm tonul.

pygame.mixer.init (44100, -16,21024) pygame.mixer.music.set_volume (1.0) nume = "Maestro.mp3 cu ochi" pygame.mixer.music.load (nume) print ("track Loaded -" + str (nume))

Prima linie a acestui bloc inițiază pygame mixer. Ultimul argument din paranteze este bufferul care controlează latența în care este redat sunetul. Dacă înregistrați o redare rapidă mai târziu când se redă muzica, încercați să creșteți acest număr la 4096. Setările, deoarece acestea funcționează fără nicio problemă la un Pi 3.

Dacă ați descărcat fișierul dvs. muzical într-un director diferit de al dvs. door.py program, va trebui să furnizați calea completă în paranteze atunci când definiți variabila de nume.

Acum tot ce mai rămâne de făcut este să configurați o buclă care așteaptă să setăm programul activ sau să îl ieșim.

while True: if (GPIO.input (13) == 1): print („Butonul Stop apăsat: Ieșire”) pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (activ == 1): watchDoor () break GPIO.cleanup ()

Aceasta în timp ce bucla așteaptă o intrare de la oricare dintre butoane și se oprește sau schimbă starea pentru a activa în consecință. Dacă starea activă devine 1, atunci watchDoor funcția pe care am definit-o mai devreme este apelată și data viitoare când ușa va deschide tonul nostru va juca. De asemenea, sunăm GPIO.cleanup () pentru a ne reseta pinii la ieșire, ceea ce este, în general, o bună practică pentru toate programările pe Raspberry Pi.

Este tot ceea ce trebuie să facem pentru ca acest proiect să fie pus în funcțiune, iată codul complet:

import RPi. GPIO ca GPIO. import pygame.mixer. import time def activeSetup (): global active active = 0 print ("În prezent nu este activ") def activeState (): global active dacă este activ == 1: activ = 0 GPIO.output (7, GPIO.LOW) print ("În prezent Nu Active ") elif active == 0: print (" Activare în 10 secunde ") pentru x în interval (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) time.sleep (0,5) activ = 1 GPIO.output (7, GPIO.HIGH) print („Actualmente Active”) altceva: return def watchDoor (): redare globală redare = False while True: if active == 1 și GPIO.input (15) == 1 și redarea == False: joc = Adevărat pygame.mixer.music.play () dacă GPIO.input (13) == 1: print („Butonul Stop apăsat: Ieșire”) pygame.mixer.music.stop () break dacă GPIO.input (11) == 1: activeState () time.sleep (0,5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, inițial = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) activeSetup () pygame.mixer.init (44100, -16,21024) pygame.mixer.music.set_volume (1.0) nume = "Maestro.mp3 cu ochi" pygame.mixer.music.load (nume) print ("track Loaded -" + str (name)) while True: if (GPIO.input (13) == 1): print ("Butonul Stop apăsat: Ieșire") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0,5) if (activ == 1): watchDoor () break GPIO.cleanup ()

Dacă ați defilat aici pentru a prelua imediat codul complet, rețineți că va trebui totuși să descărcați muzica pe Pi pentru ca acesta să funcționeze!

Acum ar trebui să aveți o melodie funcțională cu tema de bun venit! Atașează comutatorul stufului la ușa ta și încearcă-l. Dansul jenant este opțional, dar recomandat.

Acest proiect a acoperit elementele de bază pentru multe forme de monitorizare a casei, securitate și automatizare, și sperăm că a fost și distractiv!

Acum că ați ajuns atât de departe, de ce să vă opriți acolo? Puteți adăuga mai multe piese și a face ca programul să aleagă una la întâmplare dintr-o listă. Ai putea adăugați un releu Noțiuni introductive cu GPIO pe o zmeură PiDacă deși Arduino a fost mișto, abia așteptați să vă puneți mâna pe un Zmeură Pi - aceste lucruri sunt uimitoare. Pe lângă faptul că sunt un computer complet funcțional, acestea au și ... Citeste mai mult și au alte obiecte să fie declanșate la intrare. Dacă aveți un sistem de muzică acasă, de ce să nu aveți o melodie tematică pentru fiecare cameră?

luminile releului

Vei proiecta propriul mesaj personal de bun venit? Ai fost inventiv cu comutatoare cu stuf în casa ta în alte moduri? Dacă da, lăsați un comentariu despre ceea ce intenționați sau ați făcut deja în secțiunea de comentarii de mai jos!

Ian Buckley este un jurnalist independent, muzician, interpret și producător video care locuiește la Berlin, Germania. Când nu scrie sau pe scenă, ticăiește cu electronice sau coduri DIY, în speranța de a deveni un om de știință nebun.