U ovoj lekciji ćemo naučiti kako napraviti jednostavan sistem koji će otključati bravu pomoću elektronskog ključa (Label).
U budućnosti možete poboljšati i proširiti funkcionalnost. Na primjer, dodajte funkciju "dodavanje novih ključeva i njihovo uklanjanje iz memorije". U osnovnom slučaju, razmotrite jednostavan primjer, kada je jedinstveni identifikator ključa unaprijed specificiran u programskom kodu.
U ovom tutorijalu trebat će nam:
Za realizaciju projekta potrebno je da instaliramo biblioteke:
2) Sada trebate spojiti zujalicu, koja će dati signal da li je ključ proradio i da se brava otvori, te drugi signal kada se brava zatvori.
Zujalicu povezujemo u sljedećem redoslijedu:
Arduino | Zujalica |
---|---|
5V | VCC |
GND | GND |
pin 5 | IO |
3) Servo će se koristiti kao mehanizam za otključavanje. Može se odabrati bilo koji servo, ovisno o dimenzijama koje trebate i silama koje servo stvara. Servo ima 3 pina:
Još jasnije možete vidjeti kako smo spojili sve module na slici ispod:
Sada, ako je sve povezano, možete nastaviti s programiranjem.
skica:
#include
Analizirajmo skicu detaljnije:
Da biste saznali UID kartice (oznake), potrebno je da napišete ovu skicu u arduino, sastavite gore opisano kolo i otvorite konzolu (nadzor serijskog porta). Kada donesete oznaku na RFID, broj će biti prikazan na konzoli
Rezultirajući UID se mora unijeti u sljedeći red:
If (uidDec == 3763966293) // Uporedi Uid naljepnice, ako je jednak navedenom, tada servo otvara ventil.
Za svaku karticu, ovaj identifikator je jedinstven i ne ponavlja se. Dakle, kada predočite karticu čiji ste ID postavili u programu, sistem će otvoriti pristup koristeći servo.
Video:
Arduino je najbolji sistem za kopiranje bilo koje vrste opreme. Većina ideja ne bi bila moguća bez nje. Dugo je postojala takva ideja: stvoriti posebnu bravu s kombinacijom na arduinu. Da biste ga otvorili, morate držati pritisnut određeni taster. U tom slučaju, brava se ne bi trebala otvoriti, čak i ako znate pravo dugme. Da biste ga otvorili, morate održavati određene intervale koristeći mišićnu memoriju. Ne može kriminalac da uradi tako nešto. Ali ovo je sve samo teorija.
Da biste ga sastavili, morate koristiti poseban uređaj pravokutnih impulsa, kao i nekoliko brojača i hrpu. Ali gotov uređaj bi imao velike ukupne dimenzije i bio bi nezgodan za upotrebu. Takve misli po pravilu ne daju odmora. Prvi korak u ostvarenju sna bilo je kreiranje programa za Arduino. Služit će kao kombinovana brava. Da biste ga otvorili, moraćete da pritisnete ne jedan taster, već nekoliko, i to istovremeno. Gotov krug izgleda ovako:
Kvalitet slike nije najbolji, ali veza je uzemljena, D3, D5, D7, D9 i D11.
Kod je predstavljen u nastavku:
Const intina = 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; neoznačeno dugo vrijeme = 0; //ne zaboravite ništa što ima vrijednost millis() unsigned long temp = 0; //spremiti u nepotpisani dugi bajt keya = ( 0, 0, 0, 0, 0, 0, 0, 0); //koduje zapravo byte keyb = ( 1, 1, 1, 1, 0, 1, 0, 0); bajt ključc = ( 1, 0, 1, 0, 1, 1, 1, 0); bajt k = 0; void setup() ( pinMode(ina, INPUT_PULLUP); //3 ulaza spojena na dugmad pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); //ugrađena LED na pin 13 pinMode (7, OUTPUT); pinMode(11, OUTPUT); digitalWrite(7, LOW); //zamijenite temelj digitalWrite(11, LOW); time = millis(); //potrebno za mjerenje vremena ) void blinktwice() ( // dvostruko treptanje LED-a digitalWrite(ledPin, HIGH); kašnjenje(100); digitalWrite(ledPin, LOW); kašnjenje(100); digitalWrite(ledPin, HIGH); kašnjenje (100); digitalWrite(ledPin, LOW); kašnjenje( 200); ) void loop() ( if(k==0) ( blinktwice(); // upit za unos koda ) if (k == 8) ( digitalWrite(ledPin, HIGH); kašnjenje (3000); k = 0 ; ) a = digitalRead(ina); //očitavanje nivoa signala sa dugmadi - pritisnuto/nepritisnuto b = digitalRead(inb); c = digitalRead(inc); delay(100); //sljedeće ako - zaštita od lažno pozitivni, if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) ( if (a == keya[k]) ( if (b == keyb[k]) ( if (c == keyc[k]) ( k++; ) ) ) ) if (k==1) ( if (d ==0) ( vrijeme = millis (); d++; ) ) temp = millis(); temp = temp - vrijeme; if (temp > 10000) ( k= 0; d=0; vrijeme = mili (); ) )
Kako bi se izbjegla nepotrebna pitanja o kodu, neke točke treba pojasniti. Funkcija podešavanja se koristi za dodeljivanje portova. Sljedeća funkcija je Input_Pullup, koja je potrebna za povećanje napona pina za 5 V. To se radi pomoću otpornika. Zbog toga neće doći do raznih kratkih spojeva. Za veću praktičnost, preporučuje se korištenje funkcije blinktwice. Općenito, kada kreirate različite programe, morate isprobati druge funkcije.
Nakon dodjele funkcija, signal se čita sa portova. Ako se pritisne dugme, to će biti označeno brojem 1, a ako nije - 2. Zatim se analiziraju sve vrijednosti. Na primjer, postoji kombinacija kao što je 0,1,1. To znači da je prvi taster pritisnut, a druga dva nisu. Ako su sve vrijednosti tačne, tada je i uslov 8 tačan. Na to ukazuje upaljena LED dioda na prednjoj ploči. Zatim morate unijeti određeni kod koji će služiti za otvaranje vrata.
Posljednji elementi koda se koriste za resetiranje vrijednosti brojača. Ova funkcija se izvršava ako je prošlo više od 10 sekundi od posljednjeg pritiska na tipku. Bez ovog koda bilo je moguće srediti sve moguće opcije, iako ih ima dosta. Nakon kreiranja ovog uređaja, potrebno ga je testirati. Više
Pre neki dan sam ponovo gledao The Amazing Spider-Man i u jednoj sceni Peter Parker daljinski otvara i zatvara vrata sa svog laptopa. Čim sam ovo vidio, odmah sam shvatio da mi treba takva elektronska brava na ulaznim vratima.
Nakon malo petljanja, sastavio sam radni model pametne brave. U ovom članku ću vam reći kako sam ga prikupio.
Korak 1: Lista materijala
Za sastavljanje elektronske brave na Arduinu, trebat će vam sljedeći materijali:
elektronika:
- 5V zidni adapter
Komponente:
- 6 šrafova za rezu
- karton
- žice
instrumenti:
- lemilica
- pištolj za ljepilo
- bušilica
- bušilica
- pilot bušilica
- kancelarijski nož
- računar sa Arduino IDE
Korak 2: Kako brava radi
Ideja je da mogu otvoriti ili zatvoriti vrata bez ključa, a da čak i ne odem do njih. Ali to je samo osnovna ideja, jer možete dodati senzor za kucanje da reaguje na posebno kucanje, ili možete dodati sistem za prepoznavanje glasa!
Servo poluga spojena na vijak će zatvoriti (0°) i otvoriti (60°) vijak koristeći komande primljene preko Bluetooth modula.
Korak 3: Dijagram ožičenja
Hajde da prvo spojimo servo na Arduino ploču (želim napomenuti da iako koristim Arduino Nano ploču, pinout je potpuno isti na Uno ploči).
- smeđa žica serva je uzemljena, povezujemo je sa uzemljenjem na Arduinu
- crvena žica je pozitivna, spajamo je na 5V konektor na Arduinu
- narandžasta žica - izlaz servo izvora, spojite ga na pin 9 na Arduinu
Savjetujem vam da testirate servo prije nego što nastavite sa montažom. Da biste to učinili, u Arduino IDE programu odaberite Sweep u primjerima. Nakon što se uvjerimo da servo radi, možemo povezati Bluetooth modul. Morate povezati rx pin Bluetooth modula na tx pin Arduina, a tx pin modula na rx pin Arduina. Ali nemojte to još raditi! Jednom kada su ove veze zalemljene, nećete moći učitati nikakve kodove na Arduino, tako da prvo prenesite sve svoje kodove i tek onda lemite veze.
Evo dijagrama povezivanja modula i mikrokontrolera:
- Rx modul - Tx Arduino ploča
- Tx modul - Rx ploča
- Vcc (pozitivni terminal) modula - 3.3v Arduino ploče
- Spajanje uzemljenja na uzemljenje (zemlja na uzemljenje)
Ako vam objašnjenje nije jasno, slijedite priloženi dijagram ožičenja.
Korak 4: Testirajte
Sada kada imamo sve radne dijelove, uvjerimo se da servo može pomjeriti rezu. Prije postavljanja reze na vrata, sastavio sam probni uzorak kako bih se uvjerio da je servo dovoljno jak. U početku mi se činilo da mi je servo slab i dodao sam kap ulja u bravu, nakon toga je sve dobro radilo. Veoma je važno da mehanizam dobro klizi, inače rizikujete da budete zaključani u svojoj prostoriji.
Korak 5: Kućište za električne komponente
Odlučio sam staviti samo kontroler i Bluetooth modul u kućište, a servo ostaviti vani. Da biste to učinili, na komadu kartona ocrtajte obris Arduino Nano ploče i dodajte 1 cm prostora oko perimetra i izrežite ga. Nakon toga smo također izrezali još pet strana tijela. U prednjem zidu morat ćete izrezati rupu za kabel za napajanje kontrolera.
Dimenzije bočnih strana kućišta:
- Donji deo - 7,5x4 cm
- Poklopac - 7,5x4 cm
- Lijevi bočni zid - 7,5x4 cm
- Desni bočni zid - 7,5x4 cm
- Prednji zid - 4x4 cm (sa utorom za strujni kabl)
- Zadnji zid - 4x4 cm
Korak 6: Aplikacija
Za kontrolu kontrolera potreban vam je Android ili Windows gadget sa ugrađenim Bluetooth-om. Nisam imao priliku testirati aplikaciju na Apple uređajima, možda će zatrebati neki drajveri.
Siguran sam da neki od vas imaju priliku to provjeriti. Za Android preuzmite aplikaciju Bluetooth Terminal, za Windows preuzmite TeraTerm. Zatim morate povezati modul sa svojim pametnim telefonom, ime treba da bude linvor, lozinka treba da bude 0000 ili 1234. Nakon što je uparivanje uspostavljeno, otvorite instaliranu aplikaciju, unesite opcije i izaberite "Uspostavi vezu (nesigurno)". Vaš pametni telefon je sada Arduino serijski monitor, što znači da možete komunicirati s kontrolerom.
Ako unesete 0, vrata će se zatvoriti, a ekran pametnog telefona će prikazati poruku "Vrata zatvorena".
Ako unesete 1, vidjet ćete da su vrata otvorena i na ekranu će se pojaviti poruka "Vrata otvorena".
Na Windows-u je proces isti, osim što je potrebno instalirati aplikaciju TeraTerm.
Korak 7: Montirajte vijak
Prvo morate spojiti servo na bravu. Da biste to učinili, odrežite utikače iz montažnih rupa kućišta pogona. Ako stavimo servo, rupe za montažu treba da budu u ravni sa rezom. Zatim morate postaviti servo polugu u otvor reze, gdje je bila ručka zasuna. Provjerite kako se brava pomiče u kućištu. Ako je sve u redu, popravite servo polugu ljepilom.
Sada morate izbušiti pilot rupe u vratima za vijke. Da biste to učinili, pričvrstite zasun na vrata i olovkom označite rupe za vijke na krilu vrata. Na označenim mestima izbušite rupe za šrafove dubine oko 2,5 cm.. Pričvrstite rezu i pričvrstite je vijcima. Ponovo provjerite servo.
Korak 8: Ishrana
Da biste dovršili uređaj, trebat će vam napajanje, kabel i mini usb utikač za spajanje na Arduino.
Spojite terminal za uzemljenje napajanja na terminal za uzemljenje mini usb porta, povežite crvenu žicu sa crvenom žicom mini usb porta, zatim provucite žicu od brave do šarke vrata, a odatle do utičnice .
Korak 9: Šifra
#include Servo myservo; int pos = 0; int stanje; int flag=0; void setup() ( myservo.attach(9); Serial.begin(9600); myservo.write(60); kašnjenje(1000); ) void loop() ( if(Serial.available() > 0) (stanje = Serial.read(); flag=0; ) // ako je stanje "0" DC motor će se isključiti if (state == "0") ( myservo.write(8); delay(1000); Serial. println("Vrata zaključana"); ) else if (stanje == "1") ( myservo.write(55); kašnjenje(1000); Serial.println("Vrata otključana"); ) )
Korak 10: Završeno Arduino zaključavanje
Uživajte u zaključavanju daljinskog upravljača i ne zaboravite da "slučajno" zaključate svoje prijatelje u sobi.
Današnja lekcija govori o tome kako koristiti RFID čitač sa Arduinom za kreiranje jednostavnog sistema zaključavanja, jednostavnim riječima - RFID brave.
RFID (eng. Radio Frequency IDentification, radio frekvencijska identifikacija) je metoda automatske identifikacije objekata u kojoj se podaci pohranjeni u tzv. transponderima, ili RFID tagovima, čitaju ili zapisuju pomoću radio signala. Svaki RFID sistem se sastoji od čitača (čitača, čitača ili ispitivača) i transpondera (aka RFID oznaka, ponekad se koristi i termin RFID oznaka).
Tutorijal će koristiti RFID tag sa Arduinom. Uređaj čita jedinstveni identifikator (UID) svake RFID oznake koju postavimo pored čitača i prikazuje ga na OLED displeju. Ako je UID oznake jednak unaprijed definiranoj vrijednosti koja je pohranjena u Arduino memoriji, tada ćemo na ekranu vidjeti poruku “Otključano”. Ako jedinstveni identifikator nije jednak unaprijed definiranoj vrijednosti, poruka "Otključano" se neće pojaviti - pogledajte sliku ispod.
Dvorac je zatvoren
Dvorac je otvoren
Detalji potrebni za kreiranje ovog projekta:
- RFID čitač RC522
- OLED displej
- Bread board
- žice
Dodatni detalji:
- Baterija (power banka)
Ukupna cijena komponenti projekta iznosila je približno 15 dolara.
Korak 2: RFID čitač RC522
Svaka RFID oznaka ima mali čip (bijela kartica na fotografiji). Ako uperite baterijsku lampu u ovu RFID karticu, možete vidjeti mali čip i zavojnicu koja ga okružuje. Ovaj čip nema bateriju za proizvodnju energije. Snagu od čitača prima bežično pomoću ove velike zavojnice. Ovakvu RFID karticu moguće je čitati sa udaljenosti do 20 mm.
Isti čip postoji u RFID privjescima za ključeve.
Svaka RFID oznaka ima jedinstveni broj koji je identifikuje. Ovo je UID koji se prikazuje na OLED ekranu. Sa izuzetkom ovog UID-a, svaka oznaka može pohraniti podatke. Ova vrsta kartice može pohraniti do 1.000 podataka. Impresivno, zar ne? Ova funkcija se danas neće koristiti. Danas je jedino interesantno identifikacija određene kartice po njenom UID-u. RFID čitač i ove dvije RFID kartice koštaju oko 4 dolara.
Korak 3 OLED ekran
Tutorijal koristi 0,96" 128x64 I2C OLED monitor.
Ovo je vrlo dobar ekran za korištenje sa Arduinom. To je OLED ekran i to znači da ima nisku potrošnju energije. Potrošnja energije ovog displeja je oko 10-20mA i zavisi od broja piksela.
Ekran ima rezoluciju od 128 x 64 piksela i male je veličine. Postoje dvije opcije prikaza. Jedna od njih je jednobojna, a druga, kao i ona korištena u tutorijalu, može prikazati dvije boje: žutu i plavu. Gornji dio ekrana može biti samo žut, a donji plavi.
Ovaj OLED ekran je veoma svetao i ima sjajnu i veoma lepu biblioteku koju je Adafruit razvio za ovaj ekran. Pored ovoga, ekran koristi I2C interfejs, tako da je povezivanje sa Arduinom neverovatno jednostavno.
Trebate spojiti samo dvije žice osim Vcc i GND. Ako ste novi u Arduinu i želite koristiti jeftin i jednostavan zaslon u svom projektu, počnite ovdje.
Korak 4: Spajanje svih dijelova
Komunikacija sa Arduino Uno pločom je vrlo jednostavna. Prvo priključite napajanje na čitač i ekran.
Budite oprezni, RFID čitač mora biti povezan na 3.3V izlaz iz Arduino Uno ili će se oštetiti.
Pošto displej može da radi i na 3.3V, povezujemo VCC sa oba modula na pozitivnu šinu matične ploče. Ova šina se zatim povezuje na 3.3V izlaz iz Arduino Uno. Zatim povezujemo oba uzemljenja (GND) na sabirnicu uzemljenja matične ploče. Zatim povezujemo GND sabirnicu matične ploče na Arduino GND.
OLED ekran → Arduino
SCL → Analogni pin 5
SDA → Analogni pin 4
RFID čitač → Arduino
RST → Digitalni pin 9
IRQ → Nije povezan
MISO → Digitalni pin 12
MOSI → Digitalni pin 11
SCK → Digitalni pin 13
SDA → Digitalni pin 10
Modul RFID čitača koristi SPI interfejs za komunikaciju sa Arduinom. Zato ćemo koristiti Arduino UNO hardverske SPI pinove.
RST pin ide na digitalni pin 9. IRQ pin ostaje isključen. MISO pin ide na digitalni pin 12. MOSI pin ide na digitalni pin 11. SCK pin ide na digitalni pin 13, i konačno SDA pin ide na digitalni pin 10. To je to.
RFID čitač povezan. Sada moramo da povežemo OLED ekran sa Arduinom koristeći I2C interfejs. Dakle, SCL pin na displeju ide na analogni Pin 5, a SDA na displeju na analogni Pin 4. Ako sada uključimo projekat i stavimo RFID karticu pored čitača, možemo vidjeti da projekt radi dobro.
Korak 5: Šifra projekta
Da bi kod projekta bio kompajliran, moramo uključiti neke biblioteke. Prije svega, potrebna nam je MFRC522 Rfid biblioteka.
Da biste ga instalirali, idite na Skica -> Uključi biblioteke -> Upravljaj bibliotekama(Upravljanje bibliotekama). Pronađite MFRC522 i instalirajte ga.
Također nam je potrebna Adafruit SSD1306 biblioteka i Adafruit GFX biblioteka za prikaz.
Instalirajte obje biblioteke. Biblioteci Adafruit SSD1306 je potrebna mala modifikacija. Idi u folder Arduino -> Biblioteke, otvorite fasciklu Adafruit SSD1306 i uredite biblioteku Adafruit_SSD1306.h. Komentirajte red 70 i dekomentirajte red 69 jer Rezolucija ekrana je 128x64.
Prvo, deklariramo vrijednost RFID oznake koju bi Arduino trebao prepoznati. Ovo je niz cijelih brojeva:
int kod = (69,141,8,136); // UID
Zatim inicijaliziramo RFID čitač i prikazujemo:
Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Nakon toga, u funkciji petlje, provjeravamo tag na čitaču svakih 100ms.
Ako čitač ima oznaku, čitamo njen UID i ispisujemo je na displeju. Zatim upoređujemo UID oznake koju smo upravo pročitali sa vrijednošću pohranjenom u varijabli koda. Ako su vrijednosti iste, prikazujemo poruku UNLOCK, u suprotnom nećemo prikazati ovu poruku.
If(podudaranje) ( Serial.println("\nZnam ovu karticu!"); printUnlockMessage(); )else ( Serial.println("\nNepoznata kartica"); )
Naravno, možete promijeniti ovaj kod da pohrani više od 1 UID vrijednosti tako da projekt prepozna više RFID oznaka. Ovo je samo primjer.
Šifra projekta:
#include Kao što vidite iz lekcije - za malo novca možete dodati RFID čitač u svoje projekte. Sa ovim čitačem lako možete kreirati sigurnosni sistem ili kreirati zanimljivije projekte, na primjer, tako da se podaci sa USB diska čitaju tek nakon otključavanja.
Ovaj projekat je modularan, tj. možete povezati/odspojiti različite elemente i dobiti različite funkcionalnosti. Na slikama iznad prikazana je varijanta sa punom funkcionalnošću i to: U postavkama firmvera možete odabrati bilo koji od tri tipa (postavka lock_type) Bilo koji od ovih elemenata može biti isključen iz sistema: Brava je dizajnirana da radi na bateriju u režimu niske uštede energije (Omogući Onemogući: podešavanje sleep_enable), naime: Kada je sistem budan, pritisnite dugme za promjenu lozinke (skriveno dugme). Upadamo u mod promjene lozinke: Kada sistem ne spava (probudio se dugmetom ili je spavanje onemogućeno), pritisnite * da uđete u režim unosa lozinke Korak 6: Konačni rezultat
Unesite lozinku od brojeva ( MAKSIMALNO 10 BROJEVA!!!)
Ako sistem spava i povremeno se budi kako bi provjerio DOGAĐAJ, pritisnite * i držite dok se ne upali crvena LED dioda
Način unosa lozinke: