Introduction: Cheap Remote Controlled Electric Pushcart (<$200) Using Hoverboard Motors

About: Hello! I'm a second year Engineering Science student at University of Toronto! I have been tinkering and creating electronics projects since middle school, and I'd love to share this passion with more people a…

Since being introduced to golf, I've begun to truly realize how expensive this sport is. From golf sets costing hundreds if not thousands of dollars to electric-powered golf caddies costing several thousands of dollars, the high costs prevent many from indulging in this exciting sport.


However, usefulness of the electric push cart is undeniable as it alleviates a lot of the physical demands of having to either carry or push your heavy clubs without the need to pay for a full golf cart. Ever since my dad got the MGI Navigator Quad Gyro, it's been a part of his everyday golf carry. But at the asking price of nearly $2000 CAD, it urged me to explore alternatives when my mom expressed her wish to purchase one as well.


The answer was using one of those self-balancing hoverboards that once took the internet by storm. Since then, its popularity has rapidly declined and I don't remember the last time I saw one of these on the streets. Well, thanks to that, one of these can easily be picked up for less than $50 where I live. Mine was an off-road hoverboard that comes with slightly larger wheels with deeper tire treads, which will be important later when the caddy has to trek through mud and tall grass.


Opportunity and Requirements Table

The opportunity of this design project is to create an inexpensive alternative to commercial electric golf caddies mainly using off the shelf components and parts from an old hoverboard.

The requirements table is included as a figure above. The table was extensively used in validating the usefulness of the design.


For all CAD models and programs used for this project, check out my Github repository: https://github.com/alexwonseokcho/electric_golf_cart

(This project is still a work in progress. I will continue to update this article and add more detail to the instructions)

Supplies

  • ($20-50) two-wheeled hoverboard - bigger wheels are better
  • (free - $100) 18650 batteries or a 10s battery pack
  • ($20) Arduino Nano, nRF24l01, and miscellaneous electronics parts and supplies
  • (free - $10) old manual push cart

Step 1: Disassemble Hoverboard

For better instructions on how to disassemble and repurpose these hoverboard parts, check out https://github.com/EFeru/hoverboard-firmware-hack-FOC. TL:DR, each hoverboard has 2 in-wheel BLDC motors usually rated for 250W+ of power, the mainboard that contains the motor controller, and a li-ion battery pack. For $50 or less, (I got mine for $20) it is an absolute gold mine. All three of these major components can be reused and repurposed. For this project, I reused the motor and mainboard but not the battery as I wanted more range.

Step 2: Flash the Mainboard With Custom Firmware

The default mainboard is programmed to operate as a hoverboard, but we want manual control over the wheel functions instead. This is possible thanks to some brilliant developers who created a firmware hack. By reprogramming the mainboard, we can control the motors as we wish via serial commands through a microcontroller. To learn how to do this, go to this Github repo: https://github.com/EFeru/hoverboard-firmware-hack-FOC. I'm using the FOC SPEED control mode with UART3. My modified firmware can be found in the project files (will upload later - please remind me in a comment if I still haven't done this haha)


Step 3: Program Golf-Cart Side Arduino

Once you have successfully flashed the firmware onto the mainboard, it's now time to program the Arduino to communicate with the mainboard. For now, we'll simply test whether the firmware flashing was successful. So instead of uploading my entire program, just upload the example code given in the Github repository (https://github.com/EFeru/hoverboard-firmware-hack-FOC) on any Arduino board with its TX and RX pins connected to the UART pins of the mainboard. This should make the wheels oscillate back and forward as shown in the first video. Then, I tested out the speed control feature of the firmware by setting the speed to zero. This makes the motor hold its position even if I forcefully rotate it, which is handy for staying parked on an inclined hill.

Step 4: Disassemble Golf Cart

We now need to disassemble the golf cart and take out its original wheels and its mount to make way for the new motors. Upon disassembling, I examined various ways to mount the motor. When I saw the mount for the original wheel, I was inspired to create something similar that would attach to the steel frame of the cart, but have screw holes to mount the motor instead.

Step 5: Motor Mount CAD and 3D Print

I used Autodesk Inventor software to CAD all the required structural parts of the cart. The most important and difficult part to make was the motor mount to fix the motor shaft onto the frame of the golf cart. The original wheel mount inspired my design as I mimicked its geometry for mounting onto the steel chassis. On the end, I created two large holes for the bolts to drill into. Although I was fully aware that directly bolting things into a 3D printed plastic part is not ideal, I was out of options as I did not have the correct nuts to house the bolts. To compensate, I made the hole intentionally significantly smaller and 3D printed it with PLA (*1) at 100% infill. I then drilled the bolts into the small hole, which created a lot of heat and practically melted its way into the plastic piece. Although this does sound quite sketchy--and it admittedly is--it was incredibly rigid as the bolt is very long and it was fused very well with the molten plastic. It went through various rigorous impact tests and I determined it to be sufficient for the task.


*1 PLA was used for prototyping as it is quick and easy to print. However, I will likely switch to PETG in the next revision as it is much more UV resistant.

Step 6: Mainboard Box CAD and 3D Print

Then, a suitable casing was designed and printed for the mainboard. It was then attached to the frame using bolts and nuts. It also had a hole for the original power button to be snugly fit inside to turn on and off the cart.

Step 7: 10s4p Battery Pack

The battery pack was created using 40x 18650 3350 mAh lithium cells from batteryhookup.com. The process of salvaging and repackaging these were documented in another post of mine. This was arranged in a 10s4p arrangement to create a 36V nominal 482Wh battery pack that is still quite compact and lightweight. I used the battery size of the MGI Navigator Quad Gyro, which supports 36 holes of play at 312Wh, then increased it by 55% for funzies. That should comfortably last more than 2 full rounds of golf.


A spot welder was used to place nickel strips between the cells. The cells are placed in a 4x10 rectangle, with each row of 4 cells being a parallel group. After a painstakingly long process of carefully spot welding, I soldered the BMS board I salvaged from the hoverboard. Check out my other article on how to create your own battery packs. In the future, I'd like to use a better quality BMS, as this is critical to the safety and reliability of the device. After wrapping everything with Kapton tape and connecting a XT60 power cable, the electrical part of the battery pack was done!

Step 8: Battery Casing CAD and 3D Print

To protect the battery from the elements, I created a housing for the battery, which was promptly printed on my 3D printer. The lid of the housing is friction fit for the time being, which works reliably enough.

Step 9: Embedded Programming and Communication

The remote control feature is powered by the nRF24l01 RF module, which should give it a maximum range of at least 50-100m. I began by soldering the radio to the golf-cart receiver side arduino nano as per the regular SPI connection pins on the nano. For more information, you could read this article: https://howtomechatronics.com/tutorials/arduino/arduino-wireless-communication-nrf24l01-tutorial/#:~:text=nRF24L01%20Transceiver%20Module,-Let's%20take%20a&text=It%20uses%20the%202.4%20GHz,2.4%20%E2%80%93%202.5GHz%20ISM%20band

Once that was done, I programmed the Arduino to take in commands wirelessly through the nRF, then relay that to the mainboard via the UART connection mentioned earlier. All the code used for this project can be found in my Github here: https://github.com/alexwonseokcho/electric_golf_cart.

It was then time to make the remote. To make it as compact as possible, an Arduino Pro Mini was used alongside as smaller nRF24l01 module. On it, five buttons were mounted to control the cart forward, backward, to turn, and to stop. With a small pouch style li ion battery cell and its corresponding circuity (TP4056 charge/protection, 5V boost converter), the remote was done. The buttons are satisfying to click and the wireless range works quite well.

Step 10: Testing!

With everything attached, let's see how it works! I went out to my favourite golf course and gave it a go! For now, I had simply zip tied the battery under the steel chassis, but this will get its own proper mount later. I started off the round with full battery at 42V, and after the round was over, I was at 37V, which means I still have around 60% battery left over! So I can conclude that it has enough battery for more than 2 full rounds.

I artificially limited the speed to around 20 kph for safety reasons, but the motors are capable of significantly more than that - around 40 kph should be possible. Nevertheless, everything was working fine, but there was one glaring flaw: when you begin to accelerate quickly, the cart sometimes tips backwards. For this, I propose two solutions which would be implemented in a later revision.

Step 11: Next Steps

I will attach an anti-tip wheel to the back of the frame so that the cart won't tip easily. I will likely make a flipout mechanism with some steel rods I found in the dumpster. That's the hardware solution to the tipping issue.

The software solution would be to add an IMU-enabled balancing feature to the cart, such that the motors will be control to keep the cart balanced in any angle that you'd want, quite similar to a hoverboard. Adding an IMU also means I could use it to keep a stable heading during operation.

Additionally, I wanted to make the remote smaller and streamlined with less parts. That's when I discovered the ESP32-C3 XIAO board, which is the ESP32 C3 in a tiny footprint with a battery charging and protection circuit preinstalled. Hence, I set out to create a revision 2 for the remote, which can be seen in the picture. It's significantly smaller and lighter, with bigger buttons as well. This time, the communication works via ESPNOW, which is a proprietary protocol available on ESP devices. The receiver side was changed as well and equipped with another ESP32 C3 board alongside an MPU6050 for heading/balance control.

Further revisions to the project will be posted in another article.