A comprehensive ESP32-based drone control system featuring handheld controllers, base station monitoring, and advanced telemetry dashboard.
GoudFlight is a modular drone control ecosystem consisting of:
- Handheld Controller: ESP32-based remote control with OLED display and button input
- Drone Flight Controller: ESP32-based flight control system
- Base Station: Ground control station with LCD display and serial interface
- ATC Dashboard: Python-based monitoring dashboard with rich terminal UI
GoudFlight/
├── src/ # ESP32 firmware source code
│ ├── handheld_controller/ # Handheld remote control
│ ├── drone_flight_controller/ # Drone flight control
│ └── base_station/ # Base station firmware
├── lib/ # Shared libraries
│ ├── Core/ # Core framework (AppFramework, Logger, State)
│ ├── HAL/ # Hardware abstraction layer
│ ├── Communication/ # ESP-NOW and serial protocols
│ ├── Display/ # Display drivers and management
│ └── Business/ # Business logic components
├── atc/ # ATC Dashboard (Python)
│ ├── dashboard.py # Main dashboard application
│ ├── components/ # UI components
│ └── state/ # State management
└── scripts/ # Build and utility scripts
- Build firmware:
./build.sh all # Build all targets
./build.sh handheld # Build handheld only
./build.sh base # Build base station only- Upload to board:
./upload.sh handheld # Upload to handheld
./upload.sh base # Upload to base station- Navigate to ATC directory:
cd atc- Install dependencies:
pip install -r requirements.txt- Start dashboard:
./start.sh- ESP32 DevKit
- SSD1306 OLED Display (128x64)
- 74HC165 Shift Register for button input
- Push buttons
- 3.7V LiPo battery
- ESP32 DevKit
- LCD1602 I2C Display
- UART connection for telemetry
- Power supply
- Linux/macOS with Python 3.9+
- Terminal with UTF-8 support
- Serial port access
- Direct ESP32-to-ESP32 communication
- Low latency (<10ms)
- Range up to 200m (open space)
- Automatic reconnection
- JSON-based messages
- 115200 baud rate
- Bidirectional communication
- Real-time telemetry
- AppFramework Pattern: Consistent lifecycle management
- Screen-Based UI: Modular screen system
- Hardware Abstraction: Platform-independent interfaces
- State Management: Centralized state with observers
- Component-Based: React-like component system
- State Management: Redux-like centralized state
- Type Safety: Full type hints throughout
- Real-time Updates: Independent component refresh rates
Install development hooks for code quality:
cd atc && ./install-hooks.shAlways validate before pushing:
cd atc && ./pre-push.sh- MISRA-C compliance for firmware
- Type safety in Python (no
Anytypes) - Comprehensive validation scripts
- Pre-commit hooks for consistency
- Follow the design principles in CLAUDE.md
- Run validation before commits
- Maintain type safety
- Update documentation
- Test on hardware
- PlatformIO: Build system and dependency management
- ESP-IDF: ESP32 development framework
- Python 3.9+: ATC dashboard
- Rich: Terminal UI framework
- ESP-NOW: Wireless communication protocol