Differences

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

Link to this comparison view

pm:prj2025:iotelea:raluca.guceanu [2025/05/26 21:23]
raluca.guceanu [Resurse software]
pm:prj2025:iotelea:raluca.guceanu [2025/05/30 03:20] (current)
raluca.guceanu [Concluzii]
Line 1: Line 1:
 ====== Sistem de acces multi-nivel pentru șoferi ====== ====== Sistem de acces multi-nivel pentru șoferi ======
 +
 +Autor: **Raluca-Zinca-Ioana Guceanu** \\
 +Grupa: **331CD** \\
 +GitHub: https://​github.com/​ralucaguceanu/​Sistem-de-acces-multi-nivel-pentru-soferi
 +
 ===== Introducere ===== ===== Introducere =====
  
Line 42: Line 47:
  
   * **Card MicroSD (SPI)**   * **Card MicroSD (SPI)**
-    * Conține fișierul ​`password.txt` ​cu hash-ul parolei corecte+    * Conține fișierul cu hash-ul parolei corecte
  
 ---- ----
Line 70: Line 75:
 ==== Listă de piese ==== ==== Listă de piese ====
  
-  * **Arduino UNO** – unitate de control +  * **Arduino UNO** unitate de control 
-  * **Ecran LCD (16x02, I2C)** ​– afișaj statusuri și mesaje +  * **Ecran LCD (16x02, I2C)** ​afișaj statusuri și mesaje 
-  * **Tastatură cu 4 taste** ​– introducere parolă și navigare pe ecran +  * **Tastatură cu 4 taste** ​introducere parolă și navigare pe ecran 
-  * **Card microSD + modul microSD (SPI)** ​– stocare date (hash-ul parolei) +  * **Card microSD + modul microSD (SPI)** ​stocare date (hash-ul parolei) 
-  * **Senzor alcool MQ-3** ​– măsurare alcoolemie +  * **Senzor alcool MQ-3** ​măsurare alcoolemie 
-  * **Buzzer (PWM)** ​– semnal sonor pentru feedback asupra parolei introduse +  * **Buzzer (PWM)** ​semnal sonor pentru feedback asupra parolei introduse 
-  * **LED roșu + LED verde** ​– semnal vizual acces refuzat/​permis +  * **LED roșu + LED verde** ​semnal vizual acces refuzat/​permis 
-  * **Rezistențe 220Ω** ​– pentru protecție LED-uri și buzzer +  * **Rezistențe 220Ω** ​pentru protecție LED-uri și buzzer 
-  * **Breadboard + fire** ​– pentru conexiuni rapide+  * **Breadboard + fire** ​pentru conexiuni rapide
 ==== Schemă electrică ==== ==== Schemă electrică ====
 {{:​pm:​prj2025:​iotelea:​schema_electrica_r_guceanupng.png?​600|}} {{:​pm:​prj2025:​iotelea:​schema_electrica_r_guceanupng.png?​600|}}
Line 96: Line 101:
 | SPI.h                 | Comunicare SPI între Arduino și cardul microSD | | SPI.h                 | Comunicare SPI între Arduino și cardul microSD |
 | SD.h                  | Citire/​scriere fișiere pe card microSD | | SD.h                  | Citire/​scriere fișiere pe card microSD |
- +| SHA256.h ​             | Hash-uirea parolei pentru securitate sporită ​ |
 ==== Arhitectura software ==== ==== Arhitectura software ====
   - Inițializare componente:   - Inițializare componente:
Line 105: Line 109:
     - Fiecare tastă apărută ca `*` pe LCD     - Fiecare tastă apărută ca `*` pe LCD
     - Generare hash simplificat     - Generare hash simplificat
-  - Validare: +  - Validare ​parolă
-    - Citirea fișierului ​`password.txt` ​de pe card SD+    - Citirea fișierului ​ce conține hash-ul pentru parola corectă ​de pe card SD
     - Comparare hash-uri     - Comparare hash-uri
-    - Acces respins sau test alcool 
   - Test alcool MQ-3:   - Test alcool MQ-3:
     - Afișare mesaj „Ready? Start!” și countdown 5 → 1     - Afișare mesaj „Ready? Start!” și countdown 5 → 1
Line 117: Line 120:
 ==== Funcții implementate ==== ==== Funcții implementate ====
 ^ Funcție ^ Scop ^ ^ Funcție ^ Scop ^
-simpleHash(String)     | Generează un hash simplificat ​din parolă ​|+sha256Hex(const char *msg, char *hexOut)     | Generează un hash din parola ​|
 | addChar(char) ​         | Adaugă o cifră în șirul parolei și o afișează cu `*` | | addChar(char) ​         | Adaugă o cifră în șirul parolei și o afișează cu `*` |
 | resetPasswordInput() ​  | Resetează parola și reafișează „Enter Password” | | resetPasswordInput() ​  | Resetează parola și reafișează „Enter Password” |
Line 127: Line 130:
   * **Parolă presetată**:​ 1324   * **Parolă presetată**:​ 1324
   * **Număr maxim caractere**:​ 4   * **Număr maxim caractere**:​ 4
-  * **Prag senzor MQ-3**: ​475 (se stabilește ​prin testare)+  * **Prag senzor MQ-3**: ​325 (stabilit ​prin testare)
  
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-===== Funcționalitate sistem ​=====+==== Funcționalitate sistem ====
 În urma implementării și testării, sistemul este complet funcțional și reușește să îndeplinească toate cerințele propuse: În urma implementării și testării, sistemul este complet funcțional și reușește să îndeplinească toate cerințele propuse:
  
   * Introducerea parolei de către utilizator prin tastatură fizică   * Introducerea parolei de către utilizator prin tastatură fizică
   * Afișarea feedback-ului vizual pe ecranul LCD (parolă, status, mesaje pentru ghidare)   * Afișarea feedback-ului vizual pe ecranul LCD (parolă, status, mesaje pentru ghidare)
-  * Salvarea și citirea unui hash de parolă ​din fișierul ​`password.txt` ​de pe cardul microSD+  * Salvarea și citirea unui hash al parolei corecte ​din fișierul de pe cardul microSD
   * Compararea corectă a parolei introduse cu hash-ul stocat   * Compararea corectă a parolei introduse cu hash-ul stocat
   * Emiterea de semnale sonore prin buzzer, în funcție de validare (parolă corectă/​greșită)   * Emiterea de semnale sonore prin buzzer, în funcție de validare (parolă corectă/​greșită)
Line 148: Line 151:
   * Am realizat mai multe suflări de test înainte și după expunerea la vapori de alcool   * Am realizat mai multe suflări de test înainte și după expunerea la vapori de alcool
   * Valorile obținute:   * Valorile obținute:
-    * < 475 → interpretat ca **''​test passed''​** +    * < 325 → interpretat ca **''​test passed''​** 
-    * ≥ 475 → interpretat ca **''​test failed''​**+    * ≥ 325 → interpretat ca **''​test failed''​**
  
 ==== Fiabilitate și comportament în timp ==== ==== Fiabilitate și comportament în timp ====
   * Sistemul este stabil, nu s-au observat blocaje sau comportamente neprevăzute în timpul utilizării normale   * Sistemul este stabil, nu s-au observat blocaje sau comportamente neprevăzute în timpul utilizării normale
   * LCD-ul și componentele răspund corect la comenzi   * LCD-ul și componentele răspund corect la comenzi
-  * Fișierul ​`password.txt` ​este creat automat dacă lipsește+  * Fișierul ​cu hash-ul parolei ​este creat automat dacă lipsește
   * Poate fi extins cu ușurință (ex: adăugarea de useri și a unui modul RFID, salvarea rezultatelor într-un log)   * Poate fi extins cu ușurință (ex: adăugarea de useri și a unui modul RFID, salvarea rezultatelor într-un log)
  
Line 175: Line 178:
  
 Sistemul s-a dovedit funcțional,​ stabil și extensibil. În plus, poate fi aplicat în contexte reale, precum: Sistemul s-a dovedit funcțional,​ stabil și extensibil. În plus, poate fi aplicat în contexte reale, precum:
-  * flote de închiriere auto+  * flote de închiriere auto sau orice sistem ​de car-sharing ​securizat 
-  * sisteme ​de car-sharing ​securizate, +  * prevenirea, în general, a utilizării vehiculelor sub influența alcoolului.
-  * prevenirea utilizării vehiculelor sub influența alcoolului.+
  
 Consider că obiectivele propuse au fost atinse integral, iar experiența acumulată va fi utilă în proiecte viitoare ce implică atenție la detalii, securitate și integrarea mai multor componente într-un sistem. Consider că obiectivele propuse au fost atinse integral, iar experiența acumulată va fi utilă în proiecte viitoare ce implică atenție la detalii, securitate și integrarea mai multor componente într-un sistem.
  
-===== Download ​===== +===== Cod sursă ​===== 
- +[[https://github.com/​ralucaguceanu/​Sistem-de-acces-multi-nivel-pentru-soferi | GitHub Repository]]
-<note warning>​ +
-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 Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +
-</​note>​+
  
  
Line 200: Line 197:
   * [[https://​www.handsontec.com/​dataspecs/​module/​I2C_1602_LCD.pdf | Datasheet Ecran LCD]]   * [[https://​www.handsontec.com/​dataspecs/​module/​I2C_1602_LCD.pdf | Datasheet Ecran LCD]]
   * [[https://​components101.com/​modules/​micro-sd-card-module-pinout-features-datasheet-alternatives | Datasheet Modul SD]]   * [[https://​components101.com/​modules/​micro-sd-card-module-pinout-features-datasheet-alternatives | Datasheet Modul SD]]
 +  * [[https://​youtu.be/​BiOh_Z2N7kk?​si=Eql0kOE4Smfd4rU_ | Conectare tastatură]]
  
 ==== Resurse software și hardware ==== ==== Resurse software și hardware ====
   * [[https://​lastminuteengineers.com/​mq3-alcohol-sensor-arduino-tutorial/​ | Manual de referință pentru senzorul MQ-3]]   * [[https://​lastminuteengineers.com/​mq3-alcohol-sensor-arduino-tutorial/​ | Manual de referință pentru senzorul MQ-3]]
pm/prj2025/iotelea/raluca.guceanu.1748283799.txt.gz · Last modified: 2025/05/26 21:23 by raluca.guceanu
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