This shows you the differences between two versions of the page.
pm:prj2025:vradulescu:andrei.cojocaru0811 [2025/05/18 16:36] andrei.cojocaru0811 [Descriere generală] |
pm:prj2025:vradulescu:andrei.cojocaru0811 [2025/05/25 18:21] (current) andrei.cojocaru0811 [Descriere generală] |
||
---|---|---|---|
Line 53: | Line 53: | ||
\\ | \\ | ||
\\ | \\ | ||
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
- | \\ | + | |
===== Software Design ===== | ===== Software Design ===== | ||
+ | === Descrierea codului aplicației (firmware) === | ||
+ | Proiectul constă într-un sistem embedded realizat cu microcontrolerul ESP32 care monitorizează calitatea aerului folosind senzorul MQ135. Sistemul afișează datele în două moduri alternative pe un display OLED SPI 128x64: scor numeric cu interpretare și grafic în timp real. Modul de afișare poate fi schimbat prin apăsarea butonului BOOT. | ||
- | <note tip> | + | Valoarea calității aerului este transmisă și prin Bluetooth Low Energy (BLE) către un dispozitiv mobil conectat, iar starea este indicată și prin LED-uri RGB controlate prin PWM – generând un gradient de la roșu (aer poluat) la verde (aer curat). |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
- | ===== Rezultate Obţinute ===== | + | === Mediu de dezvoltare === |
+ | * PlatformIO în Visual Studio Code | ||
+ | * Framework: Arduino pentru ESP32 | ||
- | <note tip> | + | === Librării și surse 3rd-party === |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | * Adafruit GFX Library – pentru desenarea graficelor și textului |
- | </note> | + | * Adafruit SSD1306 – pentru controlul display-ului OLED SPI |
+ | * ESP32 BLE Arduino – pentru comunicația BLE | ||
- | ===== Concluzii ===== | + | === Algoritmi și structuri implementate === |
+ | * Buffer circular cu 128 de elemente pentru istoricul valorilor senzorului | ||
+ | * PWM pe două canale hardware pentru LED-urile roșu și verde | ||
+ | * Comutare între moduri de afișare cu butonul BOOT | ||
+ | * Mapare valori senzor pentru afișare pe axa Y și intensitate LED-uri | ||
+ | * Afișare grafică cu axe X (timp) și Y (valoare), inclusiv etichete la fiecare 5 secunde | ||
- | ===== Download ===== | + | === Etapa 3 – Surse și funcții implementate === |
+ | * Fișier principal: `main.cpp` | ||
+ | * Funcții principale: | ||
+ | * `setup()` – inițializează OLED, PWM, BLE și butonul | ||
+ | * `loop()` – citire senzor, actualizare LED, transmitere BLE, afișare | ||
+ | * `afiseazaScor()` – scor numeric și interpretare textuală | ||
+ | * `afiseazaGrafic()` – grafic în timp real cu axe și legendă | ||
+ | * LED-uri controlate cu `ledcSetup()` și `ledcWrite()` | ||
+ | * Axa X marcată din 5 în 5 secunde, iar axa Y cu praguri 0 / 2k / 4k | ||
+ | * BLE configurat pentru notificări folosind `ESP32 BLE Arduino` | ||
- | <note warning> | + | === Surse utilizate și resurse consultate === |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | * https://github.com/adafruit/Adafruit_SSD1306 |
+ | * https://github.com/adafruit/Adafruit-GFX-Library | ||
+ | * https://github.com/nkolban/ESP32_BLE_Arduino | ||
+ | * https://randomnerdtutorials.com/esp32-ble-server-arduino-ide/ | ||
+ | * https://randomnerdtutorials.com/esp32-oled-display-arduino-ssd1306/ | ||
+ | * https://docs.espressif.com/projects/esp-idf/en/latest/esp32/ | ||
+ | * Forumuri: Arduino, ESP32, StackOverflow | ||
- | 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**. | + | ===== Rezultate Obținute ===== |
- | </note> | + | * Afișare scor și grafic al calității aerului pe OLED SPI |
+ | * Comutare mod afișare cu buton BOOT | ||
+ | * LED-uri cu gradient de la roșu (poluat) la verde (curat) | ||
+ | * Afișare grafică clară cu axe și etichete temporale | ||
+ | * Notificări BLE în timp real către telefon | ||
+ | * Sistem autonom, stabil, și estetic | ||
- | ===== Jurnal ===== | + | ===== Concluzii ===== |
- | <note tip> | + | Proiectul a demonstrat integrarea cu succes a unui senzor analog cu componente digitale și comunicație BLE, folosind ESP32. Codul este modular și extensibil, fiind o bază solidă pentru aplicații de monitorizare ambientală. A reprezentat o experiență practică valoroasă în dezvoltarea embedded, cu accent pe afișare grafică, interacțiune utilizator și comunicare wireless. |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |