Introduction: Flex Bot
Use this instructable to make a 4 wheel drive robot chassis that is controlled by YOUR muscles!
Step 1: The Story
We are two juniors from Irvington High School taking Principles of Engineering, a PLTW class. Our teacher, Ms. Berbawy, gave us the opportunity to choose a SIDE Project that would be displayed at Maker Faire Bay Area. We ended up finding a website called "Backyard Brains"(https://backyardbrains.com), which helped us develop the idea of using a muscle flex to move a motor. Our teacher supplied us with the Arduino microcontroller, EMG muscle sensor, vex equipment, jumper wires, and batteries. We then applied our previous programming and robotics skills (learned through competitive robotics and internship experience) to design a chassis which we control using our muscles! This project, as we saw after research online, had not really been done by anyone before, which means we had to create everything from scratch! This involved a lot of testing, modifying, and retesting, but seeing our final project work in the end was worth it.
Step 2: Basic Description
Our project is essentially a 4 wheel, 4 motor robot chassis that is controlled using an Arduino microcontroller. Attached to the Arduino is an EMG muscle sensor that transmits muscle voltage data to an analog port of the Arduino. Several digital pins and the ground/5 volt pins of the Arduino are connected to a breadboard on top of the chassis, powering 4 motors and sending them data signals.
Overall, when one flexs, the variance in voltage recorded by the EMG sensor signals a digital port to send a data to the data pin of the motor controller, which ends up turning on the motor. Additionally, we have two buttons connected to the analog pins of our Arduino. When the buttons are pressed, current is sent to the analog pins, and when these analog pins register the current input, the motors turn in different directions to allow the chassis to go forward, backwards, left, or right.
Below are essentials to buy for this project:
- 9 VOLT BATTERIES (you will need a lot as these batteries die in about 30 minutes due to the large amount of current 4 VEX motors use):
Step 3: Step 1: the Drive
To create this chassis, you can use any hardware/motors,although VEX hardware, VEX Version 4 Motors, and VEX motor controllers are recommended. While building this chassis, you must take into account the space needed to put a breadboard, Arduino microcontroller, batteries, and switches onto the top of the chassis. Additionally, the motors used must have PWM capability. For the purposes of this project, this essentially means that the motor must have a positive pin, negative pin, and data pin.Continuous Servo Motors or DC motors with motor controllers both have PWM capability.
Besides the above information, this chassis can be completely customized to your wishes as long as it has a 4 wheel drive!
Here are some extra things to keep in mind while building the chassis (all these things can be seen on the attached chassis pictures also!):
1) each axle must be supported at two points to avoid bending
2) The wheel should not directly touch the side of the chassis (there must be a small gap, which can be achieved through using spacers) this reduces friction that slows down the speed of the wheel when turning
3) Use axle hubs on the other side of the wheel (facing away from the chassis) to secure the wheel to the chassis
Step 4: Step 2: Circuitry
* Note, for the creation of the circuit for this project, we HIGHLY recommend using solid/pre-bent breadboard wire as it is much cleaner/easier to understand while checking the circuit for errors, which will most likely happen. For an example of using solid wire, please see the introductory pictures of this project. *
This project uses a breadboard for the following reasons:
- to give voltage to the several motors being controlled
- to send data signals to the motor controllers of the motor
- to receive data signals from the buttons
- to provide voltage to the EMG sensor
- to receive data signals from the EMG sensor
Please see the TinkerCAD circuit picture attached for reference.
Here are some steps to understand how the TinkerCADcircuitry corresponds to the actual circuitry we made/used:
The yellow wires represent "data" wires, which essentially send the signals to the motor controller prompting the motor to turn.
The black wires represent the negative, or "ground" wire. One important note is that all motors/ components must be connected to a negative ground wire to be controlled by the Arduino.
The red wires represent the positive wire. The positive and negative wires must be in the circuit for it to work.
Step 5: Step 3: the Coding
This is the hardest part of the project to understand. Our program requires use of the Arduino IDE, which can be downloaded at the Arduino website.The Arduino online editor can be used instead of the downloaded IDE if preferable.
Once this IDE is downloaded/ready to use, and the program we have made is downloaded into the IDE, then all you have to do is upload the code into the Arduino, and the software aspect of this project is done!
Note - the ZIP file for this project's code is attached below.
Essentially, our program reads the voltage values at a continuous rate, and if the voltage values are outside a certain range (which indicates a flex), then a data signal is sent to the motor controller of the motor, prompting the motor to turn. Additionally, if either, or both of the buttons are pressed, then the individual motors turn in different directions, allowing the robot to move forward, backwards, and turn in both directions.
Step 6: Step 4:Celebrate!
After doing the previous three steps (building the chassis and circuit, as well as downloading the code), you are done! All you have to do now is attach the 9 volt batteries to the breadboard rails (2 9 Volt batteries), a 9 volt battery to the Arduino microcontroller, and you are set. Put the muscle sensor on your bicep, turn on the Arduino, and FLEX! Remember, pressing the buttons will allow you to move the chassis left, right, and back also!
Attached is a video to see this project in action!