This shows you the differences between two versions of the page.
iothings:proiecte:2025sric:tennis-tracker [2025/04/23 10:59] stefan.iordache1805 created |
iothings:proiecte:2025sric:tennis-tracker [2025/05/28 18:27] (current) stefan.iordache1805 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Smart Tennis Racket | + | ====== Smart Tennis Racket ====== |
* student: Stefan-Darius Iordache | * student: Stefan-Darius Iordache | ||
* email: stefan.iordache1805@stud.acs.upb.ro | * email: stefan.iordache1805@stud.acs.upb.ro | ||
* master: SRIC-1 | * master: SRIC-1 | ||
+ | |||
+ | This project is an application for analyzing tennis shots using a smart racket. It collects motion data using sensors, processes it using a Python server, and displays the analysis on a web interface. | ||
+ | |||
+ | ===== Hardware Overview ===== | ||
+ | |||
+ | * **ESP32** - Microcontroller used for data collection and wireless communication. | ||
+ | * **MPU6500** - 6-axis motion tracking sensor (accelerometer + gyroscope). | ||
+ | * **Power Supply** - 9V battery strapped to the tennis racket. | ||
+ | |||
+ | The MPU6500 is mounted to the tennis racket and connected to the ESP32, which streams sensor data wirelessly. | ||
+ | |||
+ | ===== Data Flow ===== | ||
+ | |||
+ | - MPU6500 collects accelerometer and gyroscope data. | ||
+ | - ESP32 transmits data to an **InfluxDB** time-series database. | ||
+ | - A **CSV** file is exported from InfluxDB | ||
+ | - The CSV file is consumed by a **Python server** that: | ||
+ | * Parses the data | ||
+ | * Detects individual shots | ||
+ | * Analyzes each shot for: | ||
+ | - Spin | ||
+ | - Power | ||
+ | - A web interface queries the Python server and visualizes the analysis using **Chart.js**. | ||
+ | |||
+ | ===== System Architecture ===== | ||
+ | |||
+ | * **Sensor Layer**: | ||
+ | - MPU6500 (Accelerometer + Gyroscope) | ||
+ | - ESP32 (Wi-Fi transmission) | ||
+ | |||
+ | * **Data Layer**: | ||
+ | - InfluxDB (time-series data storage) | ||
+ | |||
+ | * **Processing Layer**: | ||
+ | - Python server | ||
+ | - CSV parsing | ||
+ | - Shot detection | ||
+ | |||
+ | * **Presentation Layer**: | ||
+ | - Web interface | ||
+ | - Chart.js for dynamic visualizations | ||
+ | |||
+ | ===== Python Server Capabilities ===== | ||
+ | |||
+ | * Loads sensor data from CSV | ||
+ | * Detects tennis shots using | ||
+ | * Computes: | ||
+ | - Spin | ||
+ | - Shot power (based on acceleration magnitude) | ||
+ | * Provides API endpoints for the web client to fetch shot data | ||
+ | |||
+ | ===== Web Interface ===== | ||
+ | |||
+ | * Developed in HTML/JavaScript | ||
+ | * Uses Chart.js to display: | ||
+ | - Shot timeline | ||
+ | - Spin distribution | ||
+ | - Power graph | ||
+ | * Connects to Python server via RESTful API to fetch analysis results | ||
+ | |||
+ | ===== Future Improvements ===== | ||
+ | |||
+ | * Add Bluetooth or BLE support for local device communication | ||
+ | * Implement live streaming directly to the web client | ||
+ | * Integrate machine learning for more accurate shot detection and classification | ||
+ |