Author: Maxim Alexandru Gabriel

Email: alexandru.maxim2801@stud.acs.upb.ro

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ă:
    1. Internă (MPU6050): citită din registrul senzorului și convertită folosind formula specifică chipului.
    2. Externă (DS18B20): conversie automată în grade Celsius cu ajutorul bibliotecii DallasTemperature.
  • Calibrare:
    1. S-au aplicat offset-uri pentru accelerometru astfel încât la stare de repaus valorile să fie aproximativ `(0, 0, 1g)`.
    2. 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

iothings/proiecte/2025sric/kart_telemetry.txt · Last modified: 2025/05/29 18:30 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