Differences

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

Link to this comparison view

iothings:proiecte:2025sric:kart_telemetry [2025/04/23 17:28]
alexandru.maxim2801 created
iothings:proiecte:2025sric:kart_telemetry [2025/05/29 18:30] (current)
alexandru.maxim2801
Line 6: Line 6:
  
 Master: SRIC Master: SRIC
 +
 +====== Kart Telemetry Dashboard ======
 +
 +===== 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.
 +
 +===== 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. **Transmitere date**: Microcontrollerul **ESP8266** citește valorile de la senzori și le transmite prin conexiune Wi-Fi către Firebase Realtime Database.
 +
 +3. **Afișare în timp real**: O pagină HTML accesează periodic baza de date pentru a actualiza afișajul cu ultimele valori disponibile:  ​
 +   a. `kartStats/​latest/​accelX`  ​
 +   b. `kartStats/​latest/​accelY`  ​
 +   c. `kartStats/​latest/​accelZ`  ​
 +   d. `kartStats/​latest/​gForce`  ​
 +   e. `kartStats/​latest/​gyroZ`  ​
 +   f. `kartStats/​latest/​speed`  ​
 +   g. `kartStats/​latest/​temperature`
 +
 +Pagina web afișează aceste date sub formă de text formatat, fără a necesita refresh manual.
 +
 +===== 3. Hardware folosit =====
 +
 +Componentele utilizate și conexiunile sunt prezentate în tabelul de mai jos:
 +
 +==== Hardware Connections ====
 +
 +=== 🔌 Components Used ===
 +  * ESP32 Development Board
 +  * MPU-6050 (Accelerometru,​ Giroscop, Termometru intern)
 +  * DS18B20 (Senzor extern de temperatură)
 +  * Breadboard
 +  * Jumper Wires (male-male)
 +  * Rezistor 4.7kΩ (pentru DS18B20 pull-up)
 +
 +=== 📌 Wiring Table ===
 +^ Componentă ​    ^ ESP32 Pin      ^ Descriere ​                                         ^
 +| MPU-6050 SDA   | GPIO 21        | Interfață I2C - date                                |
 +| MPU-6050 SCL   | GPIO 22        | Interfață I2C - ceas                                |
 +| MPU-6050 VCC   | 3V3 (pe ESP32) | Alimentare 3.3V                                     |
 +| MPU-6050 GND   | GND            | Împământare comună ​                                 |
 +| DS18B20 DATA   | GPIO 4         | Linie de date (cu rezistor de 4.7kΩ pull-up la 3.3V)|
 +| DS18B20 VCC    | 3V3 (pe ESP32) | Alimentare 3.3V                                     |
 +| DS18B20 GND    | GND            | Împământare comună ​                                 |
 +| 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.
 +
 +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.
 +
 +===== 5. Procesare date =====
 +
 +Pentru a transforma datele brute în informații utile, au fost aplicate următoarele formule:
 +
 +  * **Viteza**: aproximată prin integrarea accelerației pe axa X în timp:
 +    `v = ∫ a_x(t) dt ≈ v₀ + a * Δt`,  ​
 +    cu filtrare simplă și actualizare la fiecare ~100ms.
 +
 +  * **Forță G**: calculată folosind magnitudinea vectorului accelerației:  ​
 +    `gForce = √(aX² + aY² + aZ²)`
 +
 +  * **Temperatură**:​
 +    - **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 =====
 +
 +  * **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.
 +  ​
 +  * **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.
 +
 +----
 +
 +===== 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/​]]
 +
  
iothings/proiecte/2025sric/kart_telemetry.1745418527.txt.gz · Last modified: 2025/04/23 17:28 by alexandru.maxim2801
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