This repository showcases an electric “HoverCar” project, built by repurposing two hoverboards and integrating them with custom electronics and firmware. Disclaimer: The code in this repo is tailored to my personal setup. While you can explore or reuse parts of it, please note that it was never designed to be a general plug-and-play solution.
- Project Overview
- Background and Motivation
- Initial Experiments: The Zeus Car
- Scaling Up: Tank Chassis
- Final Stage: The HoverCar
- Electronics & Components
- Software & Control
- Future Plans
- Acknowledgements
The HoverCar began as a quest to build something bigger and more functional than standard hobbyist robot kits. After experimenting with small cars and tank chassis, I moved on to repurposing hoverboard parts due to their powerful motors, controllers, and batteries—all available at a relatively low cost on the secondhand market.
Key takeaway: The knowledge I gained from smaller projects (Zeus car and tank chassis) carried over to this large-scale build, though I still encountered unexpected challenges in firmware flashing, wiring, signal conversion, and more.
I'm a student of cybernetics and robotics who loves building practical projects to supplement theoretical knowledge. This project is a playground to learn more about motor control, firmware development, sensor integration, and wireless communication—while also having a blast driving around on a custom electric vehicle.
I started with a mini-robot known as the Zeus Car, which came as a complete kit: battery, wheels, sensors, and an Arduino UNO R3.
- Sensors included: grayscale, camera, ultrasound, etc.
- Customization: I replaced the default app control with my own Python script, allowing me to drive it via a PS5 controller (using libraries like
pygame
). - Goal: Learn how to manipulate sensor data and motor output in real-time. I succeeded in reading sensor data on my computer while controlling the car.
- Limitations: The motors (5V) couldn’t carry any significant load, but the project was a great introduction to microcontroller basics (PWM signals, RX/TX communication, battery management, and general wiring).
Next, I bought a tank chassis equipped with 12V motors. This allowed me to explore more powerful driver components.
- Motor drivers: Two BTS7960 drivers to interface between the Arduino’s 5V PWM signals and the 12V supply.
- Challenges:
- Interpreting the datasheet for correct wiring.
- Crucial Lesson: A common ground (GND) is absolutely necessary.
- Lots of soldering and troubleshooting to ensure the motor drivers responded correctly.
The leap from a tank chassis to a hoverboard-based design wasn’t trivial, but most of the microcontroller logic was transferable:
- Sourcing Hoverboards: Found two used hoverboards for under $30 each. Their motors and built-in motor controllers were ideal, but were typically locked behind proprietary firmware.
- Firmware Flashing:
- Successfully flashed custom firmware on one hoverboard controller.
- Had issues flashing the second, so I purchased two generic brushless motor controllers (18–55V) off AliExpress.
- Potentiometer vs. UART:
- The new controllers were potentiometer-based.
- I needed an Arduino Mega for multiple UART (RX/TX) pins because each hoverboard side needed its own communication channel.
- DAC Setup: The controllers expected analog signals, so I needed a digital-to-analog converter to transform PWM output into a smooth analog voltage.
- I wrestled with address conflicts, soldering missteps, and code adjustments before getting stable motor control.
- Wireless Control with ESP32:
- I wanted to drive the HoverCar wirelessly via a PS5 controller.
- Used an ESP32 for Bluetooth, referencing open-source libraries and examples.
- Forwarded the controller inputs to the Arduino for the final motor commands.
- Frame Construction: Used wooden planks for a base, adding some basic weatherproofing.
- Driving Experience: The car can move outdoors, though it’s still evolving.
- Practical Learning: Building this forced me to apply many cybernetics/robotics concepts—power distribution, signal processing, sensor feedback, and more.
HoverCar ready to test (weatherproofing not yet implemented):
- Arduino Mega – multiple UART pins, central microcontroller.
- Hoverboard Motors & Controllers – repurposed from used hoverboards.
- DACs – smoothing out PWM signals for the pot-based controllers.
- ESP32 – Bluetooth module for wireless control.
- Batteries – integrated hoverboard battery packs (be mindful of their voltage ratings).
- Miscellaneous – BTS7960 drivers (used earlier), power cables, sensors, and more.
- Language/IDE: Mostly C/C++ in the Arduino IDE.
- Wireless Control: Python +
pygame
for controller inputs, Bluetooth connectivity via ESP32. - Firmware: Custom code for the flashed hoverboard controllers.
- Motor Control Logic: PWM signals, digital-to-analog conversion, plus sensor feedback (planned for future expansions).
- Refine Code: Clean up the repository, optimize signal handling, and reduce wiring complexity.
- Better Drive Experience: Improve speed control, implement smoother acceleration, and refine steering.
- Add Sensors: Incorporate ultrasound, LiDAR, or camera modules for autonomous features.
- Robot Arm: Potentially build and mount a robotic manipulator on top for actual tasks.
- Thanks to open-source communities whose hoverboard firmware solutions I relied on. Particularly: