Skelbimas

Ar kada norėjote atvykti namo asmeniškai pasveikinti? Su Raspberry Pi ir keliais paprastais komponentais jūs galite! Šiame paprastame projekte naudosime nendrinį jungiklį, kad įjungtume temos melodiją, kai atidaromos durys. Čia valdikliu naudosime Raspberry Pi, nors galėtumėte naudoti beveik bet kurį kitas mikrovaldiklis $ 5 mikrovaldikliai: „Arduino“, „Raspberry Pi Zero“ ar „NodeMCU“?Anksčiau būdavo, kad jei norėjai įsigyti kompiuterį, turėtum perdaryti savo namą, kad sumokėtum už jį. Dabar galite įsigyti Abraomo Linkolno. Skaityti daugiau šiam projektui naudojant tą pačią grandinę. Štai demonstracija.

Jums reikės

Jūs greičiausiai jau turėsite visas dalis, kurių jums reikės, kad padarytumėte tai, išskyrus nendrių jungiklį, kuris yra maždaug 2–3 USD, arba galite gauti 5 pakuočių paketą už šiek tiek daugiau nei 8 USD. čia.

  • Raspberry Pi (tam tiks bet koks modelis).
  • 1 x 220 omų rezistorius.
  • 1 x 1K omo rezistorius.
  • 3 x 10 K omų varžos.
  • 1 x magnetinis nendrinis jungiklis.
  • 1 x šviesos diodas.
  • 2 x mygtukinis jungiklis.
  • Bandomoji Lenta.
  • Prikabinami kabeliai.
  • Kompiuterio garsiakalbis ar pan.
instagram viewer

Mes naudosime „Raspberry Pi“, kad grotume dainą, kai įeisime į kambarį, ir suprojektuosime grandinę su mygtukais ant mūsų lentos, kad ją suaktyvintume nedelsdami ir sustabdytume programą.

Šis projektas, nors daugiausia sukurtas įdomumui, apima daugelio programų, esančių 2007 m., Pagrindus „Pasidaryk pats“ namų automatika Namų automatikos vadovas su „Raspberry Pi“ ir „Arduino“Namų automatikos rinka yra užtvindyta brangių vartotojų sistemų, nesuderinamų viena su kita ir brangiai kainuojančių įrengimo. Jei turite aviečių pi ir arduino, tą patį galite pasiekti ... Skaityti daugiau ir taip pat „Pasidaryk pats“ namų saugumas Ieškai „pasidaryk pats“ namų apsaugos sistemos sprendimo? Išbandykite vieną iš šiųSkaitmeninių technologijų ir visada prijungtos aparatūros amžiuje namų apsaugos sistemos sukūrimas turėtų peržengti mados signalizacijos formos dėžutės pritvirtinimo prie sienos meną. Skaityti daugiau

Darbo pradžia

Pradėkime nuo to, kad padarytume savo grandinę. Įsitikinkite, kad jūsų Pi nėra maitinimo, ir nustatykite savo grandinę taip:

Fritzing su anotacija HQ

Šviesos diodas yra prijungtas prie 7 kaiščio ant mūsų pi. Du mygtuko jungikliai yra pritvirtinti prie kaiščių 11 ir 13, o nendrinis jungiklis jungiamas prie 15 kaiščio. Mūsų galia eina į 1 kaištį (3v3) ir 6 kaištį (Gnd).

kaištinė diagrama

Būtinai patikrinkite, ar viskas yra tinkamoje vietoje.

Kol testuojate šį projektą, gali būti, kad nendrių jungiklis bus laikomas priešais jus, kad galėtumėte lengvai jį įjungti arba išjungti. Šiuo atveju nendrinis jungiklis jau buvo įrengtas virš durų. Kai projektas bus parengtas ir vykdomas, naudodamiesi galite laikinai pritvirtinti jungiklį prie savo durų juosta, arba jei jaučiatės labiau pasitikintys savimi, galite ją tvirtiau pritvirtinti, kad galėtumėte naudoti ateityje projektai!

įdiegtas nendrinis jungiklis

Prijunkite 3,5 mm lizdo išvestį „Pi“ prie garsiakalbių sistemos. Viską sudėjus, jis turėtų atrodyti taip:

visa sąranka teisinga

Atminkite, kad čia naudojamos duonos lentelės galios bėgeliai yra atvirkščiai, palyginti su aukščiau esančia Fritzingo schema.

Įjunkite „Pi“ ir įjunkite jį naudodami SSH, kad galėtume pasiekti terminalą. Jei nežinote, kaip tai padaryti, šis vadovas „Raspberry Pi“ paruošimas naudoti be galvų su SSH„Raspberry Pi“ gali priimti SSH komandas, kai yra prijungtas prie vietinio tinklo (per „Ethernet“ arba „Wi-Fi“), kad galėtumėte lengvai jį nustatyti. SSH pranašumai neapsiriboja kasdieniu atranka ... Skaityti daugiau gali jums padėti. Jei naudojate Raspberry Pi su monitoriumi, pele ir klaviatūra, praleiskite šį veiksmą ir atidarykite terminalą.

Prieš pradedant dirbti, verta pasitikrinti, ar esate atnaujinti. Tipas „sudo apt-get“ atnaujinimas į terminalą.

Dabar galime pereiti prie to, kad mūsų Pi kalbėtųsi su savo grandine.

Testavimas mūsų sąrankos

Norėdami pradėti, leiskite patikrinti mūsų grandinę naudojant paprastą programą. Jei esate įsitikinęs, kad iki šiol viską atlikote tinkamai, galite praleisti šį veiksmą, nors aš rekomenduočiau jį, nes tai vėliau gali padėti išvengti galvos skausmo.

Jei niekada anksčiau nebuvote užprogramuotas „Python“ programoje ir jaučiatės šiek tiek prislėgtas, yra daugybė puikios svetainės 5 geriausios svetainės, skirtos mokytis „Python“ programavimoNorite išmokti Python programavimo? Čia yra geriausi būdai išmokti Python internete, daugelis iš jų yra visiškai nemokami. Skaityti daugiau tai gali padėti jums pradėti.

Terminale sukurkite naują scenarijų:

nano test.py

Atidarę pridėkite šį kodą prie failo ir paspauskite Ctrl-C, kad išeitumėte, po išsaugojimo dialogo lango:

# Šis kodas buvo parašytas straipsniui www. „MakeUseOf.com“ sukūrė Ianas Buckley. importuoti RPi. GPIO kaip GPIO. importo laikas. „GPIO.setwarnings“ (klaidingi) GPIO.setmode (GPIO.BOARD) „GPIO.setup“ (7, „GPIO.OUT“) „GPIO.setup“ (11, GPIO.IN) „GPIO.setup“ (13, GPIO.IN) „GPIO. ) jei („GPIO.input“ (13) == 1): spausdinimo („Mygtukas ant GPIO 13“) miego laikas (1), jei (GPIO.input (15) == 1): spausdinimo („Mygtukas ant GPIO 15“) laikas .sleep (1) GPIO.cleanup ()

Šis kodas nuskaito mygtukų vertę ir atspausdina į ekraną, kai jie pasikeičia. Dviejuose mygtukuose yra išstumiami rezistoriai, todėl paspaudus jie rodo AUKŠTĄ. Nendrių magneto jungiklis praneša apie AUKŠTĄ, kai arti jo esantis magnetas.

jungikliai

Vykdykite programą:

python test.py

Jūs turėtumėte pamatyti šviesos diodo užsidegimą ir pranešimą ekrane, kai paspausite du mygtukus ir atitraukite magnetą nuo savo nendrinio jungiklio. Jei paspaudę mygtukus negaunate atsiliepimų, dar kartą patikrinkite savo schemą ir įsitikinkite, kad viskas prijungta taip, kaip turėtų būti. Baigę bandymą, paspauskite CTRL-C sustabdyti programą.

testas

Dabar galime sudėti paprastą programą, leidžiančią nustatyti, įjungti ir iš naujo nustatyti mūsų durų jutiklį. Mes peržvelgsime kodą dalimis ir trumpai paaiškinsime, ką daro kiekviena dalis, nors jei norite pamatyti visą kodą, slinkite žemyn, kad jis būtų pateiktas visas.

Pirmiausia turime importuoti kai kuriuos modulius:

importuoti Rpi. GPIO kaip GPIO. importuoti pygame.mixer. importo laikas. 

Mes naudosime Pygame modulis groti mūsų muzikai. Tai standartinė komplektacija su „Raspbian Jessie“ ir yra puiki biblioteka, kurioje rasite viską, ko reikia „Python“ žaidimams ir daugeliui kitų. nuostabūs projektai Kaip sukurti „Raspberry Pi Twitter Bot“„Twitter“ yra didžiausia pasaulyje trumpų žinučių iš žmonių, neturinčių ką pasakyti, saugykla - ir dabar jūs taip pat galite prisidėti prie to epinio projekto su automatizuotu „Twitter“ robotu, kurį maitina jūsų Aviečių ... Skaityti daugiau .

Mes naudosime kintamąjį, vadinamą aktyvus nuspręsti, ar mūsų sistema aktyvi, ar ne. Apibrėžkime keletą funkcijų, kurios tai padarys už mus:

def activeSetup (): visuotinis aktyvus aktyvus = 0 spausdinimas („Šiuo metu neaktyvus“) def activeState (): globalus aktyvus, jei aktyvus == 1: aktyvus = 0 „GPIO.output“ (7, GPIO.LOW) spausdinimas („Šiuo metu neaktyvus“) elif active == 0: spausdinti („suaktyvinti per 10 sekundžių“) x diapazonui (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 („Šiuo metu Aktyvus “) dar: grįžti. 

Pirmoji funkcija sukuria kintamąjį pavadinimu aktyvus, ir nustato jį į 0. Suteikus aktyvią būseną skaitine reikšme, reiškia, kad jei vėliau planuojate išplėsti programą, kad joje būtų skirtingos aktyvios būsenos, galite jas atitinkamai sunumeruoti. Nors tai gali būti ne pats geriausias Python programavimas pasaulyje, to daugiau nei pakaks šiam projektui.

Antroji funkcija, kai vadinama, tikrina, ar sistema aktyvi (arba aktyvus == 1). Jei ji yra, ji nustato sistemą neaktyvią (aktyvus == 0), išjungia šviesos diodą ir spausdina į konsolę. Jei jo nėra, jis suteikia jums 10 sekundžių atgalinę atskaitą, kad išeitumėte iš kambario, kuriame mirksi šviesos diodas, prieš likdami įjungti, kad parodytumėte, kad sistema aktyvi.

Dabar galime apibrėžti funkciją, kuri stebės mūsų nendrinių magnetų jungiklį:

def watchDoor (): visuotinai žaidžia žaidžia = klaidingai, o teisingai: jei aktyvus == 1 ir GPIO.input (15) == 1 ir žaidžia == klaidingai: žaidžia = teisingai pygame.mixer.music.play (), jei GPIO.input (13) == 1: spausdinkite („Stop mygtukas paspaustas: išeinama“) pygame.mixer.music.stop () pertrauka, jei GPIO.input (11) == 1: „activeState“ () laikas miego metu (0,5)

Čia sukuriame dar vieną kintamąjį, vadinamą žaidžia - tai paprasčiausiai sustabdoma programa, bandanti pakartoti paleidimą, kai įjungiamas jungiklis.

Tuo tarpu kilpoje pirmąjį teiginį pradeda muzika (kurios dar neturime, bet dar nesijaudinkime, ji skambės). Tai leidžia paleisti muziką tik tada, kai sistema aktyvi, nendrinis jungiklis atidarytas ir jis dar neleidžiamas.

Antras teiginys skirtas mūsų išėjimo mygtukui. Paspaudus šį mygtuką, muzika sustoja ir programa uždaroma.

Trečiasis teiginys skirtas perjungti, ar sistema aktyvi, ar ne. laikas.miegoti funkcija čia yra užkirsti kelią kelių mygtukų skaitymui, kai jis paspaudžiamas.

Dabar atėjo laikas nustatyti „Pi“ segtukus.

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

Jei anksčiau eksperimentavote su Pi, tai jums turėtų būti žinoma. pradinis = GPIO.LOW argumentas 7 kaiščio sąrankoje nustato jį kaip žemą, kai tik jis yra inicijuotas.

Dabar galime paskambinti savo funkcijai, kuri nustatys, kad sistema nebus aktyvi, paleidus programą.

activeSetup ()

Muzikos maestro!

Šiuo metu turėtume pradėti galvoti apie grojamą muziką. Galite pasirinkti bet kurį norimą muzikos failą, bet mes dabar pasirinksime tai, kas prieinama visiems. Jei žiūrite „YouTube“, tikriausiai jau esate susipažinęs su Kevino MacLeodo muzika. Leidžiame atsisiųsti fantastišką melodiją, kurią jis pavadino „Vienos akies maestro“. Tai, kaip ir dauguma jo svetainės muzikos, yra licencijuota pagal „Creative Commons“, ir yra daug gerų priežasčių Kas yra „Creative Commons“ ir nekomercinis naudojimas?Kas yra „Creative Commons“? Ką reiškia „nekomercinis naudojimas“? Sužinokite apie „Creative Commons“ licencijas ir kaip jos veikia. Skaityti daugiau naudoti turinį su šiomis licencijomis savo projektams.

wget

Atgal į mūsų kodą, turime paleisti „Pygame“ maišytuvą ir įkelti savo melodiją.

„pygame.mixer.init“ (44100, -16,21024) „pygame.mixer.music.set_volume“ (1.0) name = "Vienos akies Maestro.mp3" pygame.mixer.music.load (vardas) spausdinti („Įkeltas takelis -“ + str. (vardas))

Pirmoji šio bloko eilutė inicijuoja Pygame maišytuvas. Paskutinis skliausteliuose pateiktas argumentas yra buferis, kuris kontroliuoja delsą, kuria grojamas garsas. Jei vėliau, kai grojate muziką, atliekate neramią funkciją, pabandykite padidinti šį skaičių iki 4096. Tokie parametrai, kokie yra „Pi 3“, veikia be jokių problemų.

Jei muzikos failą atsisiuntėte į kitą katalogą, kurį rasite durys.py programą, apibrėždami pavadinimo kintamąjį, turėsite pateikti visą kelią skliausteliuose.

Dabar viskas, ką reikia padaryti, yra nustatyti kilpą, kuris laukia, kol mes suaktyvinsime programą arba išeisime iš jos.

o Tiesa: jei (GPIO.input (13) == 1): spausdinkite (paspauskite mygtuką „Stop mygtukas paspaustas: išeinama“) pygame.mixer.music.stop () pertrauka jei (GPIO.input (11) == 1): activeState () time.sleep (0,5) if (active == 1): watchDoor () break GPIO.cleanup ()

Tuo metu, kai kilpa laukia įvesties iš bet kurio mygtuko, atitinkamai uždaroma arba keičiama būsena. Jei aktyvi būsena tampa 1, tada „watchDoor“ funkcija, kurią apibrėžėme anksčiau, bus iškviesta ir kitą kartą, kai durys atsidarys, skambės mūsų melodija. Mes taip pat skambiname GPIO.cleanup () iš naujo nustatyti mūsų kaiščius, o tai paprastai yra gera visų „Raspberry Pi“ programavimo praktika.

Tai viskas, ką turime padaryti, kad šis projektas būtų vykdomas ir vykdomas, čia yra visas kodas:

importuoti RPi. GPIO kaip GPIO. importuoti pygame.mixer. importo laikas def activeSetup (): visuotinis aktyvus aktyvus = 0 spausdinimas („Šiuo metu neaktyvus“) def activeState (): globalus aktyvus, jei aktyvus == 1: aktyvus = 0 GPIO.output (7, GPIO.LOW) spausdinimas („Šiuo metu Ne Aktyvus ") elif aktyvus == 0: spausdinti („ suaktyvinti per 10 sekundžių ") x diapazonui (0,10): GPIO. išeiga (7, GPIO.HIGH) laikas.miegoti (0,5) GPIO.įėjimas (7, GPIO.LOW) time.sleep (0.5) aktyvus = 1 GPIO.output (7, GPIO.HIGH) spausdinimas („Šiuo metu aktyvus“) dar: grąžinti „def watchDoor“ (): žaisti visame pasaulyje = klaidinga, o tikra: jei aktyvi == 1 ir GPIO.input (15) == 1 ir žaisti == klaidinga: žaisti = tiesa pygame.mixer.music.play (), jei GPIO.input (13) == 1: spausdinkite („Stop mygtukas paspaustas: išeinama“) pygame.mixer.music.stop () pertrauka, jei GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, pradinis = 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 = "Vienos akies Maestro.mp3" pygame.mixer.music.load (vardas) spausdinti („Įkeltas takelis -“ + eilutė (vardas)), kol „True“: jei („GPIO.input“ (13) == 1): spausdinti („Paspaustas mygtukas paspaudžiamas: išeinama“) pygame.mixer.music.stop () pertrauka, jei (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()

Jei slinkote čia norėdami iškart sugauti visą kodą, atminkite, kad vis tiek turėsite atsisiųsti muziką į savo Pi, kad ji veiktų!

Dabar jūs turėtumėte veikti veikiančią pasveikinimo namų tema! Pritvirtinkite nendrių jungiklį prie savo durų ir išbandykite. Nepatogus šokis yra neprivalomas, tačiau rekomenduojamas.

Šis projektas apėmė daugelio namų stebėjimo, saugumo ir automatikos formų pagrindus, ir, tikėkimės, taip pat buvo įdomus!

Dabar, kai jau nuėjai taip toli, kodėl čia turėtum sustoti? Galite pridėti daugiau takelių ir leisti programai atsitiktinai pasirinkti iš sąrašo. Tu galėtum pridėti relę Darbo su „GPIO“ pradžia naudojant „Raspberry Pi“Jei vis dėlto Arduinas buvo šaunus, tiesiog palaukite, kol pateksite į savo rankas ant Raspberry Pi - šie dalykai yra nuostabūs. Tai ne tik visiškai veikiantis kompiuteris, bet ir ... Skaityti daugiau ir kad kiti objektai būtų įjungiami įvažiuojant. Jei turite namų muzikos sistemą, kodėl gi ne kiekviename kambaryje teminę dainą?

reliniai žibintai

Ar sukursite savo asmeninę pasveikinimo namo žinutę? Ar buvote išradingas, naudodamas nendrinius jungiklius savo namuose kitais būdais? Jei taip, palikite komentarą apie tai, ką planuojate ar jau padarėte, žemiau esančiame komentarų skyriuje!

Ian Buckley yra laisvai samdomas žurnalistas, muzikantas, atlikėjas ir vaizdo įrašų prodiuseris, gyvenantis Berlyne, Vokietijoje. Kai jis nerašo ir nesirenka scenoje, jis pasidomi „pasidaryk pats“ elektronika ar kodu tikėdamasis tapti beprotišku mokslininku.