Elektronska ključavnica s kartico za arduino. Nenavadna kombinacijska ključavnica na Arduinu. Nadaljnji razvoj projekta "Smart Lock".

Arduino je najboljši sistem za kopiranje katere koli strojne opreme. Večina idej ne bi bila mogoča brez nje. Že dolgo obstaja taka misel: ustvariti posebno kombinacijsko ključavnico na arduinu. Če ga želite odpreti, morate držati določeno tipko. V tem primeru se ključavnica ne sme odpreti, tudi če poznate želeni gumb. Za odpiranje je potrebno vzdrževati določene intervale z uporabo mišičnega spomina. Takšen zločinec ne more storiti. Ampak to je vse le teorija.

Če ga želite zbrati, morate uporabiti posebno napravo pravokotnih impulzov, pa tudi več števcev in kup. Toda končna naprava bi imela velike dimenzije in bi bila neprijetna za uporabo. Takšne misli praviloma ne dajo počitka. Prvi korak k uresničitvi teh sanj je bila izdelava programa za Arduino. Prav ona bo služila kot kombinacijska ključavnica. Če ga želite odpreti, morate pritisniti ne eno tipko, ampak več in to storiti hkrati. Končni krog izgleda takole:

Kakovost slike ni najboljša, vendar so povezave ozemljene, D3, D5, D7, D9 in D11.

Koda je prikazana spodaj:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; bajt a = 0; bajt b = 0; bajt c = 0; bajt d = 0; nepodpisani dolgi čas = 0; // ne pozabite na vse, kar millis () prevzame brez predznaka long temp = 0; // shrani v nepodpisani dolgi bajt keya = (0, 0, 0, 0, 0, 0, 0, 0); // kodira ustrezen bajtni ključb = (1, 1, 1, 1, 0, 1, 0, 0); bajtni ključc = (1, 0, 1, 0, 1, 1, 1, 0); bajt k = 0; void setup () (pinMode (ina, INPUT_PULLUP); // 3 vhodi povezani z gumbi pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // vgrajena LED na 13. pin pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); // zamenjajte ozemljitev digitalWrite (11, LOW); čas = millis (); // potreben za merjenje časa) void blinktwice () ( // dvojno utripa LED digitalWrite (ledPin, HIGH); zakasnitev (100); digitalWrite (ledPin, LOW); zamuda (100); digitalWrite (ledPin, HIGH); zakasnitev (100); digitalWrite (ledPin, LOW) ; zamuda ( 200);) void loop () (če (k == 0) (dvakrat utripne (); // poziv za kodo) if (k == 8) (digitalWrite (ledPin, HIGH); zamuda (3000); k = 0 ;) a = digitalRead (ina); // nivoji signala se berejo iz gumbov - pritisnjeno / ni pritisnjeno b = digitalRead (inb); c = digitalRead (inc); zakasnitev (100); // naslednji if - zaščita proti lažno pozitivnim rezultatom, vam ni treba uporabiti if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) (če (a == keya [k]) (če (b == tipka b [k]) (če (c == tipka c [k]) (k ++; )))) če (k == 1) (če (d == 0) (čas = milis (); d ++;)) temp = mili (); temp = temp - čas; če (temp> 10000) (k = 0; d = 0; čas = milis ();))

Da bi se izognili nepotrebnim vprašanjem o kodi, je treba pojasniti nekatere točke. Funkcija nastavitve se uporablja za dodeljevanje vrat. Naslednja funkcija je Input_Pullup, ki je potrebna za povečanje napetosti zatiča za 5 V. To se naredi z uporom. Zaradi tega ne bo prišlo do različnih kratkih stikov. Za večjo udobje je priporočljivo uporabiti funkcijo dvakrat utripa. Na splošno morate pri ustvarjanju različnih programov preizkusiti druge funkcije.

Po dodelitvi funkcij se signal prebere iz vrat. Če pritisnete gumb, bo to označeno s številko 1, če ne - 2. Nadalje se analizirajo vse vrednosti. Pojavila se je na primer kombinacija, kot je 0,1,1. To pomeni, da je prva tipka pritisnjena, drugi dve pa ne. Če so vse vrednosti resnične, je resničen tudi pogoj 8. To dokazuje osvetljena LED na sprednji plošči. Nato morate vnesti posebno kodo, ki bo služila za odpiranje vrat.

Zadnji elementi kode se uporabljajo za ponastavitev vrednosti števca. Ta funkcija se izvede, če je od zadnjega pritiska na tipko minilo več kot 10 sekund. Brez te kode je bilo mogoče našteti vse možne možnosti, čeprav jih je kar nekaj. Ko ustvarite to napravo, jo morate preizkusiti. Več

Voditelja youtube kanala "AlexGyver" so prosili, da naredi elektronsko ključavnico z lastnimi rokami. Dobrodošli v ciklu videoposnetkov o elektronskih ključavnicah na arduinu. Na splošno bo čarovnik razložil idejo.

Obstaja več možnosti za ustvarjanje sistema elektronske ključavnice. Najpogosteje se uporabljajo za zaklepanje vrat in predalov, omar. In tudi za ustvarjanje skrivališč in skrivnih sefov. Zato morate izdelati maketo, s katero je priročno delati in lahko jasno in podrobno prikažete strukturo sistema od znotraj in od zunaj. Zato sem se odločil, da naredim okvir z vrati. Za to potrebujete kvadratno palico 30 x 30. Vezane plošče 10 mm. Tečaji za vrata. Sprva sem želel izdelati škatlo iz vezanega lesa, a sem se spomnil, da je vse v sobi zasuto z rezervnimi deli. Takšne škatle ni kam postaviti. Zato bo izdelana postavitev. Če si nekdo želi postaviti elektronsko ključavnico, potem lahko ob pogledu na postavitev enostavno vse ponovite.

Vse, kar potrebujete za grad, lahko najdete v tej kitajski trgovini.

Cilj je razviti najučinkovitejša vezja in strojno programsko opremo za elektronske ključavnice. Te rezultate boste lahko uporabili za namestitev teh sistemov na svoja vrata, predale, omare in skrivališča.


Vrata so pripravljena. Zdaj morate ugotoviti, kako odpreti in zapreti elektronsko. Za te namene je primeren močan elektromagnetni zapah aliexpressa (povezava do trgovine zgoraj). Če priključite napetost na sponke, se bo odprl. Upor tuljave je skoraj 12 ohmov, kar pomeni, da bo pri napetosti 12 voltov tuljava porabila približno 1 amper. Litijeva baterija in pospeševalni modul se lahko spopadeta s to nalogo. Prilagodimo se ustrezni napetosti. Čeprav je mogoče malo več. Zapah je pritrjen na notranjo stran vrat na daljavo, tako da se ne ujame ob rob in se lahko zaskoči. Zapah mora biti nasprotnik v obliki kovinske škatle. Neprijetno in napačno ga je uporabljati brez njega. Morali bomo narediti korak, vsaj za ustvarjanje videza normalnega dela.

V načinu mirovanja se zapah odpre normalno, to je, če je na vratih ročaj, dajte impulz, odprite vrata z ročajem. Če pa ga vzmetnete, ta metoda ni več primerna. Ojačevalni pretvornik ne prenese obremenitve. Za odpiranje vrat z vzmetjo boste morali uporabiti večjo baterijo in močnejši pretvornik. Ali omrežno napajanje in kladivo na avtonomijo sistema. V kitajskih trgovinah so preveliki hudiči. Primerne so za škatle. Napajanje se lahko napaja s pomočjo releja ali tranzistorskega mosfeta ali napajalnega stikala na istem tranzistorju. Bolj zanimiva in cenejša možnost je servo pogon, povezan z ojnico s katerim koli blokirnim elementom - zapahom ali resnejšim ventilom. Morda bo potreboval tudi kos jeklene napere, ki deluje kot ojnica. Tak sistem ne potrebuje veliko toka. Toda zavzame več prostora in bolj zvito logiko nadzora.

Obstajata dve vrsti servomotorjev. Majhen, šibek in močan, s katerim lahko varno potisnete v luknje v resnih kovinskih zatičih. Obe prikazani možnosti delujeta tako na vratih kot na predalih. S škatlo se boste morali pomikati in narediti luknjo v drsni steni.

Drugi del

Zgodilo se je, da smo se v službi odločili, da na svoja vrata namestimo kombinacijsko ključavnico, ker nenehno zaletavamo – bežimo iz pisarne, katere vrata morajo biti v odsotnosti stanovalcev nenehno zaprta. V notranjosti so pogosto pozabljeni ključi. Na splošno smo se odločili, da je kombinacijska ključavnica odlična rešitev.

Ko sem brskal po kitajskih bolšjih trgih in ebayu, nisem našel nič poceni in bolj ali manj resnega in sem se odločil, da ga naredim sam. Takoj bom rezerviral, da je bila platforma Arduino izbrana zaradi svoje preprostosti, saj izkušenj s komunikacijo z mikrokrmilniki sploh ni bilo.

Ideja

Na vratih, na zunanji strani vrat, naj bo tipkovnica, na kateri se vnese geslo, na notranji strani je pritrjen preostanek konstrukcije. Za nadzor popolnega zapiranja vrat se uporablja reed stikalo. Ko zapusti pisarno, oseba pritisne "*" na tipkovnici in, ne da bi čakala, da se vrata zaprejo ob zapiralu, se odpravi po svojih opravkih, ko so vrata popolnoma zaprta, se bo stikalo zaprlo in ključavnica se bo zaprla. Vrata odprete tako, da vnesete 4-mestno geslo in pritisnete "#".

Komponente

Arduino UNO = 18 $
Arduino protoshield + breadboard = 6 $
L293D = 1 dolar
30 kosov pletene žice snop = 4 $
2 vtičnici RJ45 = 4 $
2 vtiča RJ45 = 0,5 $
aktivator centralnega zaklepanja = 250 rubljev.
Reed stikalo = odtrgano od starega okna.
Kovinski zapah velike velikosti = brezplačno
Staro pesto D-LINK iz 1,5 mm železa = brezplačno
Brezplačno je tudi napajanje iz istega zvezdišča D-LINK za 12 in 5v =
Kup vijakov in matic za pritrditev vseh teh stvari na telo = 100 rubljev.
Alarmna nadzorna plošča = brezplačno.

Skupaj: 33,5 $ in 350 rubljev.

Ne tako malo, pravite, in zagotovo boste imeli prav, a za užitek je treba plačati! In vedno je lepo sestaviti nekaj z lastnimi rokami. Poleg tega se lahko zasnova močno zmanjša, če uporabljate goli MC brez Arduina.

Priprava na montažo

Rad bi povedal nekaj besed o nakupu ključnega elementa zasnove aktuatorja. V lokalni avto trgovini so mi ponudili dve vrsti aktuatorjev: "z dvema žicama in s petimi." Po besedah ​​prodajalke sta bili popolnoma enaki in razlika v številu žic ni pomenila čisto nič. Vendar, kot se je kasneje izkazalo, temu ni tako! Izbral sem napravo z dvema žicama, napajala jo je 12V. 5-žična zasnova vključuje končna stikala za nadzor gibanja roke. Da sem kupil napačnega sem ugotovil šele, ko sem ga razstavil in je bilo prepozno, da bi ga zamenjal. Hod vzvoda je bil prekratek za normalno premikanje zapaha, zato ga je bilo treba nekoliko dopolniti, in sicer odstraniti dve gumijasti podložki, ki skrajšata hod vzvoda aktuatorja. Da bi to naredili, je bilo treba telo razrezati skupaj z običajno nožno žago, ker je bila druga podložka notri. Modri ​​električni trak nam je kot vedno pomagal v prihodnje pri sestavljanju nazaj.
Za krmiljenje motorja aktuatorja je bil uporabljen motorni gonilnik L293D, ki zdrži konično obremenitev do 1200 mA, ko smo ustavili motor aktuatorja, se je vršna obremenitev dvignila le na 600 mA.
Z nadzorne plošče iz protivlomnega alarma so bili odstranjeni kontakti s tipkovnice, zvočnika in dve LED diodi. Daljinski upravljalnik in glavna naprava naj bi bila povezana s pomočjo sukanega para in konektorjev RJ45.

Programiranje.

Torej, do zdaj nisem imel nobenih izkušenj s programiranjem Arduino. Uporabil sem razvoj in članke drugih ljudi s strani arduino.cc. Koga briga ta grda koda :)

Fotografija in video



Arduino in aktuator


Napajanje


Tipkovnica


Espagnolette (povezan s aktuatorjem s kovinsko napero in na katerem se zaradi lepote nosi toplotno krčenje)

Videoposnetek postopka delovanja naprave:

V tej lekciji se bomo naučili, kako narediti preprost sistem, ki bo odklenil ključavnico z elektronskim ključem (Tag).

V prihodnosti lahko spremenite in razširite funkcionalnost. Dodajte na primer funkcijo "dodaj nove ključe in jih odstrani iz pomnilnika". V osnovnem primeru si oglejte preprost primer, ko je v programski kodi prednastavljen edinstven identifikator ključa.

V tej vadnici bomo potrebovali:

Za izvedbo projekta moramo namestiti knjižnice:

2) Zdaj morate priključiti brenčalo, ki bo dalo signal, če se ključ sproži in se ključavnica odpre, in drugi signal, ko je ključavnica zaprta.

Brenčalo povežemo v naslednjem zaporedju:

Arduino Brenčalo
5V VCC
GND GND
zatič 5 IO

3) Servo bo uporabljen kot mehanizem za odklepanje. Izberete lahko kateri koli servo, odvisno od dimenzij in sil, ki jih potrebujete, ki jih servo ustvari. Servo ima 3 zatiče:

Bolj nazorno si lahko ogledate, kako smo povezali vse module na spodnji sliki:

Zdaj, če je vse povezano, lahko nadaljujete s programiranjem.

skica:

#vključi #vključi #vključi // Knjižnica "RFID". #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); nepodpisani dolgi uidDec, uidDecTemp; // za shranjevanje številke etikete v decimalni obliki Servo servo; void setup () (Serial.begin (9600); Serial.println ("Čakanje na kartico ..."); SPI.begin (); // inicializacija SPI / Init SPI bus.mfrc522.PCD_Init (); // inicializacija MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // nastavite servo na zaprt) void loop () (// Poiščite novo oznako if (! Mfrc522.PICC_IsNewCardPresent ()) (vrni se ; ) // Izberite oznako, če (! Mfrc522.PICC_ReadCardSerial ()) (return;) uidDec = 0; // Izdajte serijsko številko label.for (bajt i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

Oglejmo si podrobneje skico:

Če želite izvedeti UID kartice (oznake), morate to skico napisati v arduino, sestaviti zgoraj opisano vezje in odpreti konzolo (nadzor serijskih vrat). Ko prinesete oznako na RFID, se na konzoli prikaže številka

Končni UID je treba vnesti v naslednjo vrstico:

Če (uidDec == 3763966293) // Primerjaj Uid oznake, če je enak podanemu, servo odpre ventil.

Vsaka kartica ima edinstven identifikator in se ne ponavlja. Tako, ko prinesete kartico, katere identifikator ste nastavili v programu, bo sistem odprl dostop s pomočjo servo pogona.

video:

Pred dnevi sem gledal The Amazing Spider-Man in v enem prizoru Peter Parker na daljavo odpira in zapira vrata svojega prenosnika. Takoj ko sem to videl, sem takoj ugotovil, da potrebujem tudi takšno elektronsko ključavnico na vhodnih vratih.

Z malo potepanja sem sestavil delujoč model pametne ključavnice. V tem članku vam bom povedal, kako sem ga sestavil.

1. korak: Seznam materialov





Za sestavljanje elektronske ključavnice na Arduinu boste potrebovali naslednje materiale:

elektronika:

  • 5V stenski adapter

Komponente:

  • 6 vijakov za zapah
  • kartona
  • žice

orodja:

  • spajkalnik
  • pištola za lepilo
  • vrtalnik
  • vrtalnik
  • pilotni vrtalnik
  • pisalni nož
  • računalnik s programom Arduino IDE

2. korak: kako deluje ključavnica

Ideja je, da lahko odprem ali zaprem vrata brez ključa in ne da bi šla do njih. A to je le osnovna ideja, saj lahko dodate tudi senzor za trkanje, da se odzove na poseben trk, ali pa dodate sistem za prepoznavanje glasu!

Servo roka, povezana z zapahom, se bo zaprla (0 °) in odprla (60 °) z uporabo ukazov, prejetih prek modula Bluetooth.

3. korak: Shema ožičenja


Najprej priključimo servo na ploščo Arduino (upoštevajte, da čeprav imam ploščo Arduino Nano, je postavitev zatičev popolnoma enaka na plošči Uno).

  • rjava žica servo je ozemljena, povežemo jo z ozemljitvijo na Arduinu
  • rdeča žica je plus, priključimo jo na 5V konektor na Arduinu
  • oranžna žica - izhod vira servo, ga povežemo z 9. zatičem na Arduinu

Svetujem vam, da preizkusite servo, preden nadaljujete z montažo. Če želite to narediti, v programu Arduino IDE v primerih izberite Sweep. Ko se prepričamo, da servo deluje, lahko povežemo Bluetooth modul. Zatič rx modula Bluetooth morate povezati z zatičem tx na Arduinu in tx pin modula z zatičem rx na Arduinu. Ampak tega še ne počni! Ko so te povezave spajkane, ne boste mogli več naložiti nobenih kod v Arduino, zato najprej prenesite vse svoje kode in šele nato spajkajte povezave.

Tukaj je shema ožičenja za modul in mikrokrmilnik:

  • Rx modul - Tx Arduino plošča
  • Tx modul - Rx plošče
  • Vcc (pozitiven) modula - 3,3v plošče Arduino
  • Ozemljitev je povezana z ozemljitvijo (zemlja na zemljo)

Če se vam razlaga zdi zmedena, sledite priloženemu diagramu ožičenja.

4. korak: Test

Zdaj, ko imamo vse dele v akciji, poskrbimo, da lahko servo premakne vijak. Preden namestim zapah na vrata, sem sestavil testni kos, da se prepričam, ali je servo dovolj močan. Sprva se mi je zdelo, da je moj servo šibak in sem na vijak dodal kapljico olja, nato je deloval dobro. Zelo pomembno je, da mehanizem dobro drsi, sicer tvegate, da boste ujeti v svoji sobi.

5. korak: ohišje za električne komponente



Odločil sem se, da v ohišje dam samo krmilnik in Bluetooth modul, servo pa pustim zunaj. Da bi to naredili, na kosu kartona obkrožimo obris plošče Arduino Nano in dodamo 1 cm prostora po obodu in ga izrežemo. Po tem smo izrezali še pet stranic ohišja. V sprednji steni boste morali izrezati luknjo za napajalni kabel krmilnika.

Dimenzije stranic ohišja:

  • Spodnji del - 7,5x4 cm
  • Prevleka - 7,5x4 cm
  • Leva stranska stena - 7,5x4 cm
  • Desna stranska stena - 7,5x4 cm
  • Sprednja stena - 4x4 cm (z režo za napajalni kabel)
  • Zadnja stena - 4x4 cm

6. korak: Aplikacija

Za nadzor krmilnika potrebujete pripomoček Android ali Windows z vgrajenim Bluetooth. Nisem imel priložnosti preizkusiti delovanja aplikacije na napravah apple, morda bo treba nekaj gonilnikov.

Prepričan sem, da imate nekateri od vas priložnost to preizkusiti. Za Android prenesite aplikacijo Bluetooth Terminal, za Windows pa TeraTerm. Nato morate modul povezati s pametnim telefonom, ime naj bo linvor, geslo naj bo 0000 ali 1234. Takoj, ko je seznanjanje vzpostavljeno, odprite nameščeno aplikacijo, vnesite možnosti in izberite "Vzpostavi povezavo (nevarno)" . Vaš pametni telefon je zdaj serijski monitor Arduino, kar pomeni, da lahko komunicirate s krmilnikom.

Če vnesete 0, se vrata zaprejo, na zaslonu pametnega telefona pa se prikaže sporočilo »Vrata zaprta«.
Če vnesete 1, boste videli vrata odprta in na zaslonu se bo prikazalo sporočilo "Vrata odprta".
V sistemu Windows je postopek enak, le da morate namestiti aplikacijo TeraTerm.

Korak 7: namestite vijak


Najprej morate priključiti servo na zapah. Če želite to narediti, odrežite čepe iz montažnih lukenj ohišja pogona. Če postavimo servo, morajo biti montažne luknje poravnane z zapahom. Nato morate servo ročico postaviti v režo zapaha, kjer je bil ročaj zapaha. Preverite, kako se ključavnica premika v ohišju. Če je vse v redu, pritrdite servo roko z lepilom.

Zdaj morate izvrtati pilotne luknje za vijake v vratih. Če želite to narediti, pritrdite zapah na vrata in s svinčnikom označite luknje za vijake na vratnem krilu. Na označenih mestih izvrtajte približno 2,5 cm globoke luknje za vijake.. Pritrdite zapah in pritrdite z vijaki. Ponovno preverite servo.

8. korak: moč


Za dokončanje naprave boste potrebovali napajalnik, kabel in mini usb vtič za povezavo z Arduinom.
Ozemljitveni zatič napajalnika povežite z ozemljitvenim zatičem mini usb vrat, povežite rdečo žico z rdečo žico mini usb priključka, nato napeljite žico od ključavnice do tečaja vrat in od tam do vtičnice.

9. korak: koda

#include Servo myservo; int pos = 0; int stanje; int zastava = 0; void setup () (myservo.attach (9); Serial.begin (9600); myservo.write (60); zamuda (1000);) void loop () (če (Serial.available ()> 0) (stanje = Serial.read (); zastavica = 0;) // če je stanje "0", se bo enosmerni motor izklopil if (stanje == "0") (myservo.write (8); zamuda (1000); Serial). println ("Door Locked");) else if (stanje == "1") (myservo.write (55); zamuda (1000); Serial.println ("Door Unlocked");))

Korak 10: Končana ključavnica Arduino

Uživajte v zaklepanju daljinskega upravljalnika in ne pozabite "po nesreči" zakleniti prijateljev v sobo.

Nalaganje ...Nalaganje ...