Reklaam
Kas olete kunagi tahtnud koju jõuda isikliku tervituse saamiseks? Raspberry Pi ja mõne lihtsa komponendi abil saate! Selles lihtsas projektis kasutame ukse avamisel teema häälestamise käivitamiseks pilliroo lülitit. Kasutame siin kontrollerina vaarikapi, ehkki võite kasutada peaaegu kõiki muu mikrokontroller 5 dollarit mikrokontrollereid: Arduino, Raspberry Pi Zero või NodeMCU?Varem oli nii, et kui soovisite arvutit hankida, siis peaksite selle eest maksmiseks oma maja ümber tegema. Nüüd saate selle Abraham Lincolni jaoks. Loe rohkem selle projekti jaoks sama vooluringi kasutades. Siin on demo.
Sa vajad
Tõenäoliselt kuuluvad teile juba kõik selle tegemiseks vajalikud osad, välja arvatud pilliroo lüliti, mille hind on umbes 2–3 dollarit, või võite saada paketi 5, mille hind on pisut üle 8 dollari. siin.
- Raspberry Pi (selle jaoks töötab iga mudel).
- 1 x 220 oomi takisti.
- 1 x 1K oomi takisti.
- 3 x 10K oomi takisti.
- 1 x magnetiline pillirooglüliti.
- 1 x LED.
- 2 x nupunupp.
- Leivalaud.
- Haakekaablid.
- Arvuti kõlar või muu sarnane.
Kasutame ruumi sisenemisel laulu esitamiseks vaarikapi ja kujundame meie leivalaual olevate nuppudega vooluringi, et see viivitamatult aktiveerida ja programm peatada.
Ehkki see projekt on tehtud peamiselt lõbu pärast, hõlmab see paljude rakenduste põhitõdesid 2006. Aastal DIY koduautomaatika Koduse automatiseerimise juhend koos vaarikapi ja arduinogaKodutehnika automatiseerimise turg on üle ujutatud kallite tarbija süsteemidega, omavahel kokkusobimatud ja nende paigaldamine kulukas. Kui teil on vaarikapi ja arduino, saate põhimõtteliselt sama saavutada ... Loe rohkem ja ka DIY kodu turvalisus Kas otsite DIY kodu turvasüsteemi lahendust? Proovige ühte neistDigitaaltehnoloogia ja alati ühendatud riistvara ajastul peaks koduvalvesüsteemi seadistamine ületama häirekujulise kasti seinale panemise kunsti. Loe rohkem
Alustamine
Alustuseks teeme meie vooluringi. Veenduge, et teie Pi poleks vooluvõrku, ja seadke vooluringi nii:
LED on ühendatud meie pi pistikuga 7. Kaks surunuppu lülitit kinnitatakse tihvtide 11 ja 13 külge ja pilliroo lüliti ühendatakse tihvtiga 15. Meie võimsus läheb pin 1-le (3v3) ja 6-le (Gnd).
Kontrollige kindlasti, et kõik oleks täpselt õiges kohas.
Selle projekti testimise ajal võib see aidata pilliroo lülitit enda ees hoida, et saaksite selle hõlpsalt sisse või välja lülitada. Sel juhul oli pilliroo lüliti juba ukse kohale paigaldatud. Kui teie projekt on valmis ja käivitunud, võite lüliti ajutiselt oma uksele kinnitada, kasutades selleks linti või kui tunnete end enesekindlamalt, saate selle edaspidi tulevikus kasutamiseks püsivalt kinnitada projektid!
Ühendage oma Pi 3,5 mm pistikupesa kõlarisüsteemiga. Kui kõik on kokku pandud, peaks see välja nägema umbes selline:
Pange tähele, et siin kasutatava leivalaua võimsus rööpad on vastupidiselt ülaltoodud Fritzing'i diagrammile.
Nüüd lülitage Pi sisse ja pääsete sellele juurde SSH abil, et saaksime terminali juurde pääseda. Kui te pole kindel, kuidas seda teha, see juhend Vaarikapi seadistamine peata kasutamiseks SSH-gaRaspberry Pi saab vastu võtta SSH-käske, kui nad on kohaliku võrguga ühendatud (kas Etherneti või Wi-Fi kaudu), võimaldades teil seda hõlpsasti seadistada. SSH eelised ületavad igapäevase sõeluuringu häirimise ... Loe rohkem saab sind aidata. Kui kasutate oma Raspberry Pi koos monitori, hiire ja klaviatuuriga, siis jätke see samm vahele ja avage terminal.
Enne alustamist tasub kontrollida, kas olete kursis. Tüüp sudo apt-get update
terminali.
Nüüd võime liikuda edasi selle poole, et Pi oma vooluringile räägiks.
Meie seadistuse testimine
Alustuseks kontrollige meie vooluringi lihtsa programmi abil. Kui olete kindel, et olete kõik seni korralikult sisse juhtinud, võite selle sammu vahele jätta, ehkki soovitan seda teha, kuna see võib hiljem peavalu säästa.
Kui te pole kunagi varem Pythonis programmeerinud ja tunnete end pisut hirmunult, on neid hulgaliselt suurepärased veebisaidid 5 parimat veebisaiti Pythoni programmeerimise õppimiseksKas soovite õppida Pythoni programmeerimist? Siin on parimad viisid Pythoni veebis õppimiseks, millest paljud on täiesti tasuta. Loe rohkem mis aitab teil alustada.
Looge terminalis uus skript:
nano test.py
Pärast avamist lisage see fail faili ja vajutage väljumiseks Ctrl-C, kui soovite salvestamisdialoogi järgides:
#See kood kirjutati artikli jaoks www. MakeUseOf.com autor Ian Buckley. impordi RPi. GPIO kui GPIO. impordi aeg. GPIO.sethoiatused (vale) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) kui tõene: GPIO.output (7, GPIO.HIGH) kui (GPIO.input (11) == 1): printimine ("Button on GPIO 11") time.sleep (1 ) kui (GPIO.input (13) == 1): printimine ("Button on GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): printimine ("Button on GPIO 15") time. uni (1) GPIO.cleanup ()
See kood loeb nuppude väärtust ja prinditakse ekraanile, kui need muutuvad. Kahel nupul on takistid alla tõmmatud, seega annavad nad vajutamisel märku KÕRGE. Pilliroo magnetilüliti teatab KÕRGE, kui sellega kaasnev magnet on lähedal.
Käivitage programm:
python test.py
Te peaksite nägema, kui LED süttib ja ekraanile ilmub teade, kui vajutate kahte nuppu ja tõmbate magnet pilliroo lülitist eemale. Kui te nuppude vajutamisel tagasisidet ei saa, kontrollige uuesti vooluringi ja veenduge, et kõik oleks ühendatud nii, nagu see peaks olema. Kui olete testimise lõpetanud, vajutage nuppu CTRL-C programmi peatamiseks.
Nüüd saame oma ukseanduri seadistamiseks, käivitamiseks ja lähtestamiseks kokku panna lihtsa programmi. Vaatame koodi osade kaupa üle ja selgitame lühidalt, mida iga osa teeb, ehkki kui soovite näha kogu koodi, siis kerige alla, et näha seda täielikult.
Peame alustama mõne mooduli importimisega:
import Rpi. GPIO kui GPIO. import pygame.mixer. impordi aeg.
Me kasutame Pygame moodul meie muusika mängimiseks. See on standardina koos Raspbian Jessiega ning on suurepärane raamatukogu kõige jaoks, mida vajate Pythoni mängude ja paljude teiste jaoks hämmastavad projektid Kuidas luua Raspberry Pi Twitter BotTwitter on maailma suurim lühikeste sõnumite hoidla inimestelt, kellel pole midagi öelda - ja nüüd ka teie saate sellesse eepilisse projekti panustada automaatse Twitteri robotiga, mida toetab teie Vaarikas ... Loe rohkem .
Me hakkame kasutama muutujat nimega aktiivne et otsustada, kas meie süsteem on aktiivne või mitte. Määratleme paar funktsiooni, mis seda meie jaoks teevad:
def activeSetup (): globaalselt aktiivne aktiivne = 0 print ("Praegu pole aktiivne") def activeState (): globaalne aktiivne, kui aktiivne == 1: aktiivne = 0 GPIO.output (7, GPIO.LOW) print ("Praegu pole aktiivne") elif aktiivne == 0: prindi ("Aktiveerimine 10 sekundiga") x vahemikus (0,10): GPIO.väljund (7, GPIO.HIGH) aeg.magamine (0.5) GPIO.väljund (7, GPIO.LOW) aeg.magamine (0.5) aktiivne = 1 GPIO.väljund (7, GPIO.HIGH) printimine ("Praegu Aktiivne ") else: return.
Esimene funktsioon loob siin muutuja nimega aktiivne, ja seab selle väärtusele 0. Aktiivse oleku arvulise väärtuse andmine tähendab, et kui kavatsete programmi hiljem skaleerida nii, et sellel oleks erinevad aktiivsed olekud, saate need vastavalt nummerdada. Ehkki see ei pruugi olla parim Pythoni programmeerimine maailmas, piisab sellest projektist.
Teine funktsioon, kui seda kutsutakse, kontrollib, kas süsteem on aktiivne (või aktiivne == 1). Kui on, seab see süsteemi mitteaktiivseks (aktiivne == 0), lülitab LED välja ja prindib konsooli. Kui seda pole, annab see teile 10-sekundilise ajaarvestuse, et lahkuda ruumist, kus LED vilgub, ja alles seejärel põlema näidata, et süsteem on aktiivne.
Nüüd saame määratleda funktsiooni, mis jälgib meie pilliroo magnetilülitit:
def watchDoor (): globaalne mängimine mängimine = vale, kui tõene: kui aktiivne == 1 ja GPIO.input (15) == 1 ja mängimine == vale: mängimine = tõene pygame.mixer.music.play () kui GPIO.input (13) == 1: printige ("Stopp-nuppu vajutatakse: väljumisel") pygame.mixer.music.stop () purunege, kui GPIO.input (11) == 1: activeState () time.sleep (0,5)
Loome siin veel ühe muutuja nimega mängides - see on lihtsalt selleks, et peatada programm, mis üritab korduvalt mängima hakata, kui lüliti sisse lülitatakse.
Mingi aja sees käivitub esimene, kui avaldus, muusika (mida meil veel pole, aga ärge muretsege, see tuleb). See laseb muusikal käivituda ainult siis, kui süsteem on aktiivne, pilliroo lüliti on avatud ja seda veel ei esitata.
Teine avaldus on meie väljumisnupule. Selle nupu vajutamisel peatub muusika ja programm väljub.
Kolmas avaldus on mõeldud lülitamiseks, kas süsteem on aktiivne või mitte. aeg.unne Selle funktsiooni eesmärk on vältida mitme nupu lugemist selle vajutamisel.
Nüüd on aeg üles seada Pi tihvtid.
GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, esialgne = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)
Kui olete Pi-ga mõnda katsetanud, peaks see teile olema tuttav. esialgne = GPIO.LOW argument pin 7 seadistuses seab selle madalaks kohe, kui see on initsialiseeritud.
Nüüd võime helistada oma funktsioonile, mis seab süsteemi programmi käivitamisel mitteaktiivseks.
activeSetup ()
Muusikamaester!
Sel hetkel peaksime hakkama mõtlema mängitava muusika üle. Saate valida ükskõik millise muusikafaili, kuid valime midagi, mis on praegu kõigile kättesaadav. Kui vaatate YouTube'i, olete tõenäoliselt Kevin MacLeodi muusikaga juba tuttav. Võimaldab alla laadida tema poolt valitud fantastilise loo “Ühe silmaga maestro”. See, nagu ka suur osa tema saidi muusikast, on Creative Commonsi litsentsiga ja on olemas palju häid põhjuseid Mis on Creative Commons ja mitteäriline kasutamine?Mis on Creative Commons? Mida tähendab "mitteäriline kasutamine"? Lugege Creative Commonsi litsentside ja nende toimimise kohta. Loe rohkem nende projektide jaoks litsentsidega sisu kasutamiseks.
Tagasi oma koodis, peame käivitama Pygame mikseri ja laadima oma hääle.
pygame.mixer.init (44100, -16,21024) pygame.mixer.music.set_volume (1.0) name = "ühe silmaga Maestro.mp3" pygame.mixer.music.load (nimi) print ("Laaditud pala -" + str (nimi))
Selle ploki esimene rida käivitab Pygame segisti. Viimane argument sulgudes on puhver, mis kontrollib heli esitamise latentsusaega. Kui teil tekib muusika esitamisel hilisem taasesitus, proovige seda arvu suurendada 4096-ni. Kuna need seaded on Pi 3-s töötavad ilma probleemideta.
Kui laadisite oma muusikafaili alla teie muusse kataloogi uks.py Kui soovite programmi muutuja nime määratleda, peate sulgudesse sisestama kogu tee.
Nüüd jääb üle vaid teha silmus, mis ootab, kas me kas programmi aktiveerime või sellest väljume.
kuigi tõene: kui (GPIO.input (13) == 1): printige ("Stop nuppu vajutatakse: väljudes") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0,5) if (active == 1): watchDoor () break GPIO.cleanup ()
Sel ajal, kui silmus ootab mõlemalt nupult sisendit, lülitatakse vastavalt välja või muudetakse olek aktiivseks. Kui aktiivse oleku väärtus on 1, siis watchDoor funktsioon, mille me varem määratlesime, helistatakse ja järgmine kord, kui uks avaneb, mängib meie hääl. Me ka helistame GPIO.cleanup () meie nööpnõelte lähtestamiseks lähtestamine, mis on üldiselt hea tava kogu Raspberry Pi programmeerimisel.
See on kõik, mida peame selle projekti käivitamiseks ja käitamiseks tegema, siin on kood täielikult:
impordi RPi. GPIO kui GPIO. import pygame.mixer. impordi aeg def activeSetup (): globaalselt aktiivne aktiivne = 0 print ("Praegu pole aktiivne") def activeState (): globaalne aktiivne, kui aktiivne == 1: aktiivne = 0 GPIO.väljund (7, GPIO.LOW) printimine ("Praegu Mitte Aktiivne)) elif aktiivne == 0: printige ("Aktiveerub 10 sekundiga") x jaoks vahemikus (0,10): GPIO.väljund (7, GPIO.HIGH) aeg.unne (0,5) GPIO.väljund (7, GPIO.LOW) aeg.magamine (0.5) aktiivne = 1 GPIO.väljund (7, GPIO.HIGH) print ("Praegu aktiivne") muidu: tagastab def watchDoor (): globaalne mängimine mängib = vale, kui tõsi: kui aktiivne == 1 ja GPIO.input (15) == 1 ja mängimine == vale: mängib = tõsi pygame.mixer.music.play () kui GPIO.input (13) == 1: printige ("Stopp-nuppu vajutatakse: väljumisel") pygame.mixer.music.stop () purunege, kui GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, esialgne = 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) name = "ühe silmaga Maestro.mp3" pygame.mixer.music.load (nimi) print ("Loadded track -" + str (name)) with True: if (GPIO.input (13) == 1): print ("Stop nuppu vajutatud: Exit") pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () time.sleep (0,5) if (active == 1): watchDoor () break GPIO.cleanup ()
Kui kerite siit alla, et kohe täielik kood haarata, pidage meeles, et selle toimimiseks peate muusika ikkagi oma Pi-le alla laadima!
Nüüd peaks teil olema toimiv tervitusliku koduteema häälestamine! Kinnitage pilliroo lüliti oma ukse külge ja proovige järele. Piinlik tantsimine on valikuline, kuid soovitatav.
See projekt hõlmas kodu jälgimise, turvalisuse ja automatiseerimise paljude vormide põhialuseid ning loodetavasti oli see ka lõbus!
Nüüd, kui olete jõudnud nii kaugele, miks peaksite sellega peatuma? Võite lisada veel lugusid ja lasta programmil valida mõni loendist juhuslikult. Sa võiksid lisage relee GPIO-ga alustamine vaarikapiivalKui teil oli Arduino lahe, siis oodake, kuni saate oma käe Raspberry Pi peale - need asjad on hämmastavad. Lisaks täielikult töötavale arvutile on neil ka ... Loe rohkem ja lasta sisenemisel käivitada muid objekte. Kui teil on kodumuusikasüsteem, siis miks ei võiks igas toas olla teemalaul?
Kas kavatsete kujundada oma isikliku tervitus kodusõnumi? Kas olete oma kodus pilliroo lülititega leidlik olnud muul viisil? Kui jah, jätke allolevasse kommentaaride jaotisesse kommentaar, mida plaanite või olete juba teinud!
Ian Buckley on vabakutseline ajakirjanik, muusik, esineja ja videotootja, kes elab Berliinis, Saksamaal. Kui ta ei kirjuta ega laval, tikib ta DIY elektroonika või koodi abil lootuses saada hulluks teadlaseks.