Faceți o ușă de birou cu blocare automată cu senzor de proximitate Smartphone
Pssst - doriți o protecție de înaltă tehnologie pentru biroul dvs. de acasă sau o închizătură secretă pentru dvs. “atelier” (ok, m-ai prins, este de fapt o camera de dungeon / gaming) că copiii nu vor putea să-și dea seama? Te-am acoperit. Să construim un sistem de blocare inteligent DIY care detectează automat când ești acolo și se blochează când nu ești.
Cum functioneazã? NIMENI NU STIE! Sau mai precis, Bluetooth.
Conceptul
Telefonul smartphone este un dispozitiv puternic care dezvăluie în mod constant informații despre lumea înconjurătoare; o modalitate de a face acest lucru este Bluetooth.
În modul descoperire, acesta transmite un număr unic de identificare - dar chiar și atunci când nu se permite să se descopere în mod specific, orice persoană care știe acea adresă poate încerca să o ping. Dacă se aude un răspuns, acest lucru ar indica dacă este în raza de acțiune sau nu.
Vom instala un Raspberry Pi cu un adaptor Bluetooth pentru a fi mereu în căutarea când telefonul dvs. smartphone este în afara razei de acțiune și când este, releul se va acționa și va bloca ușa.
Vei avea nevoie
- Raspberry Pi - orice model ar trebui sa functioneze deoarece nu este o sarcina intensiva a procesorului, dar folosesc un model mai vechi B, iar pinii GPIO pot fi putin diferiti pe modelul tau. Vedeți secțiunea de pe modul de bord de mai jos. De asemenea, veți avea nevoie de câteva elemente de bază cum ar fi o conexiune prin cablu Ethernet sau configurare Wi-Fi. Configurarea rețelei fără fir pe zmeura dvs. Pi Configurarea rețelei wireless pe zmeura dvs. Pi Practic, fiecare proiect Raspberry Pi va necesita o conexiune la rețea și o flexibilitate considerabilă poate fi obținută prin ignorarea portului Ethernet în favoarea unui dongle USB fără fir. Citeste mai mult ; plus card SD și cablu de alimentare micro USB.
- Adaptor USB Bluetooth. Adafruit vinde un modul Bluetooth BLE 4.0 confirmat de lucru (ceea ce este Bluetooth 4.0?) Cum Bluetooth 4.0 este în curs de modelare a viitorului Conectivitate mobilă Cum Bluetooth 4.0 este în curs de modelare a viitorului Conectivitate mobilă Bluetooth este steaua uitat pe fișa cu specificațiile dispozitivului. ar trebui să testați orice ați avut deja loc înainte de a cumpăra un nou unul pentru acest proiect. Am găsit un adaptor vechi Bluetooth mini standard pe care l-am cumpărat în Japonia, care pare să funcționeze bine. Nu ne pasă de viteza de transfer sau de fiabilitatea conexiunii, deoarece tot ceea ce facem este să trimitem o strângere de mână rapidă pentru a vedea dacă un dispozitiv este viu și bine.
- GPIO breakout bord (“cizmar”) și cabluri pentru jumperi. Ai putea lucra direct de la pinii de pe Pi, dar este mult mai ușor dacă ai etichete pe fiecare pin și sunt doar 6 $ oricum.
- Panoul de relee. Aveți aici o mare varietate de opțiuni și orice va funcționa dacă este proiectat pentru a fi utilizat cu un microcontroler și poate conduce cel puțin 12 volți la 5 amperi. Am folosit o placă generică pe 4 canale, asemănătoare cu cea de 5 dolari, dar o să presupun că știți cum să lucrați cu dvs..
- Blocarea electromagnetică 12 / 24V, deși ar trebui să funcționeze și o blocare electromagnetică electronică. Cel pe care l-am cumpărat are o forță de 180 KG și vine complet cu plăci de montaj și instrucțiuni, pentru aproximativ 35 de dolari.
- 12 / 24V de alimentare. Blocarea magnetului trebuie să aibă o sursă de alimentare separată - indiferent de ce faceți, nu încercați să trageți energie de la Pi.
- Aplicația Lock.py Python, dar vom scrie acest lucru pe măsură ce mergem.
Lucrul cu Bluetooth
Bluetooth este esențial pentru acest proiect, așa că haideți să începem prin instalarea unor suport Bluetooth și testarea adaptorului nostru. Puteți face acest lucru direct de la Pi sau SSH la distanță (cum să configurați Windows la SSH în dvs.) Pi Setarea Raspberry Pi Pentru Folosirea Headless cu SSH Setarea Raspberry Pi Pi Uscarea fara cap cu SSH Raspberry Pi poate accepta SSH comenzi atunci când este conectat la o rețea locală (fie prin Ethernet sau Wi-Fi), permițându-vă să-l setați cu ușurință. Beneficiile SSH merge dincolo de a supara screening-ul zilnic ... Citește mai mult).
sudo apt-get instala bluez python-bluez
Introduceți dongle-ul dacă nu ați făcut-o deja, și să aruncăm o privire la ceea ce raportează.
hcitool dev
Dacă aveți ceva enumerat în ieșire, sunteți bine să mergeți. Apoi vom folosi un script Python pentru a sondaj pentru dispozitive Bluetooth din apropiere și apucați adresa unică a dispozitivului. Trebuie doar să facem acest lucru o singură dată pentru fiecare dispozitiv.
wget https://raw.githubusercontent.com/karulis/pybluez/master/examples/simple/inquiry.py python inquiry.py
Dacă vezi “Au fost găsite 0 dispozitive”, fie că nu aveți un dongle USB compatibil USB, fie că telefonul smartphone nu poate fi detectat. Nu disperați totuși: am constatat că a trebuit să deschid pagina de setări Bluetooth pe iPhone-ul meu pentru al lovi în modul descoperire, atunci sa întâmplat acest lucru:
Excelent, acum să creăm prima etapă a software-ului nostru care face detectarea. Creați o aplicație Python numită detect.py, și deschide-o cu Nano.
nano detect.py
Inserați în acest exemplu de cod:
#! / usr / bin / python Import bluetooth import timp în timp ce True: tipăriți "Checking" + time.strftime ("% a,% d% b% Y% H% S", time.gmtime rezultatul = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', timeout = 5) dacă (rezultat! = None): print "User present" 10)
și ajustați următoarea linie cu adresa dispozitivului Bluetooth:
rezultatul = bluetooth.lookup_name ('78: 7F: 70: 38: 51: 1B ', timeout = 5)
presa CTRL-X și Y pentru a închide și a salva. Rulați același cod și vedeți ceva de genul:
Codul trebuie să fie foarte simplu de înțeles, chiar dacă nu ați atins Python înainte: scanarea unui anumit dispozitiv Bluetooth la fiecare 10 secunde și tipărirea unui alt mesaj în funcție de situația în care a fost găsit sau nu. Comutați Bluetooth pe telefonul dvs. pentru a simula mișcarea în și în afara domeniului (probabil în jur de 4 metri în realitate). Puteți reduce sau mări timpul dintre scanări, dar am simțit că 10 secunde a fost o perioadă rezonabilă de timp pentru a putea să așteptați ca ușa să se deblocheze, de unde mergem cu acest întreg proiect în cele din urmă.
Ar trebui să adaug, nu știu despre consumul de energie de a face acest lucru, dar mi-aș asuma pinging un dispozitiv mai des ar consuma în mod necesar mai multă putere. Nu am văzut probleme de performanță în ceea ce privește testarea, dar dacă durata de viață a bateriei este o preocupare serioasă pentru dvs., vă recomandăm să aveți un comutator în interiorul biroului dvs. care activează și dezactivează bucla de scanare, astfel încât, odată ce vă aflați în interior, sistem, apoi reactivați scanarea când plecați.
Felicitări, aveți acum o aplicație Python care știe când sunteți în raza de acțiune, astfel încât să putem începe să acționăm în acest sens.
Modurile GPIO Board
Înainte de a continua, trebuie să dați seama ce mod de bord veți folosi. Nu există un răspuns corect sau corect, afectează doar dacă specificați numărul PIN-ului literal sau numărul pinului virtual GPIO.
Implicit este utilizarea numărului de caractere literal (“mod de bord”), începând cu pinul 1 din stânga jos (dacă priviți în jos la portul Pi cu porturile USB din dreapta). Pinul 2 este chiar deasupra.
Cu toate acestea, dacă aveți un GPIO breakout (“cizmar”), etichetele pe care le aveți sunt dintr-un mod alternativ, numit “BCM” (Broadcom SOC channel), și sunt de obicei scrise cu GPIO sau P prefixând numărul. Nu aveți nevoie strict de o pauză GPIO - doar simplifică lucrurile. Dacă nu aveți un tabel breakout și nu doriți să cumpărați unul, folosiți această diagramă:
Rețineți că versiunea originală B revizia 1, revizia 2 și modelul B + și Pi2 toate au ieșiri diferite. Consultați această întrebare StackExchange pentru o diagramă corectă pentru placa dvs..
În acest cod de proiect, utilizez sistemul BCM de numerotare BCIO, care corespunde plăcii de bord Adafruit pe care o am. Modificări minore sunt necesare dacă doriți să utilizați modul PIN cu literal.
Sârmă într-un releu
Atașați bordul de bord, asigurându-vă că firul de la pinii 1 și 2 (cei din colțul lui Pi) se atașează la 3v3 și 5V0 la pauză. S-ar putea să doriți să scoateți un tester de tensiune pentru a verifica acest lucru.
Înainte de a continua, verificați dacă altcineva a folosit releul dvs. special cu Raspberry Pi (sau găsiți-o în prealabil că știți că funcționează). Unele pot necesita 5V pentru a activa - dar RPi poate furniza doar 3.3V pe pinii de ieșire GPIO. Din întâmplare, cel pe care îl folosesc este fericit cu 3.3V, deci nu am nevoie de circuite suplimentare, doar 5V0 până la VCC, GND la GND, și Pinul GPIO 23 pentru prima intrare a releului.
Tutorialul meu precedent pe GPIO Cum sa incepi cu GPIO Pe o Zmeura Pi Cum sa incepi cu GPIO pe o Pi Z? Daca, desi Arduino a fost cool, asteapta sa pui mana pe o Raspberry Pi - aceste lucruri sunt uimitoare. Pe lângă faptul că este un calculator complet funcțional, ei au, de asemenea, un ... Read More a arătat cum să sârmă un circuit de tranzistor pentru a scala până 3.3V la un 5V completă dacă aveți nevoie de (de fapt, am folosit aceeași bord releu pentru că tutorial , dar se pare că nu am nevoie de 5V la urma urmei).
Nu este nevoie să conectați încă electromagnetul, deoarece veți putea auzi un clic sonor când releul se declanșează.
În continuare, hai să luăm un cod pentru a interacționa cu porturile GPIO.
Vom începe prin testarea în afara Python pentru a confirma că totul funcționează pe porturile înseși. Instalați cablareaPi, care vă oferă câteva instrumente utilitare de linie de comandă.
git clona git: //git.drogon.net/wiringPi cd wiringPi ./build
Odată instalat, configurați pinul GPIO 23 ca ieșire.
Modul gpio -g 23 afară
Acum, faceți o scanare rapidă a tuturor porturilor pentru confirmare
gpio -g readall
Veți avea ceva similar cu acest lucru, deși a ta poate dura mai mult pe un model B + sau Pi2, deoarece are mai mulți pini GPIO:
Acest lucru poate fi un pic confuz la început, dar masa este împărțită în jos și ordinea coloanelor este inversată pe fiecare parte. Pe extrema stângă și pe extrema dreaptă este numărul pinului BCM. Din moment ce folosim 23, trebuie să vezi modul care este listat acum ca OUT. Aceasta este o mică comandă utilă doar pentru a obține o idee bună despre ceea ce se întâmplă cu toate pinii în orice moment.
Pentru a scrie pinul ridicat sau scăzut, trebuie doar să îl utilizați
gpio -g scrie 23 1 gpio -g scrie 23 0
Sperăm că, dacă aveți releul conectat corect, îl veți auzi făcând clic și dezactivat. Dacă nu, nu continuați până când nu ați dat seama de cabluri. Amintiți-vă că este posibil să aveți nevoie de o tensiune mai mare pentru a activa releul.
Odată ce ați confirmat că releul și GPIO funcționează, adăugați modulele Python pentru GPIO.
sudo apt-get instala python-dev python-rpi.gpio
Acum, să modificăm aplicația Python pentru a declanșa sau dezactiva releul când detectează telefonul. Veți găsi codul final la această listă. Copiați existența detect.py la un nou lock.py, și adăugați următoarele comenzi de import și configurare:
import RPi.GPIO ca GPIO GPIO.setmode (GPIO.BCM) RELÉ = 23 GPIO.setup (RELAY, GPIO.OUT)
În instruciunea IF, adăugați o comandă pentru activarea sau dezactivarea releului. Rețineți că releul dvs. poate funcționa fie cu un semnal scăzut, fie cu un semnal înalt, deci ajustați corespunzător după testare.
GPIO.output (RELAY, 1)
Pentru a rula această nouă versiune, prefixați comanda cu sudo - accesul la GPIO necesită privilegii de root.
Ajunge
Odată ce ați confirmat că releul funcționează cu senzorul de proximitate, adăugați blocarea electromagnetică. Pe partea releului, poziționați poziția 12V în terminalul marcat COM (comun), apoi intrarea pozitivă a puterii de la electromagnet la terminalul NO (normal deschis, adică. acest lucru nu este în mod normal conectat la terminalul comun, dar va fi atunci când activați releul).
Alăturați-vă la sol de la sursa de alimentare și electromagnetul de pe terminalul GND.
Consultați instrucțiunile de montare livrate împreună cu dispozitivul de blocare; ușa trebuie să fie destul de groasă, și este mai ușor dacă se deschide departe de partea pe care doriți să o blocați. Mina a fost opusul, așa că am nevoie de suportul de montare în formă de L, precum și un lemn suplimentar pentru a crește grosimea ușii.
îmbunătăţiri
Aceasta a fost o dovadă a conceptului de a mă dezvolta și de alte proiecte și chiar de a păstra ochii desprinși din biroul meu când nu sunt acolo - nu este conceput pentru a fi un sistem sigur de securitate. Pentru asta, ai nevoie de o baterie de rezervă pentru a menține energia care curge în cazul tăierii.
Desigur, dacă cineva intră în casă și trece la necazul tăierii puterii tale, probabil că ai chestiunea cea mai mare ca ei să fie un psihopat care să te omoare, mai degrabă decât un hoț casual. Ați dori, de asemenea, un blocaj fizic, în plus față de cel electronic, și un băț foarte mare.
Desigur, această tehnică de detectare a proximității prin Bluetooth nu se limitează doar la o blocare automată a ușii - ați putea, de asemenea, să o utilizați pentru a declanșa deschiderea ușii de garaj atunci când veniți acasă sau să activați casa dvs. de cinema înainte să umblați în ușă.
Ce caracteristică credeți că ar trebui să adăugați în continuare? Aveați probleme în a construi acest lucru? Anunță-mă în comentariile și voi face tot posibilul pentru a vă ajuta!
Explorați mai multe despre: Securitatea la domiciliu, Blocări inteligente.