Oglas
Jeste li ikada željeli doći kući na osobni doček? Uz Raspberry Pi i nekoliko jednostavnih komponenti možete! U ovom jednostavnom projektu koristit ćemo trske za prebacivanje teme kako bismo pokrenuli temu podešavanja prilikom otvaranja vrata. Ovdje ćemo koristiti Raspberry Pi kao kontroler, iako biste ga mogli koristiti gotovo bilo koji drugi mikrokontroler Mikrokontroleri od 5 dolara: Arduino, Raspberry Pi Zero ili NodeMCU?Nekada je bio slučaj da bi, ako želiš nabaviti računalo, morao zamijeniti kuću da je platiš. Sada ga možete dobiti za Abrahama Lincolna. Čitaj više za ovaj projekt koristeći isti krug. Evo vam demonstracije.
Trebat će vam
Vjerojatno ćete već posjedovati sve dijelove koji su vam potrebni za izradu, osim prekidača trske, koji iznosi oko 2-3 USD, ili možete dobiti paket od 5 za nešto više od 8 USD ovdje.
- Raspberry Pi (bilo koji model će raditi za to).
- Otpornik 1 x 220 Ohm.
- Otpornik 1 x 1K Ohm.
- Otpornik 3 x 10K Ohm.
- 1 x magnetska trska sklopka.
- 1 x LED.
- 2 x sklopka s gumbom.
- Maketa.
- Kabeli za spajanje.
- Zvučnik računala ili slično.
Raspberry Pi ćemo iskoristiti za reprodukciju pjesme kad se uđe u sobu i osmisliti krug s tipkama na našoj ploči da biste je aktivirali na odgodu i zaustavili program.
Ovaj projekt, iako je napravljen uglavnom za zabavu, pokriva osnove za mnoge aplikacije u Napravite kućnu automatizaciju Vodič za kućnu automatizaciju Raspberry Pi i ArduinoTržište kućne automatizacije preplavljeno je skupim potrošačkim sustavima, nespojivim jedni s drugima i skupim za instalaciju. Ako imate Raspberry Pi i Arduino, u osnovi možete postići isto na ... Čitaj više I također Napravite kućnu sigurnost Tražite li rješenje za kućni sigurnosni sustav DIY? Isprobajte jedan od ovihU doba digitalne tehnologije i uvijek povezanog hardvera, postavljanje kućnog sigurnosnog sustava trebalo bi nadići umjetnost postavljanja kućice u obliku alarma na zid. Čitaj više
Početak rada
Počnimo s pravljenjem našeg kruga. Provjerite je li Pi bez napajanja i postavite svoj krug ovako:
LED je spojen na pin 7 na našem pi. Dvije sklopke tipki pričvršćene su na iglice 11 i 13, a trska sklopka se povezuje s iglom 15. Naša snaga ide na pin 1 (3v3) i pin 6 (Gnd).
Svakako provjerite je li sve točno na pravom mjestu.
Dok testirate ovaj projekt, možda će vam pomoći da stalak i dalje držite ispred sebe kako biste ga mogli lako uključiti ili isključiti. U ovom je slučaju trska sklopka već postavljena iznad vrata. Nakon što se projekt pokrene, prekidač možete privremeno pričvrstiti na svoja vrata traku ili ako se osjećate sigurnije možete je trajnije pričvrstiti za upotrebu u budućnosti projekti!
Spojite 3,5 mm izlaz priključka od Pi-a na svoj sustav zvučnika. Kad se sve sastavi, trebao bi izgledati ovako:
Imajte na umu da ovdje korištena ploča ima struju, obrnuto na gornji dijagram Fritzing.
Sada uključite svoj Pi i pristupite mu putem SSH kako bismo mogli pristupiti terminalu. Ako niste sigurni kako to učiniti, ovaj vodič Postavljanje vašeg Raspberry Pi-a za upotrebu bez glave sa SSH-omRaspberry Pi može prihvatiti SSH naredbe kada su spojeni na lokalnu mrežu (bilo putem Etherneta ili Wi-Fi-ja), omogućujući vam jednostavno postavljanje. Prednosti SSH-a nadilaze narušavanje dnevnog probira ... Čitaj više mogu ti pomoći. Ako koristite Raspberry Pi s monitorom, mišem i tipkovnicom, preskočite ovaj korak i otvorite terminal.
Prije početka, vrijedno je provjeriti jeste li u toku. Tip sudo apt-get update
u terminal.
Sada možemo preći na to da naš Pi razgovara s našim krugom.
Ispitivanje naše postavke
Za početak, provjerimo naš krug pomoću jednostavnog programa. Ako ste sigurni da ste dosad sve dobro ispravili, ovaj korak možete preskočiti, mada bih to preporučio jer kasnije možete uštedjeti glavobolju.
Ako nikada prije niste programirali na Pythonu i osjećate se pomalo zakinutim, postoji mnoštvo sjajne web stranice 5 najboljih web stranica za učenje programiranja PythonaŽelite naučiti programiranje Pythona? Evo najboljih načina za učenje Pythona na mreži, od kojih su mnogi potpuno besplatni. Čitaj više što vam može pomoći da započnete.
U terminalu stvorite novu skriptu:
nano test.py
Nakon otvaranja dodajte ovaj kôd u datoteku i pritisnite Ctrl-C da biste je napustili, slijedeći dijalog za spremanje:
#Ova šifra napisana je za članak na www. MakeUseOf.com Ian Buckley. uvoz RPi. GPIO kao GPIO. vrijeme uvoza GPIO.set upozorenja (laž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) dok je Istina: GPIO.output (7, GPIO.HIGH) ako (GPIO.input (11) == 1): print ("Gumb na GPIO 11") time.sleep (1 ) ako (GPIO.input (13) == 1): ispis ("Gumb na GPIO 13") time.sep (1) if (GPIO.input (15) == 1): print ("Gumb na GPIO 15") vrijeme .spavati (1) GPIO.cleanup ()
Ovaj kod čita vrijednost gumba i ispisuje na zaslonu kad se promijene. Dva gumba imaju otporne prema dolje, tako da pod pritiskom izveštavaju VISOKO. Prekidač trske magnete prijavljuje VISOKI kad god je njegov prateći magnet blizu.
Pokrenite program:
python test.py
Trebali biste vidjeti LED svjetlo i izvješće na ekranu kada pritisnete svoja dva gumba i magnet odvučete od trske. Ako tijekom pritiska na gumbe ne dobijete povratne informacije, ponovo provjerite strujni krug i provjerite je li sve povezano kako treba. Kada završite s testiranjem, pritisnite Ctrl-C za zaustavljanje programa.
Sada možemo sastaviti jednostavan program za postavljanje, pokretanje i resetiranje senzora vrata. Dijelićemo kôd u dijelovima i ukratko ćemo objasniti što svaki dio radi, iako ako želite vidjeti cijeli kod, pomaknite se prema dolje da biste ga prikazali u cijelosti.
Za početak moramo uvesti neke module:
uvoz Rpi. GPIO kao GPIO. uvoz pygame.mixer. vrijeme uvoza
Koristit ćemo se Pygame modul za reprodukciju naše glazbe. Standardno dolazi uz Raspbian Jessie i izvrsna je knjižnica za sve što vam treba za izradu Python igara i mnogih drugih nevjerojatni projekti Kako izgraditi malina Pi Twitter botTwitter je najveće svjetsko skladište kratkih poruka ljudi koji nemaju što za reći - i sada i vi možete doprinijeti tom epskom projektu s automatiziranim robotskim Twitterom, koji pokreće vaš Kupina... Čitaj više .
Koristit ćemo varijablu zvanu aktivan da odlučimo je li naš sustav aktivan ili ne. Definirajmo nekoliko funkcija koje će to učiniti za nas:
def activeSetup (): globalna aktivna aktivna = 0 ispisu ("Trenutno nije aktivna") def activeState (): globalna aktivna ako je aktivna == 1: aktivna = 0 Ispis GPIO.output (7, GPIO.LOW) ("trenutno nije aktivan") elif active == 0: ispis ("aktiviranje u 10 sekundi") za x u rasponu (0,10): GPIO.output (7, GPIO.HIGH) time.sep (0,5) GPIO.output (7, GPIO.LOW) time.sleep (0,5) active = 1 GPIO.output (7, GPIO.HIGH) ispis ("Trenutno Aktivno ") ostalo: povratak.
Prva funkcija ovdje stvara varijablu pod nazivom aktivan, i postavlja ga na 0. Davanje aktivnog stanja numeričkim vrijednostima znači da ako planirate kasnije povećati svoj program da ima različita aktivna stanja, možete ih u skladu s brojevima. Iako možda nije najbolje Python programiranje na svijetu, više će biti dovoljno za ovaj projekt.
Druga funkcija kad se zove provjerava je li sustav aktivan (ili Aktivni == 1). Ako jest, postavlja sustav na neaktivan (Aktivni == 0), isključuje LED i ispisuje na konzolu. Ako nije, daje vam odbrojavanje od 10 sekundi za napuštanje sobe u kojoj treperi LED, prije nego što ostane uključeno i pokaže da je sustav aktivan.
Sada možemo definirati funkciju koja će nadgledati našu sklopku od trske:
def watchDoor (): globalno igranje igra = False dok je True: ako je aktivno == 1 i GPIO.input (15) == 1 i igra == False: igra = True pygame.mixer.music.play () ako je GPIO.input (13) == 1: ispisati (pritisnuti gumb za zaustavljanje: Izlazni) pygame.mixer.music.stop () prekinuti ako GPIO.input (11) == 1: activeState () vrijeme.spava (0,5)
Ovdje stvaramo još jednu varijablu koja se zove igranje - ovo je jednostavno za zaustavljanje programa koji pokušava pokrenuti reprodukciju opetovano kad se uključi.
Unutar petlje while, prva ako izjava pokrene glazbu (koju još nemamo, ali ne brinemo, stiže). Pusti glazbu samo ako je sustav aktivan, trska je prekidač otvoren i još ne svira.
Druga ako je izjava za naš izlazni gumb. Ako se pritisne ovaj gumb, glazba se zaustavlja i program izlazi.
Treća ako je izjava za uključivanje je li sustav aktivan ili ne. time.sleep ovdje je funkcija da se spriječi višestruko očitavanje gumba kad se pritisne.
Sada je vrijeme da postavimo Pinove igle.
GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, početno = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)
Ako ste eksperimentirali s Pi, prije bi vam ovo trebalo biti poznato. početni = GPIO.LOW argument u postavci pin 7 postavlja na niže čim se inicijalizira.
Sada možemo nazvati našu funkciju koja će postaviti sustav da ne bude aktivan kad se pokrene program.
activeSetup ()
Glazba Maestro!
U ovom trenutku trebali bismo započeti razmišljati o glazbi koju sviramo. Možete odabrati bilo koju glazbenu datoteku koju želite, ali mi ćemo za sada izabrati nešto dostupno svima. Ako gledate YouTube, vjerojatno ste već upoznati s glazbom Kevina MacLeoda. Omogućimo preuzimanje fantastične melodije nazvane "Maestro s jednim očima". To je, zajedno s većinom glazbe na njegovoj web lokaciji, licencirano pod Creative Commonsom, a tu su i one mnogo dobrih razloga Što je Creative Commons i nekomercijalna upotreba?Što je Creative Commons? Što znači "nekomercijalna upotreba"? Saznajte više o Creative Commons licencama i kako rade. Čitaj više za korištenje sadržaja s ovim licencama za svoje projekte.
Povratak na naš kôd, moramo pokrenuti mikser Pygame i učitati našu melodiju.
pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro s jednim očima .mp3" pygame.mixer.music.load (ime) ispis ("Učitana pjesma -" + str (ime))
Prvi redak ovog bloka pokreće Pygame mikser. Posljednji argument u zagradama je međuspremnik koji kontrolira kašnjenje u kojem se reproducira zvuk. Ako kasnije tijekom reprodukcije glazbe osjetite čarobnu reprodukciju, pokušajte povećati taj broj na 4096. Postavke koje rade bez problema na Pi 3.
Ako ste preuzeli svoju glazbenu datoteku u drugu mapu na svoju door.py programa, morat ćete navesti puni put unutar zagrada kada definirate naziv varijable.
Sada preostaje samo postaviti petlju koja čeka da ili program postavimo aktivan ili ga napustimo.
dok je istina: ako je (GPIO.input (13) == 1): ispisati (pritisnut gumb za zaustavljanje: izlazak) pygame.mixer.music.stop () break if (GPIO.input (11) == 1): activeState () vrijeme.sleep (0,5) ako (active == 1): watchDoor () break GPIO.cleanup ()
Ovo vrijeme dok petlja čeka unos s bilo kojeg gumba, te na taj način prekida ili mijenja stanje u aktivno. Ako stanje aktivnog postane 1, tada je watchDoor funkcija koju smo ranije definirali zove se i sljedeći put kada se vrata otvore, svira se naša melodija. Također zovemo GPIO.cleanup () da resetiramo naše igle pri izlasku, što je općenito dobra praksa za sve programe na Raspberry Pi.
To je sve što moramo da započnemo s pokretanjem ovog projekta, evo koda u cijelosti:
uvoz RPi. GPIO kao GPIO. uvoz pygame.mixer. vrijeme uvoza def activeSetup (): globalna aktivna aktivna = 0 ispisa ("trenutno nije aktivna") def activeState (): globalna aktivna ako je aktivna == 1: aktivna = 0 GPIO.output (7, GPIO.LOW) ispis ("Trenutno Ne Active ") elif active == 0: ispis (" Aktiviranje u 10 sekundi ") za x u rasponu (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0,5) GPIO.output (7, GPIO.LOW) vrijeme.sleep (0,5) aktivno = 1 GPIO.output (7, GPIO.HIGH) ispis ("Trenutno aktivno") ostalo: povratak def watchDoor (): globalno igranje igra = False while True: ako je aktivno == 1 i GPIO.input (15) == 1 i igra == False: igra = Istina pygame.mixer.music.play () ako je GPIO.input (13) == 1: ispisati (pritisnuti gumb za zaustavljanje: Izlazni) pygame.mixer.music.stop () prekinuti ako GPIO.input (11) == 1: activeState () vrijeme.spava (0,5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, poč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 = "Maestro s jednim očima .mp3" pygame.mixer.music.load (ime) ispis ("Učitana pjesma -" + str (ime)) dok je Istina: ako (GPIO.input (13) == 1): ispis ("Pritisnite gumb Stop: Izlaz") pygame.mixer.music.stop () prekid ako (GPIO.input (11) == 1): activeState () vrijeme.sep (0,5) ako (active == 1): watchDoor () break GPIO.cleanup ()
Ako se ovdje pomaknete kako biste odmah preuzeli kompletni kôd, imajte na umu da ćete glazbu morati preuzeti na svoj Pi da bi mogao raditi!
Sada biste trebali imati funkcionalnu melodiju dobrodošlice kod kuće! Pričvrstite štapni prekidač na vrata i isprobajte ga. Sramotno plesanje nije obavezno, ali se preporučuje.
Ovaj projekt pokrivao je osnove mnogih oblika praćenja, sigurnosti i automatizacije u kući, a nadamo se da je i to bilo zabavno!
Sad kad ste stigli toliko daleko, zašto se ovdje zaustaviti? Možete dodati više pjesama i program odabrati nasumično jednu s popisa. Mogao bi dodajte relej Prvi koraci s GPIO na Raspberry PiAko vam je Arduino u redu, samo pričekajte dok ne uđete u ruke Raspberry Pi - ove su stvari nevjerojatne. Osim što su u potpunosti funkcionalno računalo, oni imaju i ... Čitaj više te da se na ulasku pokreću drugi objekti. Ako imate kućni glazbeni sustav, zašto ne biste imali tematsku pjesmu za svaku sobu?
Hoćete li dizajnirati svoju osobnu poruku dobrodošlice kući? Jeste li bili inventivni s trsnim prekidačima u vašem domu na druge načine? Ako je to slučaj, ostavite komentar o onome što planirate ili ste već učinili u odjeljku s komentarima u nastavku!
Ian Buckley je slobodni novinar, glazbenik, izvođač i video producent koji živi u Berlinu, Njemačka. Kad ne piše ili ne govori na pozornici, bavi se uradi sam elektronikom ili kodom u nadi da će postati lud znanstvenik.