← Back to Portfolio
ESP32 Firmware for DIY Dive Propulsion Vehicle (DPVControl)
Initial firmware for an open-source DIY dive propulsion vehicle
C++EmbeddedESP32PlatformIOVESC
Project Background
I wrote the initial firmware from scratch for a DIY underwater propulsion vehicle (DPV) built around an ESP32 and a 2000W VESC-controlled scooter motor. This was developed on-site with the hardware available for live testing.
Firmware Features
- Motor Control: Precise speed control via VESC UART interface
- Reed Switch Input: Magnetic switch detection for user input
- Cruise Control: Maintains constant speed without continuous input
- Boost Mode: Temporary power increase for challenging conditions
- Battery Monitoring: Real-time voltage and current measurement
- Leak Detection: Water intrusion sensors with automatic shutdown
- NeoPixel LEDs: Status indication and user feedback
- Beep/LED Safety Codes: Audible and visual alerts for various conditions
- Temperature Monitoring: Motor and battery temperature tracking
Technical Specifications
- MCU: ESP32 with dual-core processing
- Motor Controller: VESC (Vedder Electronic Speed Controller)
- Communication: UART interface to VESC
- Development: PlatformIO framework
- Language: C++ with Arduino core
- Safety: Multiple redundant safety systems
Project Evolution
The v1 I wrote was the first version that went into the water. The project has since grown significantly with contributions from the community:
- 20+ firmware releases with continuous improvements
- Full REST API for external control and monitoring
- Web-based GUI for configuration and real-time data
- Comprehensive test suite
- OpenAPI specification for API documentation
This project demonstrates my ability to work at the hardware-software boundary, dealing with real-time constraints, safety-critical systems, and embedded Linux environments.