Rogue Robotics: Team 2987’s Modification Guide for a Power Wheels Wild Thing®

A guide to converting a Wild Thing® into a

Joystick-operated wheelchair.

*With pictures and detailed instructions

Disclaimer:

Farmington’s FIRST Robotics team known as “Rogue Robotics” is not responsible for any injuries to any person or damages to any object including the car caused by the modifications. Any type of modification will also void the warranty provided by the manufacturer of the electric toy vehicle.

Special Thanks:

Thank you to FIRST Robotics Team 1939 “ The KUHNIGITS” of Kansas City, MO for sharing their resources from their GoBabyGo builds. https://www.frcteam1939.com 

© Copyright 2023 FIRST Robotics Team 2987

ISD192, Farmington, Minnesota

Guide Version: BETA 0.2

.   Introduction   .  

The Team:

Rogue Robotics is an after-school robotics club for Farmington High School in Farmington, Minnesota. Founded during the 2008-09 school year, we participate in the F.I.R.S.T. Robotics competition. Each season, we build a 120-pound robot from scratch to compete in their game that changes every year.

Competitions:

Each year, we have six weeks to design, prototype, build, and test a robot that will compete in the FIRST Robotics Competition. Mentors from the community donate their time and knowledge to help our kids develop valuable job skills in the STEM field.

Community Outreach:

The Rogue Robotics Team contributes a large portion of its energy on community outreach. We promote STEM by speaking at middle and elementary schools and mentor new teams at all age levels. We also donate our time at volunteer events like Feed My Starving Children.

Go Baby Go:

In November of 2018, we were approached by the parents of Cillian Jackson to help modify an electric toy vehicle. We learned about the Go Baby Go program and discovered that there were no active chapters in the state of Minnesota. Working with the founders of Go Baby Go at the University of Delaware, we created the first official chapter in the state.

Funding:

Building robots for competitions and our multiple community outreach programs are costly endeavors, we could not accomplish any of our goals without the support of our generous sponsors. If you would like to sponsor Rogue Robotics, please visit our website: www.team2987.com/sponsors

.   Part/Order List   .  

Tools/On Hand Materials:

  • Solder/Soldering iron
  • Tape measure
  • Electric drill & drill bits
  • Screwdrivers
  • Wrenches
  • Pliers
  • 12 and 24 AWG wire
  • Wire strippers
  • Electrical tape
  • Wire crimpers/cutters
  • Access to a 3D printer

Hardware for Adjustable Joystick:

  • 8-32 Heat-Set Threaded Insert
  • 8-32 Thumb Screw
  • ½ in. PVC tubing
  • 4 Joystick box assembly screws
  • M3, coarse thread ~15mm

Seat:

  • Seats were purchased through Amazon. We searched for Child Bicycle Seats and found products that fit our design requirements.

Electronics:

  • Adafruit Metro Mini
  • Joystick
  • Power Distribution Bus (x2)
  • Potentiometer (Optional)
  • Switch
  • Speed Controller (x2)
  • 30 Amp Breaker
  • Adafruit Perma-Proto
  • Victor SPX Motor Controller (x2)
  • OPTIONAL: Adafruit Bluefruit LE SPI Friend - Bluetooth Low Energy (BLE)

The seat you choose and how to mount it will be influenced by the needs of the child. We found that child seats designed for mounting onto pedal bicycles worked well for the kids we worked with. Some modifications to the chairs might be necessary to ensure the child and chair fit properly. We attached example pictures below from our most recent build. You will likely be attaching your new seat directly to the existing chair on the toy vehicle. We recommend drilling holes into the existing chair, then use bolts with rounded heads (for better comfort) to attach the new chair. Be sure your new modified seat can be removed so batteries can be removed and recharged.

.   “What’s Under the Hood”   .


.   Wiring Diagram   .


.   Wiring Diagram with Optional Bluetooth  .


.   Wiring Instructions  .

  1. Start by removing all original electronics except the motors. You will only end up reusing the motors, and the battery.
  2. Attach the power buses to the interior of the chair, we did this by carefully drilling into the chair and securing the buses using bolts.
  3. Wire in the motor controllers by connecting the positive and negative wires from the motors to the positive and negative from the controllers, then secure the motor controllers to the chair using velcro.

  1. Wire in the switch and breaker by connecting in line with the positive (red) wire that plugs into the battery before you attach it to the positive power bus. As highlighted in yellow.

  1. Attach the Arduino by soldering the pegs to the Arduino then soldering them to the breadboard. Please be cautious while doing this, as too much pressure and heat can damage the board. See manufacturer's guidelines for detailed information.

  1. a.) Solder in the rest of the wires to the breadboard as seen in the image below.

(See Programming section for Arduino pin functionality)

        

b.) Optional: If including Bluetooth functionality, solder as below instead

  1. Attach the complete breadboard to base. We did this by drilling holes in the breadboard, then using the pre-existing holes in the chair


  1. Attach green and yellow wires from the motor controllers to the breadboard as seen below.

  1. Solder joystick as seen below.

  1.  To aid in soldering, we would recommend tacking wires together before soldering to the potentiometer connection and limiting heat and dwell time. This component can be damaged when excessive force and/or heat are used.

  1.  Once the connections are made, use an ohm meter to measure the resistance between the center terminal and each side. These should measure approximately 5k and when the joystick position is moved to each extreme it should change from 0 to 10k.

  1.  Attach joystick (see joystick section for more information)


  1.  Wire all of the power (red) wires into one bus and wire all the ground (black) wires into the other bus. It does not matter which bus is positive or which one is negative. As long as you keep the separate.


.   Joystick Mounting   .

Introduction 

There is no single joystick mounting solution that meets every child’s needs. We have created several designs, but this manual will feature our latest adjustable joystick mounting arm that should accommodate a large number of kids. Whichever one of our designs you choose to use, you may need to edit the part file to meet the specific needs of your child. We recommend meeting with the family a few times throughout the build process - once to gather an idea of what adaptations are needed, and at least once when the new seat is mounted, to gather final measurements before final design edits and 3D printing.

Printing

We have several designs on our website ready for download. We highly recommend printing in ABS, although any material will work. No matter what material you use, print with at least 4 perimeters and top/bottom layers.

Installing Threaded Inserts (for adjustable joystick mount only)

  1. Clean out the hole for the threaded insert
  2. Preheat soldering iron to 200-250°C
  3. Place the threaded insert into the hole until it pops into place. The smaller diameter end goes into the plastic first. (see image on next page)
  4. Place soldering iron tip into the threaded insert and apply gentle pressure. Push until the insert is flush with the outside face of the part.

Pictures and video link on next page


Video Resource for Inserts

https://youtu.be/lejnvKgkwqw

Assembling the Joystick box

  1. Attach the joystick to the lid with four small black screws included with the joystick.
  2. Attach the lid to the box with four M3 screws around 15mm long. These screws thread into the plastic lid, so be sure not to overtighten.

We recommend running cables through the PVC before pushing the PVC pipe into the elbows. Note how there is a channel cut into the bottom horizontal PVC pipe for the cable. Wrapping the wires in tape around this area is recommended.


In this section we will cover:

  • Prototyping a system for software testing
  • Installing the development software
  • General code functionality
  • Troubleshooting steps

Prototyping

We recommend building a prototype robot with potentiometers and servos instead of joysticks and motors. This way you can iron out any issues with wiring or the code before you test on the actual wheelchair. The picture below is an example of a prototype.

The main board of the prototype is identical to the soldered breadboard as described in the wiring section. The other prototyping board is the one in the bottom of the picture.  

For this, we used two potentiometers to simulate the X and Y axes of the joysticks. Connect power and ground to each potentiometer, then connect the signal pin from each potentiometer to the proper input pin on the Arduino (default = A0 and A1).

To simulate the motors, we used servos. Connect each of the motor output pins (default = 10 and 11) from the Arduino to their respective servos. You will also need the servos connected to power and ground.

Installation of Software

To start you need to make sure you have all of the appropriate software installed. The project uses an Arduino so the Arduino Integrated Development Environment (IDE) will need to be installed.

  1. Download Arduino IDE here:

https://www.arduino.cc/en/Main/Software

  1. Download our code from GitHub:

https://github.com/RogueRobotics2987/GoBabyGo 

  1. Click Clone or Download
  2. Click Download ZIP and extract it to your machine
  3. Open the GoBabyGo.ino File, the Arduino IDE should open automatically.

Once the Arduino IDE is installed then you will need to upload the code to the Arduino Nano Microcontroller.

  1. Connect a USB from the computer to the Arduino
  2. In the Arduino IDE, choose the correct board in tools -> board -> Arduino Nano (or your alternative board)
  3. In Tools -> Port -> select the serial port the USB is plugged into on the computer
  4. Click the Upload Button

General Functionality

Most likely, modifications need to be made to the code if you aren’t using exactly the same hardware as we are. This section gives an outline of the main parts of the code that you might need to modify.  We will go through the code linearly from top to bottom.

Motor Inversions

boolean INVERT_1 = true;

boolean INVERT_2 = true;

If you notice that one or both of your motors are spinning in opposite directions, you can change one or both of these variables to false. INVERT_1 will invert Motor 1 and INVERT_2 will invert Motor 2. If you can’t quite get it to work properly, you may need to invert the joysticks. This is described in the Pins section.

Constants

int SPEED_LIMIT = 256;

The SPEED_LIMIT constant sets the maximum speed for the motors. You can think of it as a percentage - the max is 512, so the default 256 will result in 256/512 = .5 or 50%. This means the maximum speed of the motors will be 50% of the maximum output of the motor controllers.

int DEADBAND = 60;

int RAMPING = 1;

int REVERSE_PULSE    = 1000;

int FORWARD_PULSE    = 2000;

The DEADBAND constant is the minimum position value that the joystick must overcome to send an output to the motors. Increase this value if you want a larger deadzone, decrease if you want a smaller deadzone.

The RAMPING constant determines the additional speed the motors will get when the joystick is held at a constant position.

The REVERSE_PULSE and FORWARD_PULSE constants are specific to each motor controller. The default values are for the Talon SR.  If you are using another motor controller, you may need to adjust these to have proper speed and direction.

Pins

Default values:

int JOYSTICK_X = A0;

int JOYSTICK_Y = A1;

int MOTOR_1    = 10;

int MOTOR_2    = 11;

int SPEED_POT  = A3;

int turnPin = 4; // ch1

int throttlePin = 5; // ch2

int togglePin = 3; // ch3

int invertStickX = -1;

int invertStickY = 1;

Another way to invert the direction of the motors is to invert the input from the joystick.  To do this, change the value of invertStickX or invertStickY to 1 for no inversion, or to -1 for inversion.

At this point in the code, you will notice the line

// -----Don't Mess With Anything Past This Line-----

This line of code should be pretty understandable, but just in case - you shouldn’t mess with anything past this point.

Arduino

115200 baud

Troubleshooting with the Joystick

If your joystick is not working properly you are going to need to adjust the potentiometers on it. Before you do that you will need to make sure that your code is in debugger mode.

boolean DEBUG = true;

After you confirm that you are in debugging mode, pull up the