Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:ccristi:robert_alex.enciu [2025/05/25 11:57]
robert_alex.enciu [Jurnal]
pm:prj2025:ccristi:robert_alex.enciu [2025/05/26 15:26] (current)
robert_alex.enciu [Bibliografie/Resurse]
Line 1: Line 1:
 ====== SecureBox ====== ====== SecureBox ======
 ===== Introducere ===== ===== Introducere =====
-Acest proiect constă în realizarea unui seif electronic inteligent care permite accesul doar utilizatorilor ​autorizați ​prin intermediul unui card RFID. Proiectul ​este realizat cu ajutorul unui microcontroler Arduino, ​unui cititor ​RFID RC522, ​și a unui mecanism de închidere controlat electronic. Sistemul poate fi extins cu funcționalități suplimentare precum afișaj ​LCD.+Proiectul "​SecureBox"​ consta in realizarea unui seif electronic inteligentcare permite accesul doar utilizatorilor ​autorizati ​prin intermediul unui card RFID. Sistemul ​este controlat de un microcontroler Arduino ​Nanocare gestioneaza un modul RFID RC522 pentru identificareun mecanism de inchidere electronica (yala) activat printr-un releu, si un afisaj ​LCD I2C pentru feedback vizual
 ===== Descriere generală ===== ===== Descriere generală =====
  
Line 45: Line 45:
 Alt buton permite dezactivarea yalei manual. Alt buton permite dezactivarea yalei manual.
 ===== Software Design ===== ===== Software Design =====
 +<​note>​
 +Biblioteci utilizate: <​Wire.h>,​ <​LiquidCrystal_I2C.h>,​ <​SPI.h>,​ <​MFRC522.h>​
  
- +Github[[https://​github.com/​robertenciu/​SecureBox|github.com/​robertenciu/​SecureBox]]
-<note tip> +
-Descrierea codului aplicaţiei (firmware): +
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate+
 </​note>​ </​note>​
  
-===== Rezultate Obţinute ​=====+ ======1. Setup() ​====== 
 +Această funcție este apelată o singură dată la pornirea microcontrolerului. În cadrul ei:
  
-<note tip> +Se inițializează comunicațiile Serial, SPI și RFID.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+Se configurează pinul pentru releu ca ieșire și este setat HIGH (yală închisă).
  
-===== Download =====+Se configurează butonul de mod ca intrare cu rezistență de pull-up.
  
-<note warning>​ +Se pornește LCD-ul și se afișează starea curentă (Secure Box, Mod: ...).
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etcUn fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele ​se încarcă pe wiki folosind facilitatea **Add Images or other files**Namespace-ul în care se încarcă fişierele ​este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**.+Se inițializează vectorul care conține UID-urile autorizate (storedUIDs) cu valoarea 0xFF (memorie "​goală"​). 
 + 
 +====== ​ 2. loop() ====== 
 + 
 +Această funcție rulează continuu și: 
 + 
 +Detectează apăsarea butonului de mod și comută între cele 3 moduri: 
 + 
 +Mod 0: CITIRE 
 + 
 +Mod 1: SCRIERE 
 + 
 +Mod 2: ȘTERGERE 
 + 
 +Evită afișarea repetitivă pe LCD dacă modurile nu se schimbă
 + 
 +Detectează o nouă cartelă RFID și validează dacă are un UID de lungime corectă. 
 + 
 +Afișează UID-ul detectat ​pe LCD. 
 + 
 +În funcție de modul activ: 
 + 
 + ​CITIRE:​ Verifică dacă UID-ul este autorizat și deschide temporar yala dacă da. 
 + 
 + ​SCRIERE:​ Adaugă UID-ul în listă dacă nu este deja salvat și dacă mai este spațiu. 
 + 
 + ​ȘTERGEREElimină UID-ul dacă există în listă. 
 + 
 +După fiecare operație, se actualizează LCD-ul și se reafișează starea principală (Secure Box, Mod...). 
 + 
 +====== 3. initUIDs() ====== 
 + 
 +Inițializează toți vectorii de UID din memorie cu valoarea 0xFF, semnalând ​că sloturile sunt goale. De asemenea, resetează contorul UID-urilor salvate. 
 + 
 +====== 4. findEmptySlot() ====== 
 + 
 +Caută un slot liber în vectorul storedUIDs și returnează indexul unde poate fi salvat un nou UID. Dacă toate sloturile sunt ocupate, returnează MAX_UIDS. 
 + 
 +====== 5. compareUIDs(byteuid1, byteuid2) ====== 
 + 
 +Compară două UID-uri (de tip vector de byte) și returnează true dacă sunt identice, altfel false. 
 + 
 +====== 6. isUIDAuthorized(byteuid) ====== 
 + 
 +Verifică dacă un UID scanat există deja în lista UID-urilor salvate (adică este autorizat). 
 + 
 +====== 7. saveUID(byteuid) ====== 
 + 
 +Salvează un nou UID în vectorul storedUIDs la primul slot liber și crește contorul savedUIDCount. 
 + 
 +====== 8. deleteUID(byte* uid) ====== 
 + 
 +Caută și elimină un UID existent din lista de autorizări,​ adică setează slotul său din vector înapoi la 0xFF și decrementează savedUIDCount. 
 + 
 +====== 9. afiseazaModPeLCD() ====== 
 + 
 +Actualizează LCD-ul pentru a reflecta modul curent de funcționareCITIRE, SCRIERE sau STERGERE, împreună cu titlul Secure Box. 
 + 
 +====== Concepte folosite====== 
 + 
 +<note important>​====== ​**SPI (Serial Peripheral Interface)** ====== 
 + 
 +Este folosit pentru comunicarea cu cititorul RFID MFRC522. Comunicarea SPI este inițiată cu SPI.begin(și folosită intern de biblioteca MFRC522 pentru a transmite comenzi și a primi date de la tagurile RFID. 
 + 
 +====== ​**I2C (Inter-Integrated Circuit)** ====== 
 + 
 +Este utilizat pentru a controla afișajul LCD cu modul I2C. Acesta comunică prin pini SDA și SCL pentru a trimite text și comenzi către ecranul LCD. Biblioteca LiquidCrystal_I2C gestionează aceste comunicări. 
 + 
 +====== **UART (Universal Asynchronous Receiver/​Transmitter)** ====== 
 + 
 + ​Comunicarea serială prin Serial.begin(9600);​ este un exemplu de utilizare UARTunde microcontrolerul trimite datele la un terminal sau la un alt dispozitiv pentru debug sau afișare. 
 + 
 +====== ​** GPIO (General Purpose Input/​Output)** ====== 
 + 
 +Este folosit pentru interacțiunea cu butonul de schimbare mod și controlul releului conectat la yală. 
 +  * Pin A0 (RELAY_PIN) – Configurat ca ieșire pentru a activa/​dezactiva yala. 
 +  * Pin D2 (BUTTON_MODE_PIN) – Configurat ca intrare cu pull-up pentru a detecta apăsarea butonului.
 </​note>​ </​note>​
 +
 +===== Rezultate Obţinute =====
 +
 +[[https://​youtube.com/​shorts/​1zdsOxPraxA?​feature=share|Video testare]]
 +
  
 ===== Jurnal ===== ===== Jurnal =====
Line 96: Line 171:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Github – MFRC522 Library: [[https://​github.com/​miguelbalboa/​rfid]] 
 + 
 +Github – LiquidCrystal_I2C Library: [[https://​github.com/​johnrickman/​LiquidCrystal_I2C]] 
 + 
 +Arduino Forum: [[https://​forum.arduino.cc]] 
 + 
 +How to Use an RFID Module with Arduino for Beginners: [[https://​www.youtube.com/​watch?​v=lg8HRY8q004]] 
 + 
 +I2C-LCD Tutorial: [[https://​lastminuteengineers.com/​i2c-lcd-arduino-tutorial]]
 </​note>​ </​note>​
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/ccristi/robert_alex.enciu.1748163425.txt.gz · Last modified: 2025/05/25 11:57 by robert_alex.enciu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0