Blocare electronica pentru arduino nano. Realizarea unei blocări RFID folosind Arduino

În această lecție, vom învăța cum să facem un sistem simplu care va debloca încuietoarea folosind o cheie electronică (Tag).

În viitor, puteți modifica și extinde funcționalitatea. De exemplu, adăugați funcția „adăugați chei noi și eliminați-le din memorie”. În cazul de bază, luați în considerare un exemplu simplu, când un identificator unic de cheie este prestabilit în codul programului.

În acest tutorial vom avea nevoie de:

Pentru a implementa proiectul, trebuie să instalăm bibliotecile:

2) Acum trebuie să conectați un Buzzer, care va da un semnal dacă cheia este declanșată și încuietoarea se deschide și un al doilea semnal când încuietoarea este închisă.

Conectam soneria în următoarea secvență:

Arduino Buzzer
5V VCC
GND GND
pinul 5 IO

3) Servo va fi folosit ca mecanism de deblocare. Orice servo poate fi ales, în funcție de dimensiunile și forțele cerute de tine, pe care le creează servo-ul. Servoiul are 3 pini:

Mai clar, puteți vedea cum am conectat toate modulele în imaginea de mai jos:

Acum, dacă totul este conectat, atunci puteți trece la programare.

Schiță:

#include #include #include // Bibliotecă „RFID”. #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); nesemnat lung uidDec, uidDecTemp; // pentru a stoca numărul etichetei în format zecimal Servo servo; void setup () (Serial.begin (9600); Serial.println ("Se așteaptă cardul..."); SPI.begin (); // inițializare SPI / Init SPI bus.mfrc522.PCD_Init (); // inițializare MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // setați servo-ul la închis) void loop () (// Găsiți o nouă etichetă dacă (! Mfrc522.PICC_IsNewCardPresent ()) (întoarceți) ; ) // Selectați o etichetă dacă (! Mfrc522.PICC_ReadCardSerial ()) (return;) uidDec = 0; // Emiteți numărul de serie al etichetei.for (octetul 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); // устанавливаем серву в закрытое сосотояние }

Să aruncăm o privire mai atentă asupra schiței:

Pentru a afla UID-ul cardului (etichete), trebuie să scrieți această schiță pe arduino, să asamblați circuitul descris mai sus și să deschideți Consola (monitorizarea portului serial). Când aduceți eticheta la RFID, un număr va fi afișat în consolă

UID-ul rezultat trebuie introdus în următorul rând:

If (uidDec == 3763966293) // Comparați Uid-ul etichetei, dacă este egal cu cel dat atunci servo deschide supapa.

Fiecare card are un identificator unic și nu se repetă. Astfel, atunci când aduceți cardul, al cărui identificator l-ați setat în program, sistemul va deschide accesul folosind un servomotor.

Video:

Arduino este cel mai bun sistem pentru copierea oricărui hardware. Majoritatea ideilor nu ar fi fost posibile fără ea. A existat de mult un astfel de gând: să creeze o blocare cu combinație specială pe arduino. Pentru a-l deschide, trebuie să țineți apăsată o anumită tastă. În acest caz, încuietoarea nu ar trebui să se deschidă, chiar dacă cunoașteți butonul dorit. Pentru a-l deschide, este necesar să se mențină anumite intervale folosind memoria musculară. Un astfel de criminal nu poate face. Dar toate acestea sunt doar teorie.

Pentru a-l colecta, trebuie să utilizați un dispozitiv special de impulsuri dreptunghiulare, precum și mai multe contoare și o grămadă. Dar dispozitivul finit ar avea dimensiuni mari și ar fi incomod de utilizat. De regulă, astfel de gânduri nu dau odihnă. Primul pas în realizarea acestui vis a fost crearea unui program pentru Arduino. Ea este cea care va servi drept lacăt cu combinație. Pentru a-l deschide, trebuie să apăsați nu o tastă, ci mai multe și să faceți acest lucru simultan. Circuitul terminat arată astfel:

Calitatea imaginii nu este cea mai bună, dar conexiunile se fac la pământ, D3, D5, D7, D9 și D11.

Codul este prezentat mai jos:

Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; octet a = 0; octet b = 0; octet c = 0; octet d = 0; timp lung nesemnat = 0; // nu uitați tot ceea ce millis () ia pe unsigned long temp = 0; // stocați în cheia de octeți lungi nesemnați = (0, 0, 0, 0, 0, 0, 0, 0); // codifică tasta octet propriu b = (1, 1, 1, 1, 0, 1, 0, 0); tasta octetc = (1, 0, 1, 0, 1, 1, 1, 0); octet k = 0; void setup () (pinMode (ina, INPUT_PULLUP); // 3 intrări conectate la butoanele pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // LED încorporat pe data de 13 pin pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); // înlocuiește masa digitalWrite (11, LOW); time = millis (); // necesar pentru sincronizare) void blinktwice () ( // clipirea dublă a LED-ului digitalWrite (ledPin, HIGH); întârziere (100); digitalWrite (ledPin, LOW); întârziere (100); digitalWrite (ledPin, HIGH); întârziere (100); digitalWrite (ledPin, LOW) ; întârziere ( 200);) buclă goală () (dacă (k == 0) (pâlpâie de două ori (); // solicită cod) dacă (k == 8) (digitalWrite (ledPin, HIGH); întârziere (3000); k = 0 ;) a = digitalRead (ina); // nivelurile semnalului sunt citite de la butoane - apăsate / neapăsate b = digitalRead (inb); c = digitalRead (inc); întârziere (100); // următorul dacă - protecție împotriva falselor pozitive, nu trebuie să utilizați if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) (if (a == keya) [k]) (dacă (b == keyb [k]) (dacă (c == keyc [k]) (k ++; )))) dacă (k == 1) (dacă (d == 0) (timp = milis (); d ++;)) temp = milis (); temp = temp - timp; dacă (temp> 10000) (k = 0; d = 0; timp = milis ();))

Pentru a evita întrebările inutile despre cod, unele puncte ar trebui clarificate. Funcția de configurare este utilizată pentru a atribui porturi. Următoarea funcție este Input_Pullup, care este necesară pentru a crește tensiunea pinului cu 5 V. Acest lucru se face cu un rezistor. Din acest motiv, diferite scurtcircuite nu vor avea loc. Pentru mai mult confort, se recomandă utilizarea funcției blinktwice. În general, atunci când creați diverse programe, trebuie să încercați și alte funcții.

După atribuirea funcțiilor, semnalul este citit de la porturi. Dacă butonul este apăsat, acesta va fi indicat de numărul 1, iar dacă nu - 2. În continuare, toate valorile sunt analizate. De exemplu, a apărut o combinație precum 0,1,1. Aceasta înseamnă că prima tastă este apăsată, iar celelalte două nu. Dacă toate valorile sunt adevărate, atunci condiția 8 este, de asemenea, adevărată. Acest lucru este evidențiat de LED-ul iluminat de pe panoul frontal. Apoi, trebuie să introduceți un cod specific care va servi la deschiderea ușii.

Ultimele elemente ale codului sunt folosite pentru a reseta valorile contorului. Această funcție este efectuată dacă au trecut mai mult de 10 secunde de la ultima apăsare a tastei. Fără acest cod, a fost posibilă enumerarea tuturor opțiunilor posibile, deși există destul de multe dintre ele. După crearea acestui dispozitiv, trebuie să-l testați. Mai mult

Mă uitam la The Amazing Spider-Man zilele trecute și într-o scenă Peter Parker deschide și închide ușa de la laptop de la distanță. Imediat ce am văzut asta, mi-am dat seama imediat că am nevoie și de o astfel de încuietoare electronică pe ușa din față.

Cu puțină reparație, am pus cap la cap un model funcțional de încuietoare inteligentă. În acest articol, vă voi spune cum l-am pus împreună.

Pasul 1: Lista materialelor





Pentru a asambla o încuietoare electronică pe Arduino, veți avea nevoie de următoarele materiale:

Electronică:

  • Adaptor de perete de 5V

Componente:

  • 6 șuruburi pentru zăvor
  • carton
  • fire

Instrumente:

  • ciocan de lipit
  • pistol de lipit
  • burghiu
  • burghiu
  • gaură pilot
  • cuțit de papetărie
  • computer cu programul Arduino IDE

Pasul 2: cum funcționează blocarea

Ideea este că pot deschide sau închide ușa fără cheie și fără să mă duc măcar la ea. Dar aceasta este doar ideea de bază, pentru că puteți adăuga și un senzor de bătaie, astfel încât să răspundă la o bătaie specială, sau puteți adăuga un sistem de recunoaștere a vocii!

Brațul servo conectat la zăvor se va închide (0 °) și se va deschide (60 °) folosind comenzile primite prin modulul Bluetooth.

Pasul 3: Schema de cablare


Să conectăm mai întâi servo-ul la placa Arduino (rețineți că, deși am o placă Arduino Nano, dispunerea pinului este exact aceeași pe placa Uno).

  • firul maro al servo este împământat, îl conectăm la masă pe Arduino
  • firul roșu este un plus, îl conectăm la conectorul de 5V de pe Arduino
  • fir portocaliu - ieșirea sursei servo, o conectăm la al 9-lea pin de pe Arduino

Vă sfătuiesc să testați servo înainte de a continua cu asamblarea. Pentru a face acest lucru, în programul Arduino IDE din exemple, selectați Sweep. După ce ne asigurăm că servo-ul funcționează, putem conecta modulul Bluetooth. Trebuie să conectați pinul rx al modulului Bluetooth la pinul tx al Arduino și pinul tx al modulului la pinul rx al Arduino. Dar nu o face încă! Odată ce aceste conexiuni sunt lipite, nu veți mai putea încărca niciun cod pe Arduino, așa că mai întâi descărcați toate codurile și abia apoi lipiți conexiunile.

Iată schema de conexiuni pentru modul și microcontroler:

  • Modul Rx - Placa Tx Arduino
  • Modul Tx - plăci Rx
  • Vcc (pozitiv) al modulului - 3,3v a plăcii Arduino
  • Masa este conectata la masa (masa la masa)

Dacă explicația vi se pare confuză, urmați schema de cablare furnizată.

Pasul 4: Testează

Acum că avem toate piesele în acțiune, să ne asigurăm că servo poate mișca șurubul. Înainte de a monta zăvorul pe ușă, am pus împreună o piesă de testare pentru a mă asigura că servo-ul este suficient de puternic. La început mi s-a părut că servo-ul meu este slab și am adăugat o picătură de ulei pe șurub, după aceea a funcționat bine. Este foarte important ca mecanismul să alunece bine, altfel riști să fii prins în camera ta.

Pasul 5: carcasă pentru componentele electrice



Am decis să pun în carcasă doar controlerul și modulul Bluetooth și să las servo afară. Pentru a face acest lucru, pe o bucată de carton, încercuim conturul plăcii Arduino Nano și adăugăm 1 cm de spațiu în jurul perimetrului și o decupăm. După aceea, am decupat și alte cinci părți ale carcasei. În peretele frontal, va trebui să tăiați o gaură pentru cablul de alimentare al controlerului.

Dimensiuni laterale ale carcasei:

  • Partea de jos - 7,5x4 cm
  • Coperta - 7,5x4 cm
  • Perete lateral stâng - 7,5x4 cm
  • Perete lateral drept - 7,5x4 cm
  • Perete frontal - 4x4 cm (cu fantă pentru cablul de alimentare)
  • Perete din spate - 4x4 cm

Pasul 6: Aplicare

Pentru a controla controlerul, aveți nevoie de un gadget Android sau Windows cu Bluetooth încorporat. Nu am avut ocazia să testez funcționarea aplicației pe dispozitive Apple, poate că va fi nevoie de niște drivere.

Sunt sigur că unii dintre voi au ocazia să testeze asta. Pentru Android, descărcați aplicația Bluetooth Terminal, pentru Windows, descărcați TeraTerm. Apoi trebuie să conectați modulul la smartphone, numele ar trebui să fie linvor, parola ar trebui să fie 0000 sau 1234. De îndată ce împerecherea este stabilită, deschideți aplicația instalată, introduceți opțiunile și selectați „Stabiliți conexiunea (nesigură)” . Smartphone-ul dvs. este acum un monitor serial Arduino, ceea ce înseamnă că puteți comunica cu controlerul.

Dacă introduceți 0, ușa se va închide și mesajul „Ușă închisă” va fi afișat pe ecranul smartphone-ului.
Dacă introduceți 1, veți vedea ușa deschisă și mesajul „Ușă deschisă” va fi afișat pe ecran.
Pe Windows, procesul este același, cu excepția faptului că trebuie să instalați aplicația TeraTerm.

Pasul 7: montați șurubul


Mai întâi trebuie să conectați servo-ul la zăvor. Pentru a face acest lucru, tăiați dopurile din orificiile de montare ale carcasei unității. Dacă punem servo, orificiile de montare ar trebui să fie la nivel cu zăvorul. Apoi trebuie să plasați pârghia servo în fanta de blocare, unde era mânerul de blocare. Verificați cum se mișcă încuietoarea în carcasă. Dacă totul este în regulă, fixați brațul servo cu lipici.

Acum trebuie să găuriți găuri pilot pentru șuruburile din ușă. Pentru a face acest lucru, atașați zăvorul la ușă și marcați găurile pentru șuruburi de pe foaia ușii cu un creion. Găuriți găuri pentru șuruburi de aproximativ 2,5 cm adâncime în locurile marcate.Atașați zăvorul și fixați-l cu șuruburi. Verificați din nou servo-ul.

Pasul 8: Putere


Pentru a finaliza dispozitivul, veți avea nevoie de o sursă de alimentare, un cablu și o mufă mini USB pentru a vă conecta la Arduino.
Conectați pinul de împământare al sursei de alimentare la pinul de împământare al portului mini usb, conectați firul roșu la firul roșu al portului mini usb, apoi treceți firul de la încuietoare la balamaua ușii și de acolo la priză.

Pasul 9: Cod

#include Servo myservo; int pos = 0; stare int; int flag = 0; void setup () (myservo.attach (9); Serial.begin (9600); myservo.write (60); delay (1000);) void loop () (dacă (Serial.available ()> 0) (stare = Serial.read (); flag = 0;) // dacă starea este „0”, motorul de curent continuu se va opri dacă (state == „0”) (myservo.write (8); întârziere (1000); Serial. println ("Ușă blocată");) else if (stare == "1") (myservo.write (55); întârziere (1000); Serial.println ("Ușă deblocată");))

Pasul 10: Blocarea Arduino finalizată

Bucurați-vă de blocarea telecomenzii și nu uitați să vă blocați „în mod accidental” prietenii în cameră.

Lecția de astăzi despre cum să utilizați un cititor RFID cu un Arduino pentru a crea un sistem de blocare simplu, în cuvinte simple - o încuietoare RFID.

RFID (English Radio Frequency IDentification, radio frequency identification) este o metodă de identificare automată a obiectelor, în care datele stocate în așa-numitele transpondere sau etichete RFID sunt citite sau scrise prin intermediul semnalelor radio. Orice sistem RFID constă dintr-un cititor (cititor, cititor sau interogator) și un transponder (alias etichetă RFID, uneori se folosește și termenul etichetă RFID).

Acest tutorial va folosi o etichetă RFID de la un Arduino. Dispozitivul citește identificatorul unic (UID) al fiecărei etichete RFID pe care o plasăm lângă cititor și îl afișează pe afișajul OLED. Dacă UID-ul etichetei este egal cu valoarea predefinită care este stocată în memoria Arduino, atunci vom vedea mesajul „Unlocked” pe afișaj. Dacă identificatorul unic nu este egal cu valoarea predefinită, mesajul „Deblocat” nu va apărea - vezi fotografia de mai jos.

Lacătul este închis

Lacătul este deschis

Detalii necesare pentru a crea acest proiect:

  • Cititor RFID RC522
  • Afișaj OLED
  • Tabla de paine
  • Fire

Detalii suplimentare:

  • baterie (bancă de putere)

Costul total al componentelor proiectului a fost de aproximativ 15 USD.

Pasul 2: Cititor RFID RC522

Fiecare etichetă RFID are un mic cip (cartel alb în imagine). Dacă îndreptați lanterna spre acest card RFID, puteți vedea un mic cip și o bobină care îl înconjoară. Acest cip nu are o baterie pentru a genera energie. Primește putere de la cititor fără fir folosind această bobină mare. Un astfel de card RFID poate fi citit de la o distanță de până la 20 mm.

Același cip există și în etichetele cheii RFID.

Fiecare etichetă RFID are un număr unic care o identifică. Acesta este UID-ul care este afișat pe afișajul OLED. Cu excepția acestui UID, fiecare etichetă poate stoca date. Acest tip de card poate stoca până la 1.000 de date. Impresionant, nu-i așa? Această funcție nu va fi utilizată astăzi. Astăzi, tot ceea ce interesează este identificarea unui anumit card prin UID-ul său. Costul cititorului RFID și al acestor două carduri RFID este de aproximativ 4 USD.

Pasul 3: afișaj OLED

Acest tutorial folosește un monitor OLED I2C de 0,96 "128x64.

Acesta este un afișaj foarte bun pentru utilizare cu Arduino. Este un display OLED și asta înseamnă că are un consum redus de energie. Consumul de energie al acestui display este de aproximativ 10-20mA și depinde de numărul de pixeli.

Display-ul are o rezoluție de 128 pe 64 de pixeli și este mic. Există două opțiuni de afișare. Unul dintre ele este monocrom, iar celălalt, ca cel folosit în tutorial, poate afișa două culori: galben și albastru. Partea de sus a ecranului poate fi doar galbenă, iar partea de jos albastră.

Acest afișaj OLED este foarte luminos și are o bibliotecă grozavă și foarte frumoasă pe care Adafruit a dezvoltat-o ​​pentru acest afișaj. În plus, afișajul folosește o interfață I2C, astfel încât conectarea la Arduino este incredibil de ușoară.

Trebuie doar să conectați două fire, cu excepția Vcc și GND. Dacă sunteți nou în Arduino și doriți să utilizați un afișaj ieftin și simplu în proiectul dvs., începeți de aici.

Pasul 4: conectați toate detaliile

Comunicarea cu placa Arduino Uno este foarte simplă. Mai întâi, conectați alimentarea atât la cititor, cât și la afișaj.

Fiți atenți, cititorul RFID trebuie conectat la ieșirea de 3,3 V a Arduino Uno, altfel se va deteriora.

Deoarece afișajul poate funcționa și la 3,3 V, conectăm VCC-ul de la ambele module la șina pozitivă a plăcii. Această magistrală este apoi conectată la ieșirea de 3,3 V de la Arduino Uno. Apoi conectăm ambele împământări (GND) la magistrala de împământare a plăcii. Apoi conectăm magistrala GND a plăcii de breadboard la Arduino GND.

Afișaj OLED → Arduino

SCL → Pin analogic 5

SDA → Pin analogic 4

Cititor RFID → Arduino

RST → Pinul digital 9

IRQ → Neconectat

MISO → Pinul digital 12

MOSI → Pin digital 11

SCK → Pinul digital 13

SDA → Pinul digital 10

Modulul cititor RFID folosește interfața SPI pentru a comunica cu Arduino. Prin urmare, vom folosi pinii SPI hardware de la Arduino UNO.

Pinul RST trece la pinul digital 9. Pinul IRQ rămâne deconectat. Pinul MISO merge la pinul digital 12. Pinul MOSI merge la pinul digital 11. Pinul SCK merge la pinul digital 13 și, în final, pinul SDA merge la pinul digital 10. Asta este.

Cititor RFID conectat. Acum trebuie să conectăm afișajul OLED la Arduino folosind interfața I2C. Deci pinul SCL de pe afișaj merge la pinul analog al pinului 5 și SDA de pe afișaj la pinul analogic 4. Dacă acum pornim proiectul și punem cardul RFID lângă cititor, putem vedea că proiectul functioneaza bine.

Pasul 5: Codul proiectului

Pentru ca codul proiectului să fie compilat, trebuie să includem câteva biblioteci. În primul rând, avem nevoie de biblioteca MFRC522 Rfid.

Pentru a-l instala, accesați Schiță -> Include biblioteci -> Gestionează biblioteci(gestionarea bibliotecii). Găsiți MFRC522 și instalați-l.

Avem nevoie și de biblioteca Adafruit SSD1306 și de biblioteca Adafruit GFX pentru cartografiere.

Instalați ambele biblioteci. Biblioteca Adafruit SSD1306 are nevoie de o mică modificare. Accesați folderul Arduino -> Biblioteci, deschideți folderul Adafruit SSD1306 și editați biblioteca Adafruit_SSD1306.h... Comentează linia 70 și anulează comentariile linia 69 pentru că display-ul are o rezoluție de 128x64.

În primul rând, declarăm valoarea etichetei RFID pe care Arduino trebuie să o recunoască. Aceasta este o matrice de numere întregi:

Cod int = (69,141,8,136); // UID

Apoi inițializam cititorul RFID și afișăm:

RFID.PCD_Init (); display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

După aceea, în funcția de buclă, verificăm eticheta de pe cititor la fiecare 100 ms.

Dacă există o etichetă pe cititor, îi citim UID-ul și îl imprimăm pe afișaj. Apoi comparăm UID-ul etichetei pe care tocmai o citim cu valoarea stocată în variabila cod. Dacă valorile sunt aceleași, imprimăm mesajul DEBLOCARE, altfel nu vom afișa acest mesaj.

Dacă (se potrivește) (Serial.println ("\ nCunosc acest card!"); PrintUnlockMessage ();) else (Serial.println ("\ nCartel necunoscut");)

Desigur, puteți schimba acest cod pentru a stoca mai mult de 1 valoare UID, astfel încât mai multe etichete RFID să fie recunoscute de proiect. Acesta este doar un exemplu.

Cod proiect:

#include #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 display (OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid (SS_PIN, RST_PIN); // Instanța clasei MFRC522 :: MIFARE_Key key; cod int = (69,141,8,136); // Acesta este UID-ul stocat int codeRead = 0; String uidString; void setup () (Serial.begin (9600); SPI.begin (); // Init SPI bus rfid.PCD_Init (); // Init MFRC522 display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Inițializați cu adresa I2C 0x3D (pentru 128x64) // Ștergeți buffer.display.clearDisplay (); display.display (); display.setTextColor (ALB); // sau BLACK); display.setTextSize (2); display.setCursor (10,0); display.print ("Blocare RFID"); display.display (); ) void loop () (dacă (rfid.PICC_IsNewCardPresent ()) (readRFID ();) întârziere (100);) void readRFID () (rfid.PICC_ReadCardSerial (); Serial.print (F ("\ nPICC tip:")) ); MFRC522 :: PICC_Type piccType = rfid.PICC_GetType (rfid.uid.sak); Serial.println (rfid.PICC_GetTypeName (piccType)); // Verificați este PICC de tipul Classic MIFARE! = PICMType22 &!2 piccType22! : PICC_TYPE_MIFARE_1K && piccType! = MFRC522 :: PICC_TYPE_MIFARE_4K) (Serial.println (F ("Eticheta dvs. nu este de tip MIFARE Classic.")); return;) clearUID (); return;) clearUID (); PICC "-uri scanate UID:"); printDec (rfid.uid.uidByte, rfid.uid.size); uidString = String (rfid.uid.uidByte) + "" + String (rfid.uid.uidByte) + "" + String (rfid. uid.uidByte) + "" + String (rfid.uid.uidByte); printUID (); int i = 0; potrivire booleană = adevărat; while (i

Pasul 6: rezultatul final

După cum puteți vedea din lecție - pentru puțini bani, puteți adăuga un cititor RFID la proiectele dvs. Puteți crea cu ușurință un sistem de securitate folosind acest cititor sau puteți crea proiecte mai interesante, de exemplu, astfel încât datele de pe un disc USB să fie citite numai după deblocare.

Acest proiect este modular, adică puteți conecta/deconecta diferite elemente și puteți obține diferite funcționalități. Imaginile de mai sus arată opțiunea cu funcționalitate completă, și anume:

  • Mecanism de blocare... Serveste pentru DESCHIDERE si INCHISARE usii. Acest proiect acoperă utilizarea a trei mecanisme diferite:
    • Servo. Sunt mari, sunt mici. Foarte compact și cu un șurub greu este o opțiune grozavă
    • Acționare electrică a încuietorilor ușii mașinii. Un lucru mare și puternic, dar mănâncă doar curenți nebuni
    • Încuietoare cu solenoid. O opțiune bună, deoarece se trântește de la sine

    În setările firmware-ului, puteți alege oricare dintre cele trei tipuri (setare tip_blocare)

  • Buton în interior... Serveste pentru DESCHIDERE si INCHISARE usii din interior. Poate fi așezat pe mânerul ușii (partea palmei sau a degetului), pe ușa propriu-zisă sau pe montant
  • Buton afară... Servește la ÎNCHIDEREA ușii, precum și la TREZIREA din economisirea energiei. Poate fi așezat pe mânerul ușii (partea palmei sau a degetului), pe ușa propriu-zisă sau pe montant
  • Oprire finală să închidă ușa. Servește la închiderea automată a broaștei când ușa este închisă. Ei pot fi:
    • Butonul de tact
    • Senzor Hall + magnet pe usa propriu-zisa
    • Comutator lamelă + magnet pe ușă în sine
  • Secret accesați butonul de resetare... Servește la resetarea parolei / introducerea unei noi parole / memorarea unei noi chei / combinații etc. Poate fi ascuns undeva în carcasă
  • Dioda electro luminiscenta pentru a indica munca. Se folosesc LED RGB, culorile roșu și verde (când sunt amestecate, dau galben):
    • Se aprinde verde - încuietoarea este DESCHIS. Arsuri pentru a nu uita să închideți ușa
    • Galben continuu - sistemul s-a trezit și așteaptă introducerea parolei
    • Roșu intermitent - bateria este descărcată

Oricare dintre aceste elemente poate fi exclus din sistem:

  • Scoatem comutatorul final. În firmware-ul din setări, îl dezactivăm și (setarea buton_coada). Acum, pentru a închide încuietoarea, trebuie să apăsați butonul
  • Scoatem butonul exterior. În firmware-ul din setări, îl dezactivăm și (setarea buton_trezire). Acum sistemul nu trebuie trezit, se trezește de la sine (consumul de energie este puțin mai mare). Și, de asemenea, nu mai avem un buton de închidere pe partea din față a ușii și avem nevoie de un întrerupător de limită. Ori încuietoarea e naiba
  • Scoatem butonul interior. Această opțiune este potrivită pentru dulapuri și seifuri. Nu trebuie să modificați nimic în setări
  • Scoatem LED-ul. Nu trebuie să modificați nimic în setări
  • Butonul de resetare a accesului poate fi dezlipit după prima utilizare sau puteți rescrie codul pentru dvs
  • Ușă închisă, apăsat în EXTERIOR - treziți-vă, așteptați parola / eticheta RFID / cheia electronică / amprenta digitală
  • Ușa este închisă, sistemul s-a trezit, așteptând introducerea parolei. Ora poate fi reglată (setare ora de dormit)
  • Ușa este închisă, a fost introdusă o parolă/etichetă/cheie etc. - deschis
  • Ușă închisă, apăsată în INTERIOR - deschisă
  • Ușă deschisă, apăsată în EXTERIOR - închidere
  • Ușă deschisă, apăsată în INTERIOR - închidere
  • Ușa este deschisă, sfârșitul este apăsat - închideți

Blocarea asigură funcționarea bateriei în modul de economisire a energiei reduse (pornire oprire: setare sleep_enable), și anume:

  • Treziți-vă la fiecare câteva secunde, urmați EVENIMENTUL (opțional dacă nu există niciun buton în exterior. Puteți să-l activați în setare buton_trezire)
  • La fiecare câteva minute, monitorizați tensiunea lui Akum (setare de pornire / oprire baterie_monitor)
  • Dacă Akum este descărcat (tensiunea este setată în setare bat_low):
    • deschide ușa (opțional, poate fi configurat în firmware open_bat_low)
    • interzice deschiderea și închiderea ulterioară
    • când butoanele sunt apăsate, LED-ul roșu clipește
    • opriți monitorizarea EVENIMENTULUI (adică introduceți parola/eticheta etc.)

Când sistemul este treaz, apăsați butonul de schimbare a parolei (buton ascuns). Cădem în modul de schimbare a parolei:
Introdu parola din numere ( MAXIM 10 CIFRE!!!)

  • Când apăsați *, parola este salvată în memorie și sistemul iese din schimbarea parolei
  • Când apăsați #, parola este resetată (o puteți introduce din nou)
  • Dacă nu apăsați nimic timp de 10 secunde, vom ieși automat din modul de schimbare a parolei, parola va rămâne veche

Când sistemul este trezit (trezit de butoane sau somnul este dezactivat), apăsați * pentru a intra în modul de introducere a parolei
Dacă sistemul doarme și se trezește periodic pentru a verifica EVENIMENTUL, apoi apăsați * și mențineți apăsat până când LED-ul roșu se aprinde
Mod de introducere a parolei:

  • Procesarea parolei se face în așa fel încât parola corectă să fie socotită numai atunci când este introdusă succesiunea corectă de numere, adică dacă parola este 345, atunci puteți introduce orice numere până când apare secvența 345, adică. 30984570345 va deschide încuietoarea pe măsură ce se termină în 345.
  • Dacă parola este introdusă corect, ușa se va deschide
  • Dacă nu apăsați nimic, după 10 secunde sistemul va reveni la modul normal (standby).
  • Dacă apăsați #, vom ieși imediat din modul de introducere a parolei
  • Dacă apăsați butonul secret pentru schimbarea parolei în modul de introducere a parolei, atunci vom ieși și noi din el