
Peter Holmes
0
4704
475
Pssst - želite neku visoku tehnologiju zaštite svog kućnog ureda ili tajnu bravu za svoj “radionica” (ok, shvatio si me, zapravo je tamnica / igraonica) da djeca neće moći shvatiti? Pokrili smo vas. Izradimo DIY pametnu bravu koja automatski prepoznaje kad ste tamo i zaključava kad niste.
Kako radi? NITKO NE ZNA! Ili točnije, Bluetooth.
Koncept
Vaš je pametni telefon moćan uređaj koji neprestano otkriva podatke o sebi vanjskom svijetu; jedan način da se to postigne je Bluetooth.
U načinu otkrivanja emitira jedinstveni identifikacijski broj - ali čak i kada posebno ne dopušta da ga se otkrije, sve što zna tu adresu može pokušati upisati. Ako se čuje odgovor, to bi značilo je li u dometu ili ne.
Postavit ćemo Raspberry Pi s Bluetooth adapterom kako bismo neprestano bili u potrazi kada je vaš pametni telefon izvan dometa, a kada jest, relej će krenuti u akciju i zaključati vrata.
Trebat će vam
- Raspberry Pi - bilo koji model trebao bi raditi jer to nije CPU-ov intenzivan zadatak, ali koristim stariji model B, a GPIO isječci mogu se malo razlikovati na vašem modelu. Pogledajte odjeljak o načinu rada na ploči u nastavku. Trebat će vam i neke osnove kao što je ožičena Ethernet veza ili Wi-Fi konfigurirano Postavljanje bežične mreže na vašem Raspberry Pi Podešavanje bežičnog umrežavanja na vašem Raspberry Pi-ju Praktično svaki projekt Raspberry Pi zahtijeva mrežnu vezu, a može se postići znatna fleksibilnost ignoriranjem Ethernet porta u korist bežičnog USB ključa. ; plus SD kartica i mikro USB kabel za napajanje.
- Bluetooth USB adapter. Adafruit prodaje Bluetooth 4.0 BLE modul koji je potvrdio da radi (što je Bluetooth 4.0? Kako Bluetooth 4.0 oblikuje budućnost mobilne povezanosti. Kako Bluetooth 4.0 oblikuje budućnost mobilne povezanosti. Bluetooth je zaboravljena zvijezda na listu s specifikacijama uređaja.), Ali trebali biste testirajte sve već ležeći prije kupnje novog samo za ovaj projekt. Pronašao sam stari standardni mini mini adapter koji sam kupio u Japanu, a čini se da djeluje u redu. Nije nas briga za brzinu prijenosa ili pouzdanost veze, jer sve što radimo je da pošaljemo brzo rukovanje da vidimo je li uređaj živ i zdrav.
- GPIO prekidna ploča (“obućar”) i skakači. Mogli biste raditi izravno iz pinova na Pi-u, ali puno je lakše ako imate naljepnice na svakom iglu, a ionako su samo 6 USD.
- Ploča releja. Ovdje imate širok izbor, a bilo što će uspjeti ako je osmišljen za upotrebu s mikrokontrolerom i može pokretati najmanje 12 volti pri 5 ampera. Koristio sam generičku 4-kanalnu ploču sličnu ovoj za oko $ 5, ali pretpostavit ću da znate kako raditi vaš.
- 12 / 24V zaključavanje elektromagneta, iako bi elektronički magnetni zaključavanje također trebao raditi. Onaj koji sam kupio ima snagu izdržavanja od 180 kg i isporučuje se s montažnim pločicama i uputama za približno 35 USD.
- 12 / 24V napajanje. Magnetna brava mora imati odvojeno napajanje - što god radili, nemojte pokušavati da izvučete struju iz Pi-a.
- Aplikacija Lock.py Python, ali to ćemo pisati dok nastavljamo.
Rad s Bluetoothom
Bluetooth je središnji dio ovog projekta, pa krenimo instaliranjem Bluetooth podrške i testiramo naš adapter. To možete učiniti izravno s Pi-a ili SSH-a na daljinu (kako podesiti Windows na SSH u vas Pi Postavljanje vašeg Raspberry Pi-a za bezglavu upotrebu sa SSH-om. Postavljanje vašeg Raspberry Pi-a za bezglavu upotrebu sa SSH-om Raspberry Pi može prihvatiti SSH naredbe kada su povezane s lokalnom mrežom (bilo putem Ethernet-a ili Wi-Fi-ja), omogućujući vam jednostavno postavljanje. Prednosti SSH-a nadilaze prilagođavanje dnevnog pregleda…).
sudo apt-get install bluez python-bluez
Ako već niste, umetnite svoj dongle i pogledajmo što izvještava.
hcitool dev
Ako imate nešto nabrojeno u izlazu, dobro krenete. Zatim ćemo koristiti Python skriptu za ispitivanje Bluetooth uređaja u blizini i zgrabiti jedinstvenu adresu uređaja. To moramo učiniti samo jednom za svaki uređaj.
wget https://raw.githubusercontent.com/karulis/pybluez/master/examples/simple/inquiry.py python upit.py
Ako vidiš “Pronađeno 0 uređaja”, ili nemate kompatibilni USB Bluetooth ključ ili se vaš pametni telefon ne može otkriti. Ipak, ne očajavajte: otkrio sam da moram otvoriti stranicu postavki Bluetooth na svom iPhoneu da bih ga otvorio u način otkrivanja, a to se dogodilo:
Sjajno, sada ćemo stvoriti prvu fazu našeg softvera koji otkrivaju. Napravite aplikaciju Python pod nazivom detect.py, i otvori ga s Nanoom.
nano detect.py
Zalijepite u ovaj uzorak kod:
#! / usr / bin / python uvozi vrijeme uvoza bluetooth-a, dok je True: ispis "Provjera" + time.strearch ("% a,% d% b% Y% H:% M:% S", time.gmtime ()) rezultat = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', istek vremena = 5) if (rezultat! = nijedan): ispisati "Korisnik prisutan" drugo: ispisati "Korisnik izvan dometa" time.sleep ( 10)
i prilagodite sljedeći redak s adresom Bluetooth uređaja:
rezultat = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', istek vremena = 5)
tisak CTRL-X i Y zatvoriti i spremiti. Pokrenite isti kod i vidjet ćete nešto takvo:
Kôd bi trebao biti vrlo jednostavan za razumijevanje, čak i ako se nikada prije niste dotakli Pythona: skenira određeni Bluetooth uređaj svakih 10 sekundi i ispisuje drugačiju poruku, ovisno o tome je li pronađen ili ne. Uključite Bluetooth na svom telefonu da biste simulirali kretanje izvan i izvan dosega (vjerojatno oko 4m u stvarnosti). Možete smanjiti ili povećati vrijeme između skeniranja, ali smatrao sam da je 10 sekundi razumno vrijeme kako bih potencijalno morao čekati da se vrata otključaju, na kraju krajeva i cijeli ovaj projekt..
Moram dodati, ne znam za potrošnju energije radi ovoga, ali pretpostavljam da bi češće pingiranje uređaja zahtijevalo više energije. Nisam vidio nijedne očigledne poteškoće s performansama pri testiranju, ali ako je vijek trajanja baterije za vas ozbiljna briga, razmislite o prekidaču u vašem uredu koji aktivira i deaktivira petlju skeniranja, tako da kad ste unutra, možete pauzirati zaključavanje sustavu, a zatim ponovno aktivirajte skeniranje kad napustite.
Čestitamo, sada imate Python aplikaciju koja zna kada ste u dometu, tako da možemo početi djelovati na tome.
Načini GPIO ploče
Prije nastavka morate utvrditi koji ćete način rada ploče koristiti. Nema ispravnog ili pogrešnog odgovora, on samo utječe na to da li navedete doslovni broj PIN-a ili virtualni broj GPIO pin-a.
Zadana je upotreba doslovnog PIN broja (“način rada ploče”), počevši s iglom 1 u donjem lijevom dijelu (ako gledate prema Pi s USB priključcima s desne strane). Pin 2 je upravo iznad toga.
Međutim, ako imate GPIO proboj (“obućar”) ploče, naljepnice koje imate imaju iz alternativnog načina naziva “BCM” (Broadcom SOC kanal), a uobičajeno se pišu GPIO ili P s prefiksom broja. Ne trebate strogo GPIO isječak - to stvari jednostavno olakšava. Ako nemate zaštitnu ploču i ne želite je kupiti, koristite ovaj dijagram:
Raspberry Pi model A i B uzbudni dijagram kompanije RaspberryPi.org
Imajte na umu da izvorni model B, revizija 1, verzija 2, i modeli B + i Pi2 imaju različite izlaze s pinovima. Pogledajte ovo pitanje StackExchange za dijagram ispravan na vašoj ploči.
U ovom šifri projekta koristim BCM GPIO sustav numeriranja koji odgovara Adafruit razbijačkoj ploči koju imam. Potrebne su sitne izmjene ako želite koristiti doslovni način pin.
Žica u releju
Pričvrstite prelaznu ploču pazeći da žica s pinova 1 i 2 (one u kutu vašeg Pi-a) pričvršćuje na 3v3 i 5V0 na otvoru. Možda biste htjeli izvući tester napona da provjerite ovo.
Prije nastavka provjerite je li netko drugi upotrijebio vaš određeni relej s Raspberry Pi (ili unaprijed pronađite onaj za koji znate da djeluje). Nekima će možda trebati 5V za aktiviranje - ali RPi može pružiti samo 3.3V na izlaznim pinovima GPIO. Slučajno je onaj koji koristim zadovoljan s 3,3 V, tako da mi više nije potreban dodatni krug, već samo 5V0 do VCC, GND u GND, i GPIO pin 23 za prvi ulaz releja.
Moj prethodni tutorial o GPIO Početak rada s GPIO Na Raspberry Pi Početak korištenja GPIO-a na Raspberry Pi Ako vam je Arduino u redu, samo pričekajte dok ne dođete na ruku Raspberry Pi - ove su stvari nevjerojatne. Osim što su u potpunosti funkcionalno računalo, oni također imaju ... pokazao je kako spojiti tranzistorski krug da biste povećali 3,3 do 5 V ako trebate (u stvari, za ovaj sam vodič koristio istu relejnu ploču, ali Ispada da ipak nisam trebao 5V).
Još nema potrebe za žicom u elektromagnetu jer ćete moći čuti zvučni klik kada se relej aktivira.
Sljedeće, uzmimo neki kôd za interakciju s GPIO portovima.
Počet ćemo testiranjem izvan Pythona kako bismo potvrdili da sve radi na samim portovima. Instalirajte wiringPi koji vam daje neke korisne alate za naredbeni redak.
git clone git: //git.drogon.net/wiringPi cd wiringPi ./build
Jednom instalirajte, konfigurirajte GPIO pin 23 za izlaz.
gpio -g način rada 23 out
Sada, brzo pregledajte sve portove za potvrdu
gpio -g readall
Imat ćete nešto slično ovome, mada je vaš model možda dulji na modelu B + ili Pi2 jer ima više GPIO pinova:
To u početku može biti malo zbunjujuće, ali tablica je podijeljena po sredini i redoslijed stupaca je obrnut na svakoj strani. S lijeve i krajnje desne strane je pinski broj BCM. Budući da koristimo 23, trebali biste vidjeti način koji je sada naveden kao OUT. Ovo je korisna mala naredba samo da biste dobro zamislili što se u bilo kojem trenutku događa sa svim vašim pribadačama.
Da biste pin napisali visok ili nizak, samo upotrijebite
gpio -g napisati 23 1 gpio -g napisati 23 0
Nadamo se da ako je relej ispravno ožičen, čut ćete ga kako se uključuje i isključuje. Ako ne, nemojte nastaviti sve dok niste pronašli ožičenje. Zapamtite, možda će vam trebati veći napon da aktivirate relej.
Nakon što potvrdite da relej i GPIO radi, dodajte Python module za GPIO.
sudo apt-get install python-dev python-rpi.gpio
A sada modificiramo Python aplikaciju da aktiviramo ili isključimo relej kada se telefon otkrije. Konačni kod pronaći ćete na ovom popisu. Kopirajte postojeće detect.py do novog lock.py, i dodajte sljedeće naredbe uvoza i postavljanja:
uvezete RPi.GPIO kao GPIO GPIO.setmode (GPIO.BCM) RELAY = 23 GPIO.setup (RELAY, GPIO.OUT)
U izjavi IF dodajte naredbu za aktiviranje ili isključenje releja. Imajte na umu da vaš relej može raditi s niskim ili visokim signalom, stoga ga prilagodite nakon testiranja.
GPIO.output (relay, 1)
Da biste pokrenuli ovu novu verziju, prefiksujte naredbu pomoću sudo - pristup GPIO zahtijeva root privilegije.
Spajanje
Nakon što potvrdite da relej aktivira senzor blizine, dodajte zaključavanje elektromagneta. Na strani releja dovedite 12 V pozitivno u terminal s oznakom COM (uobičajeno), a zatim pozitivni unos snage iz elektromagneta u terminal NO (normalno otvorena, tj. to obično nije spojeno na zajednički terminal, ali bit će kada aktivirate relej).
Spojite se na tlo od napajanja i elektromagneta na GND terminalu.
Pogledajte upute za ugradnju koje su isporučene s bravom; vrata moraju biti prilično gusta, a lakše je ako se otvore dalje od one strane na kojoj želite zaključati. Moje je bilo suprotno, pa mi je potreban nosač za ugradnju u obliku slova L, kao i dodatni komad drva za povećanje debljine vrata.
poboljšanja
Ovo je bio dokaz koncepta za mene koji treba nadograditi s drugim projektima, a zapravo samo zato da bih znatiželjne gledao iz svog ureda kad nisam tamo - nije osmišljen da predstavlja bezbjedan sigurnosni sustav. Za to će vam trebati rezervna baterija koja će zadržati protok struje u slučaju prekida.
Naravno, ako netko provali u vašu kuću i upada u problem da vam smanji moć, vjerovatno vam je veće pitanje da je to psihopat koji će vas ubiti, a ne slučajni provalnik. Također biste željeli fizičku bravu uz elektronsku i zaista veliku palicu.
Naravno, ova tehnika otkrivanja blizine pomoću Bluetooth-a nije ograničena samo na automatsko zaključavanje vrata - možete je upotrijebiti i za pokretanje otvaranja vrata garažnih vrata kad dođete kući ili uključivanje kućnog kina prije nego što uđete u vrata.
Što misliš, koju bih značajku trebao dodati sljedeće? Jeste li imali problema s tim? Javite mi u komentarima i dat ću sve od sebe da pomognem!