UPDATE: you can see the latest version of our Wild Thing here.
I recently came across a Wild Thing Modification by the Barstow School and FRC Team 1939. They did a really amazing job and the end result looks great and is very functional. Seeing what they had done I was inspired to get a Wild Thing, see how it worked and begin to explore what else I could push it to do including remote control and eye gaze control.
For the Barstow School project they opted to completely replace all the of the toy’s electronics including motor driver. There are some advantages to that approach including no need for reverse engineering and also having complete and direct control of motor drive parameters including the ramping up and down of speed. But still, I thought it would be informative to see how far one could get by keeping most of the toy’s electronics in place and just emulating the joystick sensors to control the Wild Thing. After getting this working it deserved a real test so I added remote control:
Having already worked out everything about the controls to get that working, it was trivial to switch adapt the toy as shown below. Speed, ramping, momentary vs latching, etc. can all be tweaked as desired.
Lastly for this round of tests I hooked the Wild Thing up to eye gaze based driver controls I created. In the video below the eye gaze setup and myself as the driver are outside the vehicle, but of course the eye gaze could be mounted to the toy itself allowing the rider to drive using only their eyes.
Pictures of the unmodified Wild Thing including the control electronics under the seat in the battery compartment:
Looking at the wiring my first surprise was how many wires were on the joystick ports on the main board. I thought each joystick would be a pot, which would be 3 wires, but instead I saw 5. Taking apart the joysticks I saw that they used a combination of magnetic pins with sensors and a flex sensor for each joystick. These same magnetic pins with sensors were used in the seat switch, surprising me again as I would have thought they would have just used a mechanical button or microswitch.
Pictures of the joystick electronics:
Pictures of the seat sensor electronics:
After first working out GND, I probed the voltages on each of the other joystick wires as I moved the joystick through its full range. To do this and to set myself up to later inject signals I cut and stripped the wires and soldered on header pins.
Having worked out all the sensor output voltages it was easy to emulate the joysticks with 2 DAC outputs each and the seat sensor directly with a GPIO. DAC was the simplest way to go for the joystick wires since one of them was not high impedance and would sink 3 mA at the center voltage.
- yellow = GND
- black = mag sensor
- green = flex sensor
- white = indirect 3.3 V
- red = 3.3 V
- CENTER: black = 1.49 V, green = 1.65 V
- FULL FORWARD: black = 2.68 V, green =3.03 V
- FULL BACK: black = 2.68 V, green = 0.01 V
- Anywhere In Between: black = 3.28 V, green = proportional value in between (eg. mid forward = 2.3 V)
- NOTE: for the second joystick the range is reversed.
SEAT SWITCH and SPEED SELECT BUTTON:
- black = GND
- red = Battery +, around 13 V
- white = Speed Sel button (high Z input: 3.3V released, 0V pressed)
- green = Seat switch (high Z input: 3.3V released, 0V pressed)
For sake of completeness, I’ll also document that the motor driver uses 30 kHz PWM and that the motors can pull a total upwards of 6 A under strain.
By popular request, here is the schematic of the add-on control board we designed, capable of switch-adaptation, wireless remote control, and control over USB (allowing connection to an eye-gaze device):
This toy definitely proved to be very hackable and versatile. Please note that these control modifications (remote control, switches, eye gaze) are not limited to this modification method. They could have just as easily been implemented on top of replacing the motor driver if desired.