Differences

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

Link to this comparison view

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.+===== 2Funcț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 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.+===== 3Hardware 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 (AccelerometerGyroscopeTemperature+  * MPU-6050 (AccelerometruGiroscopTermometru 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.+===== 5Procesare 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ă**
- • Vitezaaproximată 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. 
iothings/proiecte/2025sric/kart_telemetry.1748522206.txt.gz · Last modified: 2025/05/29 15:36 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