https://github.com/kevinbdx35/rocket-telemetry
Modern rocket telemetry system with real-time dashboard, built in Python using PyQt5 and matplotlib
https://github.com/kevinbdx35/rocket-telemetry
aerospace-engineering aerospace-sensors dashboard data-visualization embedded-systems flight-data gui matplotlib pyqt5 python real-time rocket telemetry
Last synced: 28 days ago
JSON representation
Modern rocket telemetry system with real-time dashboard, built in Python using PyQt5 and matplotlib
- Host: GitHub
- URL: https://github.com/kevinbdx35/rocket-telemetry
- Owner: kevinbdx35
- Created: 2025-07-23T23:55:02.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-24T07:56:01.000Z (11 months ago)
- Last Synced: 2025-07-24T11:36:20.566Z (11 months ago)
- Topics: aerospace-engineering, aerospace-sensors, dashboard, data-visualization, embedded-systems, flight-data, gui, matplotlib, pyqt5, python, real-time, rocket, telemetry
- Language: Python
- Homepage:
- Size: 131 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Rocket Telemetry System
A modern and modular telemetry system for rockets, developed in Python with a real-time dashboard GUI.

[](https://ko-fi.com/W7W61I0YBJ)
## Features
- **Modern GUI**: Professional PyQt5 dashboard with dark theme
- **Real-time Visualization**: Integrated matplotlib charts for all data
- **Modular Architecture**: Follows SOLID, DRY, and Clean Code principles
- **Sensor System**: Abstract interface for different sensor types
- **Data Validation**: Automatic validation with safety limits
- **Multi-format Storage**: JSON and CSV export capabilities
- **Advanced Logging**: Log system with automatic rotation
- **Complete Testing**: Unit and integration test coverage
## Project Structure
```
rocket_telemetry/
├── src/
│ ├── core/ # Core data models
│ ├── sensors/ # Sensor interface and implementations
│ ├── data/ # Data processing and storage
│ ├── gui/ # Graphical user interface
│ │ └── widgets/ # Reusable UI components
│ └── utils/ # Utilities (logging, etc.)
├── tests/
│ ├── unit/ # Unit tests
│ └── integration/ # Integration tests
├── config/ # Configuration files
├── logs/ # Log files
├── main.py # Main entry point
├── run_tests.py # Test runner script
└── requirements.txt # Python dependencies
```
## Installation
1. **Navigate to project** :
```bash
cd rocket_telemetry
```
2. **Install dependencies** :
```bash
pip install -r requirements.txt
```
## Usage
### Launch Application
```bash
python main.py
```
### Dashboard Interface
The interface is divided into several sections:
- **Control Panel**: Sensor connection, start/stop acquisition, data saving
- **Real-time Data**: Digital display of current values
- **Charts**: Real-time visualization by tabs (Altitude, Acceleration, Environment, Orientation)
- **System Status**: Component state and statistics
### Main Features
1. **Connect Sensor**: Click "Connect Sensor"
2. **Start Acquisition**: Click "Start Acquisition" button (green)
3. **Visualize Data**: Watch real-time chart updates
4. **Save Data**: Click "Save Data" button to export
5. **Stop**: Click "Stop Acquisition" button (red)
## Telemetry Data
The system collects and displays:
- **Flight**: Altitude (m), Velocity (m/s)
- **Acceleration**: X, Y, Z axes (m/s²)
- **Environment**: Temperature (°C), Pressure (hPa)
- **Orientation**: Roll, Pitch, Yaw (degrees)
- **System**: GPS (lat/lon), Battery voltage (V)
## Testing
Run all tests:
```bash
python run_tests.py
```
Unit tests only:
```bash
python -m unittest discover tests/unit
```
Integration tests only:
```bash
python -m unittest discover tests/integration
```
## Technical Architecture
### Design Principles
- **KISS**: Simple interface, readable code
- **DRY**: Reusable components, no duplication
- **SOLID**: Separation of concerns, extensibility
- **Clean Code**: Explicit naming, clear structure
- **Testability**: Complete test coverage
### Main Components
1. **TelemetryReading**: Immutable data model
2. **BaseSensor**: Abstract interface for sensors
3. **TelemetryProcessor**: Thread-safe real-time processing
4. **DataStorage**: Multi-format persistence
5. **MainWindow**: Modular graphical interface
### Observer Pattern
The system uses an Observer pattern for communication:
- Sensors produce data
- Processor validates and processes
- UI widgets are notified via callbacks
- Complete decoupling between components
## Extensibility
### Add New Sensor
1. Inherit from `BaseSensor`
2. Implement `connect()`, `disconnect()`, `read_data()`
3. Replace `MockRocketSensor` in `MainWindow`
### Add New Widget
1. Create in `src/gui/widgets/`
2. Inherit from `QWidget`
3. Implement `update_data()` method
4. Add to main layout
### New Export Format
1. Add method in `DataStorage`
2. Implement serialization
3. Add button in `ControlPanelWidget`
## Security
- Strict input data validation
- Safety limits on all parameters
- Robust error handling
- Detailed logs for audit trail
## Performance
- Threading to avoid UI blocking
- Circular buffers for limited memory
- Optimized chart updates
- Automatic log rotation