Differences

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

Link to this comparison view

pm:prj2025:atoader:elisa.diaconita [2025/05/28 01:53]
elisa.diaconita [Software Design]
pm:prj2025:atoader:elisa.diaconita [2025/05/28 02:15] (current)
elisa.diaconita [Bibliografie/Resurse]
Line 53: Line 53:
 ===== Software Design ===== ===== Software Design =====
  
-**Mediu de dezvoltare:** - Proiectul a fost dezvoltat în **Arduino IDE**, un mediu open-source popular pentru programarea plăcilor Arduino. +== Mediu de dezvoltare ​== 
-Librării utilizate (3rd-party):​+  ​* Arduino IDE 
  
-Wire.h – pentru comunicarea I2C între Arduino și LCD +== Biblioteci folosite == 
-LiquidCrystal_I2C.h – pentru controlul afișajului LCD 16x2 cu interfață I2C +  * Wire.h – pentru comunicarea I2C între Arduino și LCD 
-MFRC522.h – pentru interacțiunea cu modulul RFID RC522 +  ​* ​LiquidCrystal_I2C.h – pentru controlul afișajului LCD 16x2 cu interfață I2C 
-Servo.h – pentru controlul servomotorului +  ​* ​MFRC522.h – pentru interacțiunea cu modulul RFID RC522 
-Keypad.h – pentru gestionarea tastaturii ​matriciale ​4x4 +  ​* ​Servo.h – pentru controlul servomotorului 
-Algoritmi și structuri implementate:​+  ​* ​Keypad.h – pentru gestionarea tastaturii 4x4
  
-Verificare UID RFID: cardurile sunt identificate pe baza unui cod unic (UID), care este comparat cu un UID predefinit. +== Flow-ul programului == 
-Introducere parolă: utilizatorul poate introduce un cod PIN de la tastatură. Caracterele introduse sunt mascate pe ecranul LCD. +  * Verificare UID RFID: cardurile sunt identificate pe baza unui cod unic (UID), care este comparat cu un UID predefinit. 
-Verificare și autentificare:​ dacă UID-ul sau parola este corectă, accesul este permis, iar servomotorul deschide ușa. +  ​* ​Introducere parolă: utilizatorul poate introduce un cod PIN de la tastatură. Caracterele introduse sunt mascate pe ecranul LCD. 
-Afișare mesaje LCD: sistemul oferă feedback vizual pe LCD (e.g. „Access Granted”, „Incorrect Pass”, „Scan Card or Enter Password”). +  ​* ​Verificare și autentificare:​ dacă UID-ul sau parola este corectă, accesul este permis, iar servomotorul deschide ușa. 
-===== Rezultate Obţinute =====+  ​* ​Afișare mesaje LCD: sistemul oferă feedback vizual pe LCD (e.g. „Access Granted”, „Incorrect Pass”, „Scan Card or Enter Password”).
  
-<note tip> +setup() 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +Inițializare componente hardware și comunicații 
-</note>+Configurare LCD pentru afișaj 
 +Setare poziție servo inițială (ușă închisă) 
 +<code> 
 +void setup() { 
 +  Serial.begin(9600);​ 
 +  SPI.begin();​ 
 +  rfid.PCD_Init();​
  
-===== Concluzii =====+  doorServo.attach(9); ​     
 +  doorServo.write(0); ​   ​
  
-===== Download =====+  lcd.begin(16,​ 2); 
 +  lcd.backlight();​ 
 +  lcd.setCursor(0,​ 0); 
 +  lcd.print("​Door Lock System"​);​
  
-<note warning> +  delay(2000); ​             ​ 
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+  ​lcd.clear()
 +  lcd.print("​Scan Card or"); 
 +  lcd.setCursor(0,​ 1)
 +  lcd.print("​Enter Password"​);​ 
 +
 +</​code>​
  
-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**+loop() 
-</​note>​+Citire date de la RFID 
 +Verificare UID 
 +Citire taste de la keypad și verificare parolă 
 +<​code>​ 
 +void loop() { 
 +  if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { 
 +    String uid = "";​ 
 +    for (byte i = 0; i < rfid.uid.size;​ i++) { 
 +      uid += String(rfid.uid.uidByte[i]HEX); 
 +    } 
 +    uid.toUpperCase();​ 
 +    ​Serial.print("​Card UID: "); 
 +    Serial.println(uid);​
  
-===== Jurnal =====+    if (uid == correctUID) { 
 +      openDoor();​ 
 +    } else { 
 +      lcd.clear();​ 
 +      lcd.print("​Access Denied!"​);​ 
 +      delay(2000);​ 
 +      lcd.clear();​ 
 +      lcd.print("​Scan Card or"​);​ 
 +      lcd.setCursor(0,​ 1); 
 +      lcd.print("​Enter Password"​);​ 
 +    } 
 +    rfid.PICC_HaltA();​ 
 +  } 
 +</​code>​
  
 +Funcția openDoor()
 +Deschide ușa dacă accesul este permis
 +După 2 secunde închide ușa
 +Reafișează ecranul de start
 +<​code>​
 +void openDoor() {
 +  lcd.clear();​
 +  lcd.print("​Access Granted!"​);​
 +  doorServo.write(90); ​    
 +  delay(2000); ​         ​
 +  doorServo.write(0); ​        
 +  lcd.clear();​
 +  lcd.print("​Door Locked"​);​
 +  delay(1000);​
 +  lcd.clear();​
 +  lcd.print("​Scan Card or");
 +  lcd.setCursor(0,​ 1);
 +  lcd.print("​Enter Password"​);​
 +}
 + 
 +</​code>​
 +===== Rezultate obținute =====
  
-Puteți avea și o secțiune de jurnal ​în care să poată urmări asistentul ​de proiect progresul proiectului.+<note tip> 
 +  * Sistemul permite autentificarea atât prin card RFID, cât și prin cod PIN introdus de la tastatură. 
 +  * LCD-ul 16x2 cu interfață I2C afișează corect mesajele ​de status pentru utilizator (ex: „Access Granted”, „Incorrect Password” etc.). 
 +  * Servomotorul reacționează rapid la autentificarea validă, simulând deschiderea unei uși. 
 +  * Sistemul revine automat ​în starea inițială după fiecare acces. 
 +  * Timpul de răspuns este mic (sub 1 secundă) pentru ambele metode de autentificare. 
 +  * Sistemul este funcțional și poate fi folosit ca prototip pentru aplicații ​de control acces reale.
 </​note>​ </​note>​
 +===== Concluzii =====
  
-===== Bibliografie/​Resurse ​=====+Mi-a placut acest proiect pentru că a fost pentru prima dată când am avut ocazia să implementez un proiect în Arduino. Pe parcursul dezvoltării proiectului:​ 
 +  * am folosit protocoale de comunicație precum SPI (pentru RFID) și I2C (pentru LCD), 
 +  * am folosit tehnici de citire și validare a datelor de intrare (UID RFID, cod tastatură),​ 
 +  * am exersat generarea semnalelor PWM pentru controlul servomotorului. 
 +===== Download ​===== 
 + 
 +Arhiva contine: 
 +Codul sursă, schema electrică, imaginea proiectului 
 +{{:​pm:​prj2025:​atoader:​proiect_pm_elisa.zip|}}
  
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
pm/prj2025/atoader/elisa.diaconita.1748386383.txt.gz · Last modified: 2025/05/28 01:53 by elisa.diaconita
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