Reklāma

Vai jūs kādreiz esat vēlējies ierasties mājās uz personīgu sagaidīšanu? Izmantojot Raspberry Pi un dažus vienkāršus komponentus, jūs varat! Šajā vienkāršajā projektā mēs izmantosim niedru slēdzi, lai izsauktu motīvu, kad tiek atvērtas durvis. Šeit par kontrolieri izmantosim Raspberry Pi, kaut arī jūs varētu izmantot gandrīz jebkuru cits mikrokontrolleris 5 USD mikrokontrolleri: Arduino, Raspberry Pi Zero vai NodeMCU?Kādreiz bija tas, ka, ja jūs vēlētos iegūt datoru, jums nāksies veikt mājas pārkārtošanu, lai par to samaksātu. Tagad jūs to varat iegādāties Abraham Linkoln. Lasīt vairāk šim projektam, izmantojot to pašu shēmu. Šeit ir demonstrācija.

Jums būs nepieciešams

Jums, visticamāk, jau piederēs visas nepieciešamās detaļas, izņemot niedru pārslēgu, kura cena ir aptuveni 2–3 USD, vai arī jūs varat saņemt 5 paciņu par nedaudz vairāk par 8 USD. šeit.

  • Aveņu Pi (tam darbosies jebkurš modelis).
  • 1 x 220 omi rezistors.
  • 1 x 1K ohm rezistors.
  • 3 x 10K omu rezistors.
  • 1 x magnētiskais niedru slēdzis.
  • 1 x gaismas diode.
  • 2 x spiedpogas slēdzis.
  • Maizes dēlis.
  • Piekabināšanas kabeļi.
  • Datoru skaļruņi vai tamlīdzīgi.

Mēs izmantosim Raspberry Pi, lai atskaņotu dziesmu, kad istabā ir ienācis, un izveidosim shēmu ar pogām uz mūsu maizes paneļa, lai to aktivizētu ar nokavēšanos un apturētu programmu.

Šis projekts, lai arī lielākoties tiek veidots izklaidei, bet satur daudzu lietojumprogrammu pamatus DIY mājas automatizācija Mājas automatizācijas rokasgrāmata ar Aveņu Pi un ArduinoMājas automatizācijas tirgus ir pārpludināts ar dārgām patērētāju sistēmām, savstarpēji nesavienojamām un dārgām instalēšanai. Ja jums ir Aveņu Pi un Arduino, jūs to pašu varat sasniegt ... Lasīt vairāk un arī DIY mājas drošība Vai meklējat DIY mājas drošības sistēmas risinājumu? Izmēģiniet kādu no šiemDigitālo tehnoloģiju un vienmēr savienotās aparatūras laikmetā mājas drošības sistēmas iestatīšanai vajadzētu pārsniegt mākslu uzlikt trauksmes signāla formas kastīti pie sienas. Lasīt vairāk

Darba sākšana

Sāksim ar mūsu shēmas izveidošanu. Pārliecinieties, ka jūsu Pi nav barošanas avota, un izveidojiet shēmu šādi:

Fritzing anotācijā HQ

Gaismas diode ir savienota ar 7. punktu uz mūsu pi. Divi spiedpogas slēdži ir piestiprināti pie tapām 11 un 13, un niedru slēdzis ir savienots ar 15. tapu. Mēs izmantojam 1. un 3. tapu (Gv) un 6. tapu.

pin diagramma

Pārliecinieties, ka viss atrodas tieši pareizajā vietā.

Kamēr jūs pārbaudāt šo projektu, tas var palīdzēt noturēt niedru slēdzi sev priekšā, lai jūs varētu to viegli ieslēgt vai izslēgt. Šajā gadījumā niedru slēdzis jau bija uzstādīts virs durvīm. Kad jūsu projekts ir izveidots un darbojas, jūs varat uz laiku piestiprināt slēdzi pie jūsu durvīm, izmantojot lenti vai, ja jūtaties pārliecinātāks, varat to stiprāk piestiprināt turpmākai lietošanai projekti!

niedru slēdzis ir uzstādīts

Pievienojiet jūsu Pi 3,5 mm ligzdas izeju skaļruņu sistēmai. Kad viss ir salikts kopā, tam vajadzētu izskatīties apmēram šādi:

viss iestatījums ir pareizs

Ņemiet vērā, ka šeit izmantotajai maizes dēlei ir otrādi strāvas sliedes, salīdzinot ar iepriekšējo Fritzinga diagrammu.

Tagad ieslēdziet Pi un piekļūstiet tam, izmantojot SSH, lai mēs varētu piekļūt terminālim. Ja neesat pārliecināts, kā to izdarīt, šī rokasgrāmata Aveņu Pi iestatīšana lietošanai bez galvas ar SSHRaspberry Pi var pieņemt SSH komandas, kad tās ir savienotas ar vietējo tīklu (izmantojot Ethernet vai Wi-Fi), ļaujot jums to viegli iestatīt. SSH priekšrocības pārsniedz ikdienas skrīninga izjaukšanu ... Lasīt vairāk var jums palīdzēt. Ja jūs izmantojat Raspberry Pi ar monitoru, peli un tastatūru, izlaidiet šo darbību un atveriet termināli.

Pirms darba sākšanas ir vērts pārbaudīt, vai esat aktuāls. Veids sudo apt-get atjauninājums terminālī.

Tagad mēs varam pāriet pie tā, lai mūsu Pi runātu ar mūsu ķēdi.

Pārbaudot mūsu iestatījumus

Lai sāktu, ļauj pārbaudīt mūsu shēmu, izmantojot vienkāršu programmu. Ja esat pārliecināts, ka līdz šim esat visu pareizi izveidojis, varat šo darbību izlaist, lai gan es to ieteiktu, jo tas vēlāk var ietaupīt galvassāpes.

Ja jūs nekad iepriekš neesat ieprogrammējis Python un jūtaties nedaudz satracināts, ir daudzi citi lieliskas vietnes 5 labākās vietnes, lai uzzinātu Python programmēšanuVai vēlaties uzzināt Python programmēšanu? Šeit ir labākie veidi, kā mācīties Python tiešsaistē, no kuriem daudzi ir pilnīgi bez maksas. Lasīt vairāk kas var palīdzēt jums sākt.

Terminālī izveidojiet jaunu skriptu:

nano test.py

Pēc atvēršanas pievienojiet failam šo kodu un nospiediet Ctrl-C, lai aizvērtu, pēc saglabāšanas dialoga:

# Šis kods tika rakstīts rakstam www. Ian Buckley veidoja MakeUseOf.com. importēt RPi. GPIO kā GPIO. importa laiks. 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), kamēr ir patiess: GPIO.output (7, GPIO.HIGH), ja (GPIO.input (11) == 1): print (“Button on GPIO 11”) time.sleep (1 ) ja (GPIO.input (13) == 1): print ("Button on GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Button on GPIO 15") time .miegs (1) GPIO.cleanup ()

Šis kods nolasa pogu vērtību un izdrukā uz ekrāna, kad tās mainās. Abām spiedpogām ir nolaižamie rezistori, tāpēc nospiežot, tās ziņo par AUGSTU. Niedru magnēta slēdzis ziņo HIGH, kad tuvu tam pievienotais magnēts.

slēdži

Palaidiet programmu:

python test.py

Jums vajadzētu redzēt LED indikatoru un ziņojumu uz ekrāna, kad nospiežat abas pogas un velkat magnētu prom no niedru slēdža. Ja, nospiežot pogas, jūs nesaņemat atsauksmes, vēlreiz pārbaudiet shēmu un pārliecinieties, vai viss ir savienots tā, kā tam vajadzētu būt. Kad esat pabeidzis testēšanu, nospiediet CTRL-C pārtraukt programmu.

pārbaude

Tagad mēs varam izveidot vienkāršu programmu durvju sensora iestatīšanai, iedarbināšanai un atiestatīšanai. Mēs apskatīsim kodu pa daļām un īsi paskaidrosim, ko katra daļa dara, lai gan, ja vēlaties redzēt pilnu kodu, ritiniet uz leju, lai tas tiktu parādīts pilnā apjomā.

Mums jāsāk, importējot dažus moduļus:

import Rpi. GPIO kā GPIO. importēt pygame.mixer. importa laiks. 

Mēs izmantosim Pygame modulis, lai atskaņotu mūsu mūziku. Standarta komplektācijā ietilpst Raspbian Jessie, un tā ir lieliska bibliotēka visam, kas jums nepieciešams Python spēļu un daudzu citu lietu veidošanai. pārsteidzoši projekti Kā izveidot Aveņu Pi čivināt BotTwitter ir pasaulē lielākā īsziņu krātuve no cilvēkiem, kam nav ko teikt - un tagad arī jūs varat dot ieguldījumu šajā episkajā projektā ar automatizētu Twitter robotprogrammatūru, kuru darbina jūsu Aveņu ... Lasīt vairāk .

Mēs izmantosim mainīgo ar nosaukumu aktīvs izlemt, vai mūsu sistēma ir aktīva vai nē. Definēsim dažas funkcijas, kas to darīs mūsu labā:

def activeSetup (): globāli aktīvs aktīvs = 0 print ("Pašlaik nav aktīvs") def activeState (): globāls aktīvs, ja aktīvs == 1: aktīvs = 0 GPIO.output (7, GPIO.LOW) print ("Pašlaik nav aktīvs") elif active == 0: print ("aktivizēšana 10 sekundēs") x diapazonā (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 ("Pašlaik Aktīvs ") cits: atgriezties. 

Pirmā funkcija šeit izveido mainīgo ar nosaukumu aktīvs, un iestata to uz 0. Piešķirot aktīvajam stāvoklim skaitlisku vērtību, tas nozīmē, ka, ja plānojat vēlāk palielināt programmas mērogu, lai tajā būtu dažādi aktīvi stāvokļi, varat tos attiecīgi numurēt. Lai arī tā varbūt nav labākā Python programmēšana pasaulē, ar to pietiks šim projektam.

Otrā funkcija, kad tiek izsaukta, pārbauda, ​​vai sistēma ir aktīva (vai aktīvs == 1). Ja tā ir, tā iestata sistēmu neaktīvu (aktīvs == 0), izslēdz gaismas diodi un izdrukā uz konsoli. Ja tā nav, tas dod jums 10 sekunžu atpakaļskaitīšanu, lai atstātu telpu, kurā mirgo gaismas diode, un tikai tad ieslēdziet, lai parādītu, ka sistēma ir aktīva.

Tagad mēs varam definēt funkciju, kas vēro mūsu niedru magnēta slēdzi:

def watchDoor (): globāla spēlēšana = kļūdaina, bet patiesa: ja aktīva == 1 un GPIO.input (15) == 1 un spēlē == nepatiesa: spēlē = patiesa pygame.mixer.music.play (), ja GPIO.input (13) == 1: drukāt ("Nospiest pogu nospiestu: Iziet") pygame.mixer.music.stop () pārtraukt, ja GPIO.input (11) == 1: activeState () time.sleep (0.5)

Mēs šeit izveidojam vēl vienu mainīgo ar nosaukumu spēlē - tas ir vienkārši, lai apturētu programmu, kas mēģina sākt spēlēt atkārtoti, kad tiek iedarbināts slēdzis.

Kamēr cilpa atrodas, pirmais, ja paziņojums sāk mūziku (kuras mums vēl nav, bet par to nav jāuztraucas, tā nāk). Tas ļauj mūzikai sākties tikai tad, ja sistēma ir aktīva, niedru slēdzis ir atvērts un tas vēl netiek atskaņots.

Otrais paziņojums ir paredzēts mūsu izejas pogai. Nospiežot šo pogu, mūzika apstājas un programma tiek aizvērta.

Trešais paziņojums ir paredzēts, lai pārslēgtu, vai sistēma ir aktīva. laiks.miegs funkcija šeit ir novērst vairāku pogu lasīšanu, kad tā tiek nospiesta.

Tagad ir laiks uzstādīt Pi piespraudes.

GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, sākotnējais = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)

Ja esat kādreiz eksperimentējis ar Pi, tas jums vajadzētu būt pazīstamam. sākotnējais = GPIO.LOW Arhīvs 7. tapas iestatīšanā to pazemina, tiklīdz tas tiek inicializēts.

Tagad mēs varam piezvanīt savai funkcijai, kas iestatīs, ka sistēma nav aktīva, startējot programmai.

activeSetup ()

Mūzikas maestro!

Šajā brīdī mums jāsāk domāt par atskaņojamo mūziku. Jūs varat izvēlēties jebkuru mūzikas failu, kuru vēlaties, bet mēs pagaidām izvēlamies kaut ko visiem pieejamu. Ja skatāties YouTube, jūs, iespējams, jau esat iepazinies ar Kevina MacLeod mūziku. Ļauj lejupielādēt fantastisku melodiju, ko viņš sauc “Vienas acs maestro”. Tas, tāpat kā liela daļa mūzikas viņa vietnē, ir licencēts saskaņā ar Creative Commons, un ir daudz labu iemeslu Kas ir Creative Commons un nekomerciāls lietojums?Kas ir Creative Commons? Ko nozīmē "nekomerciāla izmantošana"? Uzziniet par Creative Commons licencēm un to darbību. Lasīt vairāk projektos izmantot saturu ar šīm licencēm.

wget

Atpakaļ mūsu kodā mums jāuzsāk Pygame mikseris un jāielādē melodija.

pygame.mixer.init (44100, -16,21024) pygame.mixer.music.set_volume (1.0) name = "Vienas acs Maestro.mp3" pygame.mixer.music.load (nosaukums) print ("Iekrauts celiņš -" + str (nosaukums))

Šī bloka pirmā rinda iniciē Pygame maisītājs. Pēdējais arguments iekavās ir buferis, kas kontrolē latentumu, kurā tiek atskaņota skaņa. Ja vēlāk, atskaņojot mūziku, rodas nemierīga atskaņošana, mēģiniet palielināt šo numuru līdz 4096. Iestatījumi, kādi tie ir, darbojas bez Pi 3 izdošanas.

Ja mūzikas failu lejupielādējāt citā direktorijā, kas atrodas jūsu durvju.py programmai, nosakot nosaukuma mainīgo, jums būs jānorāda viss ceļš iekavās.

Tagad viss, kas jādara, ir izveidots cilpa, kas gaida, kad mēs vai nu aktivizēsim programmu, vai iziesim no tās.

kamēr taisnība: ja (GPIO.input (13) == 1): print ("Stop taustiņš nospiests: Exiting") pygame.mixer.music.stop () pārtraukums, ja (GPIO.input (11) == 1): activeState () time.sleep (0,5) if (active == 1): watchDoor () break GPIO.cleanup ()

Kamēr cilpa gaida ievadi no jebkuras pogas, attiecīgi aizver vai maina stāvokli uz aktīvu. Ja aktīvā stāvokļa vērtība ir 1, tad watchDoor funkcija, kuru mēs iepriekš definējām, tiek izsaukta, un nākamreiz, kad durvis atvērsies, tiks atskaņota mūsu melodija. Mēs arī zvana GPIO.cleanup () atiestatīt mūsu kontaktdakšas izejot, kas parasti ir laba prakse visām Raspberry Pi programmēšanas programmām.

Tas ir viss, kas mums jādara, lai šis projekts darbotos un darbotos, šeit ir pilns kods:

importēt RPi. GPIO kā GPIO. importēt pygame.mixer. importa laiks def activeSetup (): globāli aktīvs aktīvs = 0 izdruka ("Pašlaik nav aktīvs") def activeState (): globāls aktīvs, ja aktīvs == 1: aktīvs = 0 GPIO.output (7, GPIO.LOW) drukāšana ("Pašlaik Nē Aktīvs ") elif aktīvs == 0: drukāšana (" aktivizēšana 10 sekundēs ") x diapazonā (0,10): GPIO. izeja (7, GPIO.HIGH) laiks.miegs (0,5) GPIO.izvade (7, GPIO.LOW) time.sleep (0.5) aktīvs = 1 GPIO.output (7, GPIO.HIGH) print ("Pašlaik aktīvs") cits: atgriešanās def watchDoor (): globāla spēlēšana spēlē = nepatiesa, bet patiesa: ja aktīva == 1 un GPIO.input (15) == 1 un spēlē == nepatiesa: spēlē = patiesi pygame.mixer.music.play (), ja GPIO.input (13) == 1: drukāt ("Nospiest pogu nospiestu: Iziet") pygame.mixer.music.stop () pārtraukt, ja GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, sākotnējais = 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 = "Vienas acs Maestro.mp3" pygame.mixer.music.load (nosaukums) print ("Iekrauts celiņš -" + str (nosaukums)), kamēr True: if (GPIO.input (13) == 1): print ("Stop poga nospiesta: izejot") pygame.mixer.music.stop () pārtraukums, ja (GPIO.input (11) == 1): activeState () time.sleep (0,5) if (active == 1): watchDoor () break GPIO.cleanup ()

Ja ritinājāt šeit uz leju, lai uzreiz iegūtu visu kodu, ņemiet vērā, ka jums joprojām būs jālejupielādē mūzika uz jūsu Pi, lai tā darbotos!

Tagad jums vajadzētu būt funkcionējošai gaidīšanas mājas tēmas melodijai! Pievienojiet niedru slēdzi pie durvīm un izmēģiniet to. Neērts dejot nav obligāti, bet ieteicams.

Šis projekts ietvēra pamatus daudzām mājas uzraudzības, drošības un automatizācijas formām, un, cerams, arī tas bija jautri!

Tagad, kad esat nonācis tik tālu, kāpēc tur apstāties? Jūs varētu pievienot vairāk celiņus un likt programmai izlases veidā izvēlēties kādu no ierakstiem. Tu varētu pievienojiet releju Darba sākšana ar GPIO par Aveņu PiJa jūs, kaut arī Arduino bijāt foršs, vienkārši pagaidiet, kamēr jūs nokļūsit rokās Raspberry Pi - šīs lietas ir pārsteidzošas. Viņiem ir ne tikai pilnībā funkcionējošs dators, bet arī ... Lasīt vairāk un, iebraucot, tiek aktivizēti citi objekti. Ja jums ir mājas mūzikas sistēma, kāpēc gan katrā istabā nebūtu tēmas dziesmas?

releju gaismas

Vai jūs izstrādāsit savu personīgo sveiciena mājas ziņojumu? Vai esat izgudrojis ar niedru slēdžiem savās mājās citos veidos? Ja tā, atstājiet komentāru par to, ko plānojat vai jau esat paveicis, komentāru sadaļā zemāk!

Ians Baklijs ir ārštata žurnālists, mūziķis, izpildītājs un video producents, kas dzīvo Berlīnē, Vācijā. Kad viņš neraksta un neuzstājas uz skatuves, viņš aizraujas ar DIY elektroniku vai kodu, cerot kļūt par neprātīgu zinātnieku.