Table of Contents

RFID Based Access Control

Nume: Al Bouri Saleem
Grupa: 331 CD

Introducere

Descrierea Proiectului

Implementarea unui sistem de acces controlat prin tehnologia RFID. Sistemul va permite utilizatorilor care dețin un card/tag RFID valid (recunoscut) să deschidă zăvorul unei uși.
Accesul va fii acordat utilizatorilor prin folosirea unui card Master care va permite adăugarea sau revocarea altor carduri/taguri RFID, astfel oferind permisiunea mai multor utilizatori să acționeze asupra zăvorului.
Cu ajutorul unui ecran LCD și a unor semnale luminoase (LED-uri), sistemul va oferi un feedback vizual utilizatorului (negativ/pozitiv/atentionare) în urma acțiunilor efectuate de acesta. De asemenea sistemul va fii capabil să detecteze o posibilă încercare de deschidere a ușii când zăvorul este închis prin folosirea unui senzor optic, fapt ce va conduce la declanșarea unei alarme.

Scopul Proiectului

Proiectul final va deservi la protejarea unui dulap/sertar împotriva diferiților utilizatori nelegitimi (care nu au un card RFID recunoscut de către sistem).

Motivație

Deseori oamenii doresc protejarea anumitor obiecte în momentul în care nu pot fii lângă acestea. Deci ideea proiectului a pornit de la dorința de a proteja anumite obiecte speciale, dar în același timp de a acorda acces și altor persoane fără a fii nevoiți de a împărtăși aceiași “cheie” fizică.

Utilitate

Proiectul este util atât pentru mine, cât și pentru alte persoane datorită faptului că este ușor de folosit, oferă siguranță asupra obiectelor depozitate atât prin blocarea accesului (datorită zăvorului), cât și prin declanșarea unei alarme în cazul unui posibil “furt” și în același timp permite accesul mai multor persoane.

Descriere generală

Prezentare Schema Bloc

In centrul imaginii se afla placa de dezvoltare “Arduino Uno R3” (bazat pe microcontrollerul ATmega328P) care comunica cu atat LCD-ul 1602 prin protocolul de comunicatie I2C, cat si cu modulul RFID RC522 prin protocolul de comunicatie SPI. De asemenea, cu ajutorul microcontroller-ului, se va putea genera un semnal de output catre tranzistorul MOSFET, care va permite trecerea curentului si astfel deschiderea incuietoarei (solenoid-ului). Atat senzorul fotosenzitiv cat si cele trei butoane vor trimite semnale analogice catre microcontroller, urmand ca acestea sa fie convertite in semnale digitale pentru a putea fii analizate si a se lua anumite actiuni pe baza valorile acestora. Buzzer-ul si cele doua led-uri (rosu si albastru) vor genera semnale auditive, respectiv vizuale la semnale date de catre microcontroller.

Schema Bloc

Hardware Design

Componente Utilizate

Componente

Update Componente
  1. Modulul de RFID (MFRC522) are tensiunea de operare de 3.3V. Pinii dedicati SPI-ului genereaza o tensiune de iesire in jurul a 5V. Solutie:
    • Convertor logic de tensiune (TXS0108E) pe 8 biti, bidirectional.
  1. Modulul de releu afecteaza alimentarea Arduino-ului, prin generarea unei caderi de tensiune pe placa, in momentul in care acesta este activat. Solutie:
    • Tranzistor NMOS + Dioda + Rezistenta
  1. Senzorul Optic CNY70 genereaza rezultate slabe in urma testarii acestuia. Solutie:
    • Modul Senzor Fotosensitiv

Descrierea si Rolul Componentelor

Scheme Electrice

Cele doua exemple prezentate mai jos, reprezinta modalitatile de reprezentare a prototipului realizat din capitolul “Prototip”, subcapitolul “Imagine prototip”.

Breadboard Diagram

Schematic Diagram

Prototip

Conectivitate

Toate conexiunile listate mai jos au formatul: PIN Modul - PIN Arduino. Singura exceptie o face modulul de RFID (RC522) care va lua ca pini de intrare valorile de pe pinii Arduino, dar convertite de la 5V la 3V3.

Toate legaturlile catre GND vor face referire catre acelasi GND de pe placa Arduino.

Imagine Prototip

Imaginea atasata reprezinta un prototip functional. De asemenea, pentru o mai buna intelegere a imaginii, toate componentele (mentionate in capitolul anterior “Componente Utilizate”) au fost evidentiate prin incercuirea lor.

prototip_hardware_explicat_saleem.jpg

Funcionalitate Prototip

In imaginea atasata este reprezentat procesul de deschidere a incuietoarei din perspectiva Master-ului. Acest proces decurge in felul urmator:

prototip_deschide_incuietoare_saleem.jpg

Software Design

Stadiu Actual

Implementarea proiectului, din punct de vedere software, este finalizat in proportie de 95%, urmand ca proiectul sa fie supus mai multor teste, pentru a putea testa posibilele vulnerabilitati sau greseli de implementare.

Mediu de dezvoltare

In cadrul procesului de dezvoltare a proiectului, am optat pentru utilizarea IDE-ului Arduino pentru a implementa functionalitatile propuse, asa cum sunt prezentate în capitolul initial. Alegerea acestui mediu se bazeaza pe disponibilitatea anumitor biblioteci esentiale, care imi permit sa dezvolt si sa finalizez configurarea software a proiectului.

Biblioteci

Bibliotecile folosite in cadrul dezvoltarii proiectului, sunt:

Mentionez ca folosirea bibliotecilor deja implementate s-a datorat lipsei insuficiente de timp. Acest fapt m-a determinat sa aleg solutii care sa permita o implementare rapida si eficienta, fara a compromite calitatea si functionalitatea proiectului.

Functionalitati Software

Proiectul dispune de mai multe functionalitati, inclusiv:

Citirea valorilor analogice se va face prin initializarea unui ADC (folosind registrii prezentati in cele 2 parti de cod prezentate mai jos):

  • Functia de ADC se va initializa folosind functia:
void ADC_init(void)
{
 
    //Set ADC reference voltage to AVCC
    ADMUX &= ~(1 << REFS1);
    ADMUX |= (1 << REFS0);
 
    //(Enable ADC
    ADCSRA |= (1 << ADEN);
 
    //Set ADC prescaler to 128
    ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
}
  • Butonul apasat se va depista folosind urmatoarea functie de ADC:
uint16_t ADC_analog_read(uint8_t channel)
{
    // Force input channel to be between 0 and 7 (as ADC pins are PA0-7)
    channel &= 0b00000111;
 
    // Clear the old channel value (if any, last 4 bits in ADMUX)
    ADMUX &= ~(1 << MUX0);
    ADMUX &= ~(1 << MUX1);
    ADMUX &= ~(1 << MUX2);
    ADMUX &= ~(1 << MUX3);
 
    // Select the new channel in ADMUX
    ADMUX |= channel;
 
    // Start single conversion
    ADCSRA |= (1 << ADSC);
 
    // Busy wait for conversion to complete
    while ((ADCSRA & (1 << ADSC)));
 
    // Return ADC value
    return (ADC);
}

In functie de valoarea citita, se va putea afla ce buton a fost apasat de catre utilizatorul master.

Dupa cum se poate observa, in functionalitatile proiectului au fost implementate concepte invatate in cadrul laboratorului de PM, printre acestea se numara: GPIO, PWM, ADC, SPI, I2C.

Scheletul proiectului, Interactiunea dintre functionalitati si Validare

Scheletul Proiectului

Scheletul proiectului este impartit in mai multe module distincte, fiecare avand rolul sau bine definit pentru a facilita gestionarea si interactiunea intre diferitele aspecte ale proiectului. Aceasta abordare modulara permite o mai mare organizare si structurare a codului, precum si o mai bună gestionare a complexitatii proiectului.
Fisierele existente in schelet sunt:

Interactiunea dintre functionalitati

  1. Setarea unui card “master”:
    • La inceputul programului, in momentul “setup-ului”, utilizatorul este rugat sa scaneze un card, care ulterior va deveni “master”.
    • Citirea card-ului se face prin aproprierea acestuia de modulul RFID.
    • Modulul RFID citeste datele card-ului, urmand sa inregistreze UID-ul acestuia in sistem.
  2. Citirea card-ului “master:
    • La apropierea cardului “master” de modulul RFID, sistemul detecteaza acest lucru prin folosirea codului unic UID, si ii va permite acestuia sa aleaga una din cele trei optiuni (“enter”, “add”, “remove”).
  3. Adaugare utilizator:
    • Pentru a adauga un utilizator nou, se procedeaza astfel: se scaneaza initial card-ul “master”, urmand sa selecteze optiunea “add”, iar in final, se va scana si cartela care se doreste sa primeasca acces.
  4. Revocare utilizator:
    • Procesul de revocare este asemanator cu cel de adaugare, cu exceptia selectarii optiunii “remove” de catre utilizatorul “master”.
  5. Deschidere solenoid:
    • Solenoid-ul se deschide in momentul in care un card autorizat este scanat cu ajutorul modulului RFID.
    • In cazul utilizatorului “master” va fii nevoie de un pas intermediu, ci anume selectare optiunii “enter”.
  6. Declansare alarma:
    • Alarma se declanseaza doar in momentul in care, senzorul fotorezistent detecteaza o sursa de lumina mai mare decat cea in care se afla initial, cand usa si incuietoarea sunt inchise.
    • Sistemul de alarma implica atat Led-uri (rosu si albastru) cat si un buzzer, pe langa senzorul fotorezistent.
    • Cand timp valoarea citita de senzor nu se schimba (detecteaza ca usa a fost inchisa), sistemul intra intr-o stare blocanta, in care doar alarma functioneaza.
  7. Afisarea mesajelor informative:
    • Pe tot parcursul interactiunii utilizatorul cu sistemul, ecranul ofera informatii cu privire la actiunea facuta de acesta.

Validare

Toate functionalitatile mentionate au fost si inca sunt in procesul de testare. Astfel, la finalizarea integrala a proiectului (inclusiv din punct de vedere a validarii corectitudinii), rezultatul va fii unul 100% functional, cu o rata de corectitudine peste 95%, avand o marja de 5% pentru posibile erori netratate.

Starea actuala a proiectului dovedeste un comportament corect si valid conform specificatiilor mentionate mai sus, insa, senzorul fotorezistiv trebuie recalibrat pentru a asigura buna functionare a sistemului, reducand posibilele erori din cod.

Calibrare Senzori

Rezultate Obţinute

  • In urma implementarii si asamblarii componentelor (din imaginea atasata in capitolul “Hardware Design”), am ajuns la un produs final care respecta toate functionalitatile promise initial.
  • De asemenea, am incercat sa ofer aspectul unui produs comercial prin folosirea diferitor obiecte, dupa cum se poate observa in imaginea atasata.

produs_final_saleem_331cd.jpg

Concluzii

Download

Arhiva cu codul sursa

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF