GoBabyGo Car - DIY Arduino-Based Joystick for Unique Physical Needs
by WSUGoBabyGo in Circuits > Assistive Tech
19 Views, 0 Favorites, 0 Comments
GoBabyGo Car - DIY Arduino-Based Joystick for Unique Physical Needs
While simple buttons are a great entry point for adaptive play, some users require more nuanced control. Our team developed this custom-built, programmable joystick to provide a tailored solution for children whose needs aren't met by off-the-shelf controllers—such as those requiring a specific scale for smaller hands or specialized tension for limited muscle strength.
Unlike a standard 'switch' mod, this project is built from the ground up using custom electronics and programming. This approach allows us to map specific movements to unique commands, making it a versatile tool for both gaming and computer navigation. In this Instructable, we’ll dive into the technical side of inclusive design, covering the electronic assembly, the code logic, and the ergonomics of building a truly bespoke input device.
Supplies
This "Jeep" is the one we used and configured the steering mechanism for. Other ride-on vehicles we have seen use extremely similar electronics, so the only difference should be the steering.
Arduino Nano Every with headers
Brains of the vehicle
The motor controller settings will be changed lower in this tutorial.
Controls steering
At $300, this is by far the biggest opportunity we have to reduce costs. We are in the process of configuring this servo, but that process is unfinished at this time.
Used for parent override
Quantity 2
Used to connect the joystick to the Arduino
Potentiometer - steering control
Quantity 2
Used to connect the Arduino to the PCB without directly soldering
Used to connect everything else to the PCB
Used to connect wires that do not attach to the PCB
PCB
You can upload the attached [gerber file](/GBG_Joystick_PCB_v4.zip) to a PCB manufacturer of your choice (PCBWay, JLCPCB, among others). You can also see and modify the [KiCAD files](/KiCAD/) and export from there.
Alternatively, you could build this on a breadboard or solder all wires together. If you do that, I highly recommend you reference the [schematic](/KiCAD/KiCAD.kicad_sch).
Access to a soldering iron
If you have trouble parsing the code, please feel free to open an issue in this github repository.
Assemble Your Vehicle According to the Manual
Once assembled, your "engine bay" should look like this.
Disassembly
Before you do anything, disconnect the battery
- Double check you've disconnected the battery
- Disconnect the wires powering the rear motors. In the picture, the connector is outlined in green.
- Disconnect the wires powering the steering motor. These wires are typically blue and brown. In the picture, the connector is between the green and orange outlines.
Preparation and Wiring Power
Cut a small board to place all your components on. We used 1/8 inch plywood, but this could be as simple as rigid cardboard.
Gather your 30 Amp bus, a spool of 14-18AWG wire, and your kill switch.
Preparation
- Disconnect the battery connector wires from the main vehicle board. In the previous step, this wire was outlined in orange.
- Cut the wires about three inches from the orange connector.
- For clarity later in this step, we'll call the orange side red wire OR, orange side black OB, white connector red WR, and white connector black WB.
- Strip all four wires roughly a quarter inch.
- Take the red wire on the orange connector side (OR) and crimp on a spade connector that fits the wire gauge. Once crimped, pull to make sure it is secure.
Kill Switch
- Take your spool of wire, strip a quarter inch from both, and crimp the opposing spade connector from the previous step on one of the wires. The other wire will be left uncovered, we'll screw it into the 30A bus later.
- Both of these wires are power wires, so we'll use KS for the spaded wire and KU for the un-spaded wire.
- Run both wires to the rear of the car. There is typically a wire shroud on the underside of the car you can unscrew and route the wires within.
- Use a drill to create a hole in the rear of the car and use the accompanying nuts to secure the kill switch to the vehicle.
- Use spade connectors or wire nuts to attach the spool wires to the kill switch. Polarity here does not matter.
30 Amp bus and Motor Controller
- Coming back to the front, take your 30A bus and screw in 1) the wire we left un-spaded from the kill switch (KU) and 2) the black wire from the orange connector (OB).
- Take note which letter you screw the wires into. We used A for KU (this is our power line) and B for OB (this is our ground).
- Ensure the battery remains disconnected, if you connected it to test kill switch continuity
- Screw the two wires from the white connector (WR and WB) into the 30A bus. Red screws to A, black screws to B.
- Moving to the motor controller, strip the red and black wires and screw them into the 30A bus.
- Strip one yellow and one blue wire and crimp on spade connectors.
- Cut the connector off the wires going to the rear motor. Strip both wires and crimp on the opposing spade connectors from the motor controller.
- Connect the motor controller and rear motor wires.
Once these steps have been completed, we've finished the part of the schematic above outlined in blue.
Soldering the Joystick
This soldering is easily the most difficult, so be prepared. We recommend grabbing some small heat shrink tubing to go over the wires to insulate and protect the connections.
- Grab the joystick and two servo wires. Cut the wires and keep the female ends. We keep the female ends here because the 4 foot servo wires will connect their female ends to the male ends on the PCB.
- Splice the wires, solder them to the joystick leads, and cover with heat shrink tubing.
Printed Circuit Board (PCB)
As mentioned in the supplies step, you will need to print out your own PCB. There are several companies out there that will print PCBs for you. Simply download the .zip file (also called a gerber file because the files inside are of the PCB layers), upload the .zip to your vendor of choice, and wait for it to ship.
- Gather your PCB, two 15 pin female headers, seven 3 pin male headers, and all three potentiometers.
- Solder all components on the underside of the PCB. When soldering the 15 pin female headers, it is helpful to put the Arduino into the headers to ensure they stay aligned.
- Open the attached Arduino sketch in the Arduino IDE and flash the sketch to your Arduino.
- Plug everything in
RC Controls
Grab the RC receiver and place it near the PCB. Tape the antenna where there will be little interference. Run jumper wires from the receiver to the PCB, according to the attached picture.
Fine Tuning
Joystick and potentiometers
Plug the joystick extension wires into the PCB. Ensure nothing looks obviously wrong, then plug in the battery and flip the kill switch on. If nothing looks amiss, turn the joystick right/left and forward/backwards. If it does nothing, check the RC controls or Troubleshooting below. Turn the joystick in your hands until one of the directions is correct. If the other direction is flipped, simply unplug the connector from the PCB, turn it around, and plug it back in.
The vehicle should now have functional steering and acceleration. To increase or reduce speed, turn the speed potentiometer until you are satisfied.
Next, flip the car or get into a position where you can see the steering. It is likely not 100% centered, so turn the "Steering Center Adjustment" potentiometer until the front wheels are straight when the joystick is not touched. Finally, move the joystick left and right all the way. If you have a clearance issue or the steering mechanism keeps trying to push further than the vehicle will allow, turn the "Steering Range Adjustment" potentiometer until the vehicle has maximum turning capability without running into the wheels or steering rack, etc.
RC Controls
Test the RC controller. Ensure the trigger controls the motor, the wheel controls steering, and the emergency stop button works as intended. If it has a different range or center than the joystick, open the top flap and adjust the knobs until it is much closer.
Troubleshooting
If the car does not move when turned on, check that the RC controller is on. Occasionally, the RC receiver may, on start, send a signal that the emergency stop is on. Turning the controller on sends the proper signal to the receiver and the vehicle is free to move.
Ensure all components are fully seated into their connectors
Ensure the solder joints on the PCB make a proper connection.
If none of these work or if the vehicle motors/steering is wonky, connect the arduino to your computer and read the Serial Monitor. Check that the values there match up generally to what's written in the code. If you have trouble parsing the code, please feel free to open an issue in this github repository.