Oglas

Ste si kdaj želeli priti domov na osebno dobrodošlico? Z Raspberry Pi in nekaj preprostimi komponentami lahko! V tem preprostem projektu bomo uporabili trstično stikalo, da sprožimo napev teme, ko se odprejo vrata. Pri tem bomo uporabljali Raspberry Pi kot kontroler, čeprav bi ga lahko uporabili skoraj vsi drugi mikrokontroler 5 $ Mikrokontrolerji: Arduino, Raspberry Pi Zero ali NodeMCU?Včasih je šlo za to, da bi morali, če bi želeli dobiti računalnik, hišo ponovno plačati, da bi jo plačali. Zdaj jo lahko dobite za Abrahama Lincolna. Preberi več za ta projekt z istim vezjem. Tu je predstavitev predstavitve.

Boste potrebovali

Verjetno boste že imeli vse dele, ki jih potrebujete za to, razen stikala trstike, ki znaša približno 2-3 USD, ali pa paket 5 dobite za nekaj več kot 8 USD tukaj.

  • Raspberry Pi (katerikoli model bo delal za to).
  • 1 x 220 Ohm upor.
  • 1 x 1K Ohmov upor.
  • 3 x 10K Ohmov upor.
  • 1 x magnetno stikalo.
  • 1 x LED.
  • 2 x stikalo s tipko.
  • Krušna plošča.
  • Kabli za priključitev.
  • Računalniški zvočnik ali podobno.

Raspberry Pi bomo uporabili za predvajanje skladbe ob vstopu v sobo in oblikovali vezje z gumbi na naši plošči, da bi ga aktivirali ob zakasnitvi in ​​ustavili program.

Ta projekt, ki je večinoma namenjen zabavi, pokriva osnove za številne aplikacije v Naredite domačo avtomatizacijo Vodnik za domačo avtomatizacijo z malino Pi in ArduinoTrg domače avtomatizacije je preplavljen z dragimi potrošniškimi sistemi, ki so med seboj nezdružljivi in ​​drage za namestitev. Če imate malino Pi in Arduino, lahko v bistvu dosežete isto na ... Preberi več in tudi Naredite domačo varnost Iščete rešitev DIY za domači varnostni sistem? Poskusite enega od tehV dobi digitalne tehnologije in vedno povezane strojne opreme bi morala vzpostavitev varnostnega sistema za dom preseči umetnost postavljanja alarmne škatle na steno. Preberi več

Uvod

Začnimo z izdelavo našega vezja. Prepričajte se, da vaš Pi ni izklopljen, in nastavite vezje takole:

Zamrznitev popisanih HQ

LED je na našem pi pi priključen na pin 7. Dve stikalni tipki sta pritrjeni na zatiča 11 in 13, trstično stikalo pa se priklopi na nož 15. Naša moč gre za pin 1 (3v3) in pin 6 (Gnd).

pin diagram

Prepričajte se, da je vse na pravem mestu.

Medtem ko preizkušate ta projekt, bo morda pomagalo, da bo vaše stikalo trst pred vami, tako da ga lahko preprosto vklopite ali izklopite. V tem primeru je bilo trstično stikalo že nameščeno nad vrati. Ko se vaš projekt zažene, lahko začasno priklopite stikalo na vrata traku ali če se počutite bolj samozavestni, ga lahko trajneje pripnete za uporabo v prihodnosti projekti!

trstično stikalo nameščeno

Priključite 3,5-milimetrski izhod priključka Pi s sistemom zvočnikov. Ko je vse skupaj sestavljeno, mora izgledati nekako takole:

celotna nastavitev pravilna

Upoštevajte, da ima plošča, ki je tu uporabljena, napajanje v nasprotni smeri do zgornjega diagrama Fritzing.

Zdaj vklopite svoj Pi in do njega dostopajte s pomočjo SSH, da bomo lahko dostopali do terminala. Če niste prepričani, kako to storiti, ta vodnik Nastavitev vašega Raspberry Pi za brezglavo uporabo s SSHRaspberry Pi lahko sprejme ukaze SSH, ko jih povežete z lokalnim omrežjem (bodisi prek Etherneta ali Wi-Fi-ja), kar vam omogoča enostavno nastavitev. Prednosti SSH presegajo vznemirjanje dnevnega presejanja ... Preberi več lahko vam pomaga. Če uporabljate svoj Raspberry Pi z monitorjem, miško in tipkovnico, preskočite ta korak in odprite terminal.

Preden začnete, je vredno preveriti, ali ste na tekočem. Vtipkajte sudo apt-get update v terminal.

Zdaj lahko nadaljujemo s pogovorom našega Pi-ja z vezjem.

Preizkušanje naše nastavitve

Za začetek naj preverimo naše vezje s preprostim programom. Če ste prepričani, da ste vse do zdaj povezali pravilno, lahko ta korak preskočite, čeprav bi vam priporočal, saj lahko kasneje prihranite glavobole.

Če še nikoli niste programirali Python-a in se počutite nekoliko prestrašeni, obstaja vrsta odlična spletna mesta 5 najboljših spletnih mest za učenje programiranja PythonaSe želite naučiti programiranja Pythona? Tukaj je najboljših načinov za učenje Pythona na spletu, od katerih je večina popolnoma brezplačnih. Preberi več ki vam lahko pomagajo začeti.

V terminalu ustvarite nov skript:

nano test.py

Ko je odprt, dodajte to kodo v datoteko in pritisnite Ctrl-C, da končate, po dialogu za shranjevanje:

#Ta koda je bila napisana za članek na spletni strani www. MakeUseOf.com avtor Ian Buckley. uvoz RPi. GPIO kot GPIO. čas uvoza. GPIO.setwarnings (napačno) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN), medtem ko je True: GPIO.output (7, GPIO.HIGH), če (GPIO.input (11) == 1): print ("Gumb za GPIO 11") time.sleep (1 ) če (GPIO.input (13) == 1): natisni ("Gumb v GPIO 13") time.sep (1) če (GPIO.input (15) == 1): print ("Gumb za GPIO 15") čas. spanec (1) GPIO.cleanup ()

Ta koda bere vrednost gumbov in se pri spreminjanju natisne na zaslon. Oba gumba imata upornike navzdol, zato ob pritisku poročata VISOKO. Stikalo trdega magneta poroča VISOKO, kadar je njegov spremljajoč magnet blizu.

stikala

Zaženite program:

python test.py

Ko pritisnete dva gumba in potegnete magnet stran od svojega trstičnega stikala, bi morali videti lučko LED in poročati na zaslon. Če med pritiskanjem gumbov ne dobite povratnih informacij, ponovno preverite vezje in se prepričajte, ali je vse povezano tako, kot mora biti. Ko končate s preskušanjem, pritisnite CTRL-C ustaviti program.

test

Zdaj lahko sestavimo preprost program za nastavitev, sprožitev in ponastavitev tipala vrat. Po delih bomo pregledali kodo in na kratko razložili, kaj ima vsak del, čeprav se želite, da se celotna koda pomakne navzdol, da jo vidite v celoti.

Začeti moramo z uvozom nekaterih modulov:

uvoz Rpi. GPIO kot GPIO. uvoz pygame.mixer. čas uvoza. 

Uporabljali bomo Pigame modul za predvajanje naše glasbe. V kompletu je Raspbian Jessie in je odlična knjižnica za vse, kar potrebujete za izdelavo iger Python in mnogih drugih neverjetni projekti Kako zgraditi malino Pi Twitter botTwitter je največje svetovno skladišče kratkih sporočil ljudi, ki jim nimajo kaj povedati - in zdaj lahko tudi vi prispevate k temu epskemu projektu z avtomatiziranim Twitter-jevim botom, ki ga poganja vaš Malina ... Preberi več .

Uporabili bomo spremenljivko imenovano aktivno da se odločimo, ali je naš sistem aktiven ali ne. Določimo nekaj funkcij, ki bodo to storile za nas:

def activeSetup (): globalno aktivno aktivno = 0 natisni ("trenutno ni aktivno") def activeState (): globalno aktivno, če je aktivno == 1: aktivno = 0 Tiskanje GPIO.output (7, GPIO.LOW) ("trenutno ni aktivno") elif active == 0: tiskanje ("aktiviranje v 10 sekundah") za x v območju (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) time.sep (0,5) active = 1 GPIO.output (7, GPIO.HIGH) natisni ("Trenutno Aktivno ") drugo: vrni se. 

Prva funkcija tukaj ustvari spremenljivko z imenom aktivno, in ga nastavi na 0. Če aktivnemu stanju dodate številčno vrednost, pomeni, da če nameravate pozneje povečati svoj program tako, da ima različna aktivna stanja, jih lahko ustrezno oštevilčite. Čeprav morda ni najboljši program Python na svetu, bo za ta projekt več kot dovolj.

Druga funkcija pri klicu preverja, ali je sistem aktiven (ali aktivno == 1). Če je, sistem nastavi, da ne deluje (aktivno == 0), izklopi LED in natisne na konzolo. Če ni, vam daje 10 sekundno odštevanje, da zapustite sobo, v kateri utripa LED, preden ostanejo vključeni in pokažejo, da je sistem aktiven.

Zdaj lahko določimo funkcijo, ki bo gledala naše trstično magnetno stikalo:

def watchDoor (): globalno igranje igra = napačno, medtem ko je resnično: če je aktivno == 1 in GPIO.input (15) == 1 in igra == napačno: igra = res pygame.mixer.music.play () če je GPIO.input (13) == 1: natisni ("gumb za ustavitev pritisk: Izhod") pygame.mixer.music.stop () prekinitev, če je GPIO.input (11) == 1: activeState () time.sleep (0,5)

Tu ustvarimo še eno spremenljivko, imenovano igranje - to je preprosto zato, da program ustavi, da bi se poskusil začeti večkrat predvajati, ko se stikalo sproži.

Znotraj zanke, prva, če izjava začne glasbo (ki je še nimamo, a ne skrbi, prihaja). Glasba se začne samo, če je sistem aktiven, je stikalo Reed odprto in se že ne predvaja.

Drugi, če je izjava za naš izhodni gumb. Če pritisnete ta gumb, se glasba ustavi in ​​program zaide.

Tretja, če je izjava za preklop tega, ali je sistem aktiven ali ne. The čas.spi Tukaj je funkcija, da preprečimo več branja gumba, ko pritisnemo.

Zdaj je čas, da nastavite Pi-jeve zatiče.

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

Če ste že kdaj poskusili s Pi, vam je to treba poznati. The začetno = GPIO.LOW argument v nastavitvi pin 7 postavi na nizko, takoj ko se sproži.

Zdaj lahko pokličemo našo funkcijo, ki bo sistem ustavila, da ob zagonu programa ne bo aktiven.

activeSetup ()

Glasba Maestro!

Na tej točki bi morali začeti razmišljati o glasbi, ki jo igramo. Izberete lahko poljubno glasbeno datoteko, vendar bomo zaenkrat izbrali nekaj, kar je vsem na voljo. Če gledate YouTube, verjetno že poznate glasbo Kevina MacLeoda. Naj prenese fantastično melodijo, ki jo imenuje "Enoočni Maestro". Ta je skupaj z večino glasbe na njegovem spletnem mestu pod licenco Creative Commons in obstajajo veliko dobrih razlogov Kaj so Creative Commons in nekomercialna uporaba?Kaj je Creative Commons? Kaj pomeni "nekomercialna uporaba"? Spoznajte licence Creative Commons in kako delujejo. Preberi več za uporabo vsebine s temi licencami za svoje projekte.

wget

Nazaj v kodi moramo zagnati mešalnik Pygame in naložiti naš napev.

pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Enoosebni Maestro.mp3" pygame.mixer.music.load (ime) print ("Naložena skladba -" + str (ime))

Prva vrstica tega bloka sproži Pigame mešalnik. Zadnji argument v oklepajih je medpomnilnik, ki nadzira latenco, v kateri se predvaja zvok. Če kasneje med predvajanjem glasbe doživite zapleteno predvajanje, poskusite to številko povečati na 4096. Nastavitve, ki delujejo brez težav na Pi 3.

Če ste svojo glasbeno datoteko prenesli v drug imenik v vaš door.py program, boste morali določiti celotno pot v oklepajih, ko določite ime spremenljivke.

Zdaj nam preostane le, da nastavimo zanko, ki čaka, da program bodisi nastavimo, bodisi ga zapustimo.

medtem ko je res: če (GPIO.input (13) == 1): natisnite ("pritisnjen gumb zaustavi: Izhod") pygame.mixer.music.stop () prekinite, če (GPIO.input (11) == 1): activeState () time.sleep (0,5), če (active == 1): watchDoor () break GPIO.cleanup ()

Ta funkcija medtem ko zanka čaka na vnos s katerega koli gumba in ustavi ali ustrezno spremeni stanje v aktivno. Če stanje aktivnega postane 1, potem je watchDoor Funkcija, ki smo jo določili prej, se pokliče in naslednjič, ko se odprejo vrata, se bo začela naša melodija. Tudi pokličemo GPIO.cleanup () da ponastavimo zatiče pri izhodu, kar je na splošno dobra praksa za vse programiranje na Raspberry Pi.

To je vse, kar moramo storiti, da začnemo izvajati ta projekt, tukaj je koda v celoti:

uvoz RPi. GPIO kot GPIO. uvoz pygame.mixer. čas uvoza def activeSetup (): globalno aktivno aktivno = 0 natisni ("trenutno ni aktivno") def activeState (): globalno aktivno, če je aktivno == 1: aktivno = 0 GPIO.output (7, GPIO.LOW) natisni ("Trenutno Ne Active ") elif active == 0: print (" Aktiviranje v 10 sekundah ") za x v območju (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 ("Trenutno aktivno") drugo: vrni def watchDoor (): igranje globalnega igranja = False, medtem ko je True: če je aktivno == 1 in GPIO.input (15) == 1 in igra == False: igra = Res pygame.mixer.music.play () če je GPIO.input (13) == 1: natisni ("gumb za ustavitev pritisk: Izhod") pygame.mixer.music.stop () prekinitev, če je GPIO.input (11) == 1: activeState () time.sleep (0,5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, začetno = 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 = "Enoosebni Maestro.mp3" pygame.mixer.music.load (ime) natisni ("Naložen posnetek -" + str (ime)), medtem ko je resnično: če (GPIO.input (13) == 1): tiskanje ("gumb za ustavitev pritisnjen: Izhod") pygame.mixer.music.stop () prekinitev, če (GPIO.input (11) == 1): activeState () time.sep (0,5), če (active == 1): watchDoor () break GPIO.cleanup ()

Če se tukaj pomaknete, da takoj poberete celotno kodo, ne pozabite, da boste morali glasbo še vedno naložiti na svoj Pi!

Zdaj bi morali imeti delujočo melodijo dobrodošlice doma! Na vrata pritrdite trstično stikalo in ga preizkusite. Nerodno plesati je neobvezno, vendar priporočljivo.

Ta projekt je zajel osnove za številne oblike nadzora doma, varnosti in avtomatizacije, in upam, da je bilo tudi zabavno!

Zdaj, ko ste prišli tako daleč, zakaj se tam ustaviti? Lahko dodate več skladb in program naključno izbere eno. Lahko bi dodajte rele Uvod z GPIO na Raspberry PiČe bi bil Arduino kul, počakaj, da si priskrbiš malino Pi - te stvari so neverjetne. Poleg tega, da so popolnoma funkcionalen računalnik, imajo tudi ... Preberi več in ob vstopu se sprožijo drugi predmeti. Če imate domači glasbeni sistem, zakaj ne bi imeli tematske pesmi za vsako sobo?

relejne luči

Boste oblikovali svoje osebno sporočilo dobrodošlice? Ste bili iznajdljivi s trstičnimi stikali v vašem domu na druge načine? Če je tako, v komentarju spodaj pustite komentar o tem, kaj načrtujete ali ste že storili!

Ian Buckley je svobodni novinar, glasbenik, performer in producent videa, ki živi v Berlinu v Nemčiji. Ko ne piše ali na odru, se ukvarja z lastno elektroniko ali kodo v upanju, da bo postal nor znanstvenik.