This shows you the differences between two versions of the page.
pm:prj2024:mdinica:bianca.dumitru0711 [2024/05/23 15:50] bianca.dumitru0711 [Introducere] |
pm:prj2024:mdinica:bianca.dumitru0711 [2024/05/27 14:18] (current) bianca.dumitru0711 [Software Design] |
||
---|---|---|---|
Line 6: | Line 6: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul își propune verificarea și monitorizarea participanților unei săli de sport. Acesta are două funcționalități principale: verificarea validității abonamentului personal și contorizarea numarului de prezențe la sală. | + | Proiectul își propune **verificarea și monitorizarea participanților unei săli de sport**. Acesta are două funcționalități principale: verificarea validității abonamentului personal și contorizarea numarului de prezențe la sală. |
- | Identificarea userilor se face pe baza unui card personal, iar sistemul comunică direct cu utilizatorul prin diverse mijloace (audio, vizual) în funcție de validitatea abonamentului. Există și posibilitatea înregistrării unui user nou, atunci când el își scanează pentru prima dată cardul. | + | Identificarea userilor se face pe baza unui **card personal**, iar sistemul comunică direct cu utilizatorul prin diverse mijloace (audio, vizual) în funcție de validitatea abonamentului. Există și posibilitatea **înregistrării** unui user nou, atunci când el își scanează pentru prima dată cardul. |
La fiecare scanare a cardului unui utilizator cu abonament valid, acestuia i se adaugă câte o prezență. Numărul de prezențe al fiecărui user poate fi vizualizat în timp real în cadrul unui site web. | La fiecare scanare a cardului unui utilizator cu abonament valid, acestuia i se adaugă câte o prezență. Numărul de prezențe al fiecărui user poate fi vizualizat în timp real în cadrul unui site web. | ||
Line 22: | Line 22: | ||
Proiectul este controlat de către un modul ESP32 ce suportă comunicație prin Wi-Fi. Userul interacționează cu sistemul prin intermediul cardului de acces, ce este citit de către un modul RFID. Datele cardului sunt transmise ESP-ului, care, folosindu-se de modulul Wi-Fi, comunică cu un server web pentru a determina validitatea abonamentului userului. În funcție de răspunsul primit, modulul ESP acționează un buzzer, un led RGB și un display LCD pentru a-i transmite outputul userului. | Proiectul este controlat de către un modul ESP32 ce suportă comunicație prin Wi-Fi. Userul interacționează cu sistemul prin intermediul cardului de acces, ce este citit de către un modul RFID. Datele cardului sunt transmise ESP-ului, care, folosindu-se de modulul Wi-Fi, comunică cu un server web pentru a determina validitatea abonamentului userului. În funcție de răspunsul primit, modulul ESP acționează un buzzer, un led RGB și un display LCD pentru a-i transmite outputul userului. | ||
- | Schema bloc a proiectului: | + | **Schema bloc a proiectului**: |
{{:pm:prj2024:mdinica:bianca.dumitru0711.schema_logica.png?700|}} | {{:pm:prj2024:mdinica:bianca.dumitru0711.schema_logica.png?700|}} | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Lista de componente: | + | **Lista de componente**: |
* ESP32 WROOM cu 38 de pini, modul Bluetooth și Wi-Fi | * ESP32 WROOM cu 38 de pini, modul Bluetooth și Wi-Fi | ||
* Led RGB | * Led RGB | ||
Line 34: | Line 34: | ||
* Carduri de acces | * Carduri de acces | ||
* Buzzer | * Buzzer | ||
+ | * Half-Breadboard | ||
* Fire | * Fire | ||
* Sursă de alimentare (baterie externă) | * Sursă de alimentare (baterie externă) | ||
- | Schema electrică: | + | **Schema electrică**: |
{{:pm:prj2024:mdinica:bianca.dumitru0711.schema-electrica-nou.png?700|}} | {{:pm:prj2024:mdinica:bianca.dumitru0711.schema-electrica-nou.png?700|}} | ||
- | Asamblarea componentelor: | + | **Asamblarea componentelor**: |
{{:pm:prj2024:mdinica:bianca.dumitru0711.poza_hard.jpeg?600|}} | {{:pm:prj2024:mdinica:bianca.dumitru0711.poza_hard.jpeg?600|}} | ||
Line 56: | Line 57: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | Mediu de dezvoltare: Arduino IDE | + | **Stadiul actual al implementării software**: În momentul de față, proiectul este finalizat și complet funcțional, înglobând toate funcționalitățile pe care mi-am propus de la început să le aibă. |
- | Biblioteci utilizate: WiFi.h, HTTPClient.h, ArduinoJson.h (pentru comunicarea cu serverul web), LiquidCrystal_I2C.h (pentru LCD-ul cu modul I2C), MFRC522.h (pentru cititorul de carduri RFID) | + | **Repo GitHub**: https://github.com/dumitrustefania/Gym-Attendance-System |
- | Repo GitHub: https://github.com/dumitrustefania/Gym-Attendance-System | + | **Mediu de dezvoltare**: Arduino IDE |
- | Software design: | + | **Biblioteci utilizate**: WiFi.h, HTTPClient.h, ArduinoJson.h (pentru comunicarea cu serverul web), LiquidCrystal_I2C.h (pentru LCD-ul cu modul I2C), MFRC522.h (pentru cititorul de carduri RFID) |
- | Codul este organizat în mai multe fișiere, fiind împărțit între fișierele header cu funcții helper pentru inițializare și setare de stări (http.h, lcd.h, rgb.h, buzzer.h, rfid.h) și fișierul main, ce conține logica principală a programului. | + | **Motivarea alegerii bibliotecilor folosite în cadrul proiectului**: Bibliotecile aduc simplitate și mai multă siguranță în cadrul proiectului, facilitând integrarea elementelor hardware cu cele software. |
+ | |||
+ | **Elementul de noutate al proiectului**: Elementul de noutate pe care l-am introdus, comparănd sistemul cu cele pe care le-am întălnit în cadrul sălilor de fitness, este afișajul numelui și al contorului de prezențe odată cu scanarea cardului. | ||
+ | |||
+ | **Utilizarea funcționalităților din laborator**: | ||
+ | * Laboratorul 0: GPIO - Configurarea și utilizarea pinilor GPIO pentru LED-ul RGB și buzzer | ||
+ | * Laboratorul 1: UART - Comunicarea serială pentru debug | ||
+ | * Laboratorul 3: Timere. PWM - Utilizarea PWM pentru controlul buzzer-ului | ||
+ | * Laboratorul 5: SPI - Comunicarea cu cititorul RFID si modului WiFi | ||
+ | * Laboratorul 6: I2C - Comunicarea cu ecranul LCD | ||
+ | |||
+ | **Calibrarea elementelor de senzoristică**: Elementele de senzoristică au fost calibrate pentru a garanta o funcționare corectă și precisă a fiecărei componente. În cadrul fișierelor header prezente în arhivă se pot observa metodele de calibrare utilizate pentru RFID, LCD, buzzer și LED, prin inițializarea corectă și prin setarea stării acestora în funcție de outputul propus. | ||
+ | |||
+ | **Optimizari**: | ||
+ | * folosirea protocolului stateless HTTP in loc de o conexiune continua cu serverul | ||
+ | * oprierea functiei Bluetooth a modulului ESP pentru a economisi energie | ||
+ | * revenirea la starea initiala a LED-ului si LCD-ului doar dupa modificarea acestora datorata de citirea unui card, nu la fiecare rulare a functiei loop | ||
+ | **Software design**: | ||
+ | |||
+ | Codul este organizat în mai multe fișiere, fiind împărțit între **fișierele header** cu funcții helper pentru inițializare și setare de stări (http.h, lcd.h, rgb.h, buzzer.h, rfid.h) și fișierul **main**, ce conține logica principală a programului. | ||
Funcția de setup se ocupă cu inițializarea componentelor și realizarea conexiunii Wi-Fi: | Funcția de setup se ocupă cu inițializarea componentelor și realizarea conexiunii Wi-Fi: | ||
Line 71: | Line 91: | ||
void setup() { | void setup() { | ||
Serial.begin(9600); | Serial.begin(9600); | ||
+ | |||
+ | // Dezactivează complet stiva Bluetooth pentru a economisi energie | ||
+ | btStop(); | ||
+ | esp_bt_controller_disable(); | ||
+ | esp_bt_controller_deinit(); | ||
+ | | ||
connectToWiFi(); | connectToWiFi(); | ||
initializeRFID(rfid); | initializeRFID(rfid); | ||
Line 214: | Line 240: | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | Demo: | + | Demo-ul exemplifică funcționalitatea proiectului prin scanarea unui card înregistrat cu abonament valid, a unui card înregistrat cu abonament invalid și prin înregistrarea unui card nou: |
<html><iframe width="700" height="400" src="https://www.youtube.com/embed/WW0er__Tu5o?si=zjbmJfucLypmDqBp" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></html> | <html><iframe width="700" height="400" src="https://www.youtube.com/embed/WW0er__Tu5o?si=zjbmJfucLypmDqBp" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></html> | ||
Line 220: | Line 246: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Realizarea proiectului a fost un proces interesant, fiind prima data cand am avut ocazia sa implementez un produs fizic, care include si hardware, nu doar software. Sunt multumita de ceea ce am realizat, si consider ca sistemul este unul complet, care ofera aceleasi capabilitati ca unul real, dintr-o sala de fitness. Singurul lucru la care consider ca ar mai trebui lucrat este aspectul, intrucat "carcasa" este improvizata de mine si nu se preteaza unui produs real. | ||
===== Download ===== | ===== Download ===== | ||
- | Arhiva ce contine codul: {{:pm:prj2024:mdinica:main.zip|}} | + | Arhiva ce contine codul: {{:pm:prj2024:mdinica:gym-attendance-system-main.zip|}} |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 232: | Line 259: | ||
* 16-17 mai - realizare carcasă și asamblarea componentelor în aceasta | * 16-17 mai - realizare carcasă și asamblarea componentelor în aceasta | ||
* 22 mai - filmare demo | * 22 mai - filmare demo | ||
+ | * 24 mai - finalizare documentație | ||