This shows you the differences between two versions of the page.
iothings:proiecte:2025sric:kart_telemetry [2025/05/29 15:36] alexandru.maxim2801 |
iothings:proiecte:2025sric:kart_telemetry [2025/05/29 18:30] (current) alexandru.maxim2801 |
||
---|---|---|---|
Line 7: | Line 7: | ||
Master: SRIC | Master: SRIC | ||
+ | ====== Kart Telemetry Dashboard ====== | ||
- | 1. Introducere | + | ===== 1. Introducere ===== |
+ | Scopul acestui proiect a fost realizarea unui sistem de monitorizare în timp real a parametrilor dinamici ai unui kart. | ||
+ | Proiectul se bazează pe colectarea datelor prin senzori, transmiterea lor către un backend cloud (Firebase Realtime Database) și afișarea acestora pe o interfață web. | ||
- | Scopul acestui proiect a fost realizarea unui sistem de monitorizare in timp real a parametrilor dinamici al unui kart. Proiectul se bazeaza pe colectarea datelor prin senzori, transmiterea lor catre un backend cloud (Firebase Realtime Database) si afisarea acestora pe o interfata web. | + | ===== 2. Funcționare și logică aplicației ===== |
+ | Sistemul este alcătuit din 3 componente principale: | ||
- | ⸻ | + | 1. **Colectare de date**: Se realizează cu ajutorul a doi senzori: |
+ | a. **MPU6050** – pentru măsurarea accelerației pe 3 axe și rotației (gyro). | ||
+ | b. **DS18B20** – pentru măsurarea temperaturii. | ||
- | 2. Functionare si logica aplicatiei | + | 2. **Transmitere date**: Microcontrollerul **ESP8266** citește valorile de la senzori și le transmite prin conexiune Wi-Fi către Firebase Realtime Database. |
- | Sistemul are 3 componente principale: | + | 3. **Afișare în timp real**: O pagină HTML accesează periodic baza de date pentru a actualiza afișajul cu ultimele valori disponibile: |
- | 1. Colectare de date: Se realizează cu ajutorul celor 2 senzori, si anume MPU6050 (măsoară accelerația pe 3 axe și rotația) si DS18B20 (temperatură). | + | a. `kartStats/latest/accelX` |
- | 2. Transmisie date: Microcontrollerul (ESP8266) citeste valorile de la senzori si le transmite prin Wi-Fi catre Firebase Realtime Database. | + | b. `kartStats/latest/accelY` |
- | 3. Afisare in timp real: O pagina HTML acceseaza periodic Firebase pentru a actualiza afisajul cu ultimele valori: | + | c. `kartStats/latest/accelZ` |
+ | d. `kartStats/latest/gForce` | ||
+ | e. `kartStats/latest/gyroZ` | ||
+ | f. `kartStats/latest/speed` | ||
+ | g. `kartStats/latest/temperature` | ||
- | kartStats/latest/accelX | + | Pagina web afișează aceste date sub formă de text formatat, fără a necesita refresh manual. |
- | kartStats/latest/accelY | + | |
- | kartStats/latest/accelZ | + | |
- | kartStats/latest/gForce | + | |
- | kartStats/latest/gyroZ | + | |
- | kartStats/latest/speed | + | |
- | kartStats/latest/temperature | + | |
- | Pagina afiseaza aceste date in interfata ca text formatat, fara a necesita refresh manual. | + | ===== 3. Hardware folosit ===== |
- | ⸻ | + | Componentele utilizate și conexiunile sunt prezentate în tabelul de mai jos: |
- | + | ||
- | 3. Hardware folosit | + | |
- | + | ||
- | Componentele utilizate si conexiunile sunt prezentate in tabelul de mai jos: | + | |
==== Hardware Connections ==== | ==== Hardware Connections ==== | ||
Line 41: | Line 41: | ||
=== 🔌 Components Used === | === 🔌 Components Used === | ||
* ESP32 Development Board | * ESP32 Development Board | ||
- | * MPU-6050 (Accelerometer, Gyroscope, Temperature) | + | * MPU-6050 (Accelerometru, Giroscop, Termometru intern) |
- | * DS18B20 (External Temperature Sensor) | + | * DS18B20 (Senzor extern de temperatură) |
* Breadboard | * Breadboard | ||
* Jumper Wires (male-male) | * Jumper Wires (male-male) | ||
Line 58: | Line 58: | ||
| Breadboard | - | Distribuție VCC și GND către ambii senzori | | | Breadboard | - | Distribuție VCC și GND către ambii senzori | | ||
- | > 🧠 Notă: S-a folosit un breadboard pentru a partaja pinul de 3.3V al plăcuței ESP32 către mai mulți senzori, întrucât placa oferă un singur pin de alimentare 3V3. | + | > 🧠 **Notă**: S-a folosit un breadboard pentru a partaja pinul de 3.3V al plăcuței ESP32 către mai mulți senzori, întrucât placa oferă un singur pin de alimentare 3V3. |
+ | |||
+ | Alimentarea s-a realizat prin portul USB. În cadrul testelor, s-a utilizat o sursă stabilizată de 5V pentru componentele analogice. | ||
+ | |||
+ | ===== 4. Tehnologii utilizate ===== | ||
+ | |||
+ | * **Arduino Framework (C++)** – pentru programarea plăcuței ESP8266. | ||
+ | * **Firebase Realtime Database** – backend cloud pentru stocarea și sincronizarea rapidă a datelor. | ||
+ | * **HTML + CSS** – pentru structura și stilizarea interfeței grafice web. | ||
+ | * **JavaScript + Firebase SDK v8** – pentru conectarea frontend-ului la Firebase și actualizarea valorilor live. | ||
- | Alimentarea s-a realizat prin portul USB. In cadrul testelor s-a folosit o sursa stabilizata de 5V pentru componentele analogice. | + | ===== 5. Procesare date ===== |
- | ⸻ | + | Pentru a transforma datele brute în informații utile, au fost aplicate următoarele formule: |
- | 4. Tehnologii folosite | + | * **Viteza**: aproximată prin integrarea accelerației pe axa X în timp: |
- | • Arduino Framework (C++): Programarea ESP8266 pentru colectarea si trimiterea datelor. | + | `v = ∫ a_x(t) dt ≈ v₀ + a * Δt`, |
- | • Firebase Realtime Database: Backend cloud usor de utilizat, cu sincronizare rapida a datelor. | + | cu filtrare simplă și actualizare la fiecare ~100ms. |
- | • HTML + CSS: Structura si stilizarea paginii web de afisare. | + | |
- | • JavaScript (v8 Firebase SDK): Acces la baza de date si actualizare dinamica a valorilor pe pagina. | + | |
- | ⸻ | + | * **Forță G**: calculată folosind magnitudinea vectorului accelerației: |
- | 1. Procesare date | + | `gForce = √(aX² + aY² + aZ²)` |
- | Pentru a transforma datele brute în informații utile, au fost realizate mai multe calcule: | + | * **Temperatură**: |
- | • Viteza: aproximată prin integrarea accelerației pe axa X în timp: | + | - **Internă (MPU6050)**: citită din registrul senzorului și convertită folosind formula specifică chipului. |
+ | - **Externă (DS18B20)**: conversie automată în grade Celsius cu ajutorul bibliotecii DallasTemperature. | ||
+ | * **Calibrare**: | ||
+ | - S-au aplicat offset-uri pentru accelerometru astfel încât la stare de repaus valorile să fie aproximativ `(0, 0, 1g)`. | ||
+ | - Valori mediate pentru câteva secunde la pornire pentru corectare. | ||
+ | ===== 6. Challenges și probleme întâmpinate ===== | ||
- | Cu filtrare simplă și actualizare pe fiecare ciclu de citire (~100ms). | + | * **Sudarea senzorului MPU6050**: La început, contactele senzorului erau instabile. A fost necesară sudarea manuală a pinilor pentru a asigura contactul ferm cu placa de dezvoltare. |
- | • Forță G: calculată folosind magnitudinea accelerației: | + | |
+ | * **Calibrare accelerometru**: Valorile brute necesitau corecții. S-a realizat calibrarea empirică prin medierea valorilor în stare de repaus și aplicarea unor compensări în software. | ||
+ | * **Aproximarea vitezei**: Dificil de obținut o valoare exactă doar din accelerație; s-a folosit o formulă simplificată, fără integrare completă, dar cu o filtrare de zgomot. | ||
+ | * **Limitare alimentare 3V3**: Deoarece ESP32 are un singur pin de 3.3V, s-a folosit un breadboard pentru a distribui alimentarea la ambii senzori. | ||
- | • Temperatura: extrasă direct din registrul senzorului și convertită în °C cu formula: | + | ---- |
+ | ===== 7. Referințe ===== | ||
+ | * [[https://ocw.cs.pub.ro/courses/iothings/laboratoare/2022/lab4]] | ||
+ | * [[https://ocw.cs.pub.ro/courses/iothings/laboratoare/2022/lab5]] | ||
+ | * [[https://randomnerdtutorials.com/esp32-firebase-realtime-database/]] | ||
+ | * [[https://github.com/mobizt/FirebaseJson]] | ||
+ | * [[https://github.com/mobizt/Firebase-ESP-Client]] | ||
+ | * [[https://randomnerdtutorials.com/arduino-mpu-6050-accelerometer-gyroscope/]] | ||
- | • Calibrare: s-au aplicat offset-uri pentru a corecta valorile accelerometrului în repaus (aX, aY, aZ ≈ 0,0,1g). | ||
- | 6. Challenges & Probleme Intampinate | ||
- | • Sudarea senzorului MPU6050: Initial contactele senzorului erau instabile, necesitand sudare manuala a pinilor pentru un contact corect cu placa de dezvoltare. | ||
- | • Calibrare accelerometru: Datele brute necesitau corectii. S-a facut o calibrare empirica prin mediere in stare de repaus si compensare in software. |