Popsicle Stick Robotic Arm
Here's how to build a simple robotic arm with a gripper using popsicle sticks, an Arduino, and a few servos.
Supplies
Feel free to use similar materials or whatever you already have. (e.g. cardboard instead of popsicle sticks)
Materials:
- 14 Popsicle Sticks
- 4 Micro Servos (with their horns and screws)
- 4 Rotary Potentiometers
- 1 Half Size Breadboard
- 1 Arduino Uno
- 1 6-Volt Battery Pack
- 26 Jumper Cables
Tools:
- Hot Glue Gun + Hot Glue Sticks
- Precision screwdriver or other small screwdriver
- Arduino IDE
- USB to Arduino Cable
Choose Horns for Your Servos
Materials for This Step:
- 4 Micro Servos
- 3 Horns that extend in 2 directions
- 1 Horn that extends in 1 direction
Instructions:
Attach the horns (white wing attachments) to the servos. Three of the servos need the horn that extends in two directions while one servo will need the horn that extends in just one direction. Simply pop the horns onto the top of the servos.
Calibrate the Servos
Materials for This Step:
- 4 Micro Servos
Instructions:
Turn the horn counter-clockwise as far as possible. Then, pop the horn off and back on at the calibrated position.
One of the servos with the double-direction horns needs to be calibrated parallel to the servo while the other three need to be calibrated perpendicular to the servos.
Above is a picture of the calibrated servos turned fully counterclockwise. These are the calibrated positions.
Why calibrate the servos? Servos only move 180 degrees so it's important that we calibrate the servos so that the servo turns between the angles we want therm to.
Screw in the Servos
Materials for This Step:
- 4 Micro Servos
- 4 Small Screws
- Precision screwdriver or other small screwdriver
Instructions:
Screw the horns in using a small screw and the appropriate screwdriver.
Attach Popsicle Sticks to Servos (pt 1/4)
Materials for This Step:
- The one servo that was calibrated so the horn is parallel to the servo
- 1 Popsicle Stick
- Hot Glue Gun
Instructions:
For the servo that was calibrated so the horn is parallel to the servo, hot glue one end of the popsicle stick to the flat side of the horn.
Above is a picture of this servo turned completely counterclockwise.
Attach Popsicle Sticks to Servos (pt 2/4)
Materials for This Step:
- One of the other two servos that have double-direction horns
- 1 Popsicle Stick
- Hot Glue Gun
Instructions:
Glue one end of the popsicle stick to the flat side of the servo's horn.
Above is a picture of this servo turned completely counterclockwise.
Attach Popsicle Sticks to Servos (pt 3/4)
Materials for This Step:
- The last servo that has a double-direction horn
- 1 Popsicle Stick
- Hot Glue Gun
Instructions:
For the other servo, glue the middle of the popsicle stick to the flat side of the horn.
Above is a picture of this servo turned completely counterclockwise.
Attach Popsicle Sticks to Servos (pt 4/4)
This step is different. Read carefully!
Materials for This Step:
- The one servo with the single-direction horn
- 1 Popsicle Stick
- Hot Glue Gun
Instructions:
Glue one end of a popsicle stick to the thin clockwise side of the horn. Yes, the popsicle stick is "sideways" compared to the previous step. This may be a little tricky to glue.
Above is a picture of this servo turned completely counterclockwise.
Create a Base for One Servo
Materials for This Step:
- The single servo that's calibrated so the horn is parallel to the servo
- 4 Popsicle sticks
- Hot Glue Gun
Instructions:
Hot glue four popsicle sticks so that they're stacked on top of each other. Tear off any excess glue on the edges.
Then, glue the bottom of the servo to the center of the continuous flat side of the popsicle stick stack. Tear off any excess glue.
Build the Base for the Whole Robot!
Materials for This Step:
- 6 Popsicle Sticks
- Hot Glue Gun
Instructions:
Lay 3 popsicle sticks down in one direction. Then lay 3 popsicle sticks in the other perpendicular using hot glue to connect everything.
Connect the First Servo
Materials for This Step:
- The single servo with the middle of the popsicle stick glued onto the servo
- Hot Glue Gun
- The Base for The Whole Robot from the last step
Instructions:
Glue the bottom of the servo onto the base.
Attach the Second Servo
Materials for This Step:
- The servo with the stack of popsicle sticks attached to the base
- The structure from the last step
- Hot Glue Gun
Instructions:
Orient the servo sideways so that the popsicle stick can rotate upwards in the air.
Glue the bottom facing edge of the popsicle stick stack to the existing structure. (see picture)
Attach the Third Servo
Materials for This Step:
- The last servo with the double direction horn
- The structure from the last step
- Hot Glue Gun
Instructions:
Glue the servo to the end of the existing structure's protruding popsicle stick so that the servo's popsicle stick rotates away from the center of the robot
Attach the Last Servo! (Gripper)
Materials for This Step:
- The last servo
- The structure from the last step
- Hot Glue Gun
Instructions:
Glue the large flat side (as opposed to the bottom of the servo used in previous steps) to the close side of the last servo's popsicle stick so that this servo's popsicle stick rotates in the same area as the last servo's popsicle stick.
When gluing, make sure to angle the servo so that when the servo is rotated about halfway, the two popsicle sticks touch at the very tip.
Above is a picture of an open and closed gripper.
Assemble the Circuit!
Materials for This Step:
- 1 Half size breadboard
- 1 Arduino Uno or equivalent microcontroller
- 26 Jumper cables
- 1 6-Volt battery pack (6 volts max)
Instructions:
Replicate the diagram given above!
Upload the Code!
Materials for This Step:
- Arduino IDE
- USB to Arduino Cable
Instructions:
Upload the following code to your arduino using the USB cable:
#include <Servo.h> Servo servo1; // Servos Servo servo2; Servo servo3; Servo servo4; const int pot1 = A0; // Attach potentimeters const int pot2 = A1; const int pot3 = A2; const int pot4 = A3; void setup() { // Set up everything and will run once servo1.attach(6); // Attach servos and define the pin modes servo2.attach(9); servo3.attach(10); servo4.attach(11); Serial.begin(9600); // Begin the arduino/loop } void loop() { // put your main code here, to run repeatedly: int pot1Value = analogRead(pot1); // Read the values of the potentiometers int pot2Value = analogRead(pot2); int pot3Value = analogRead(pot3); int pot4Value = analogRead(pot4); int pot1Angle = map(pot1Value, 0, 1023, 0, 179); // Map the values of potentiometers (0-1023) to angles that the servo can read (0-179 degrees) int pot2Angle = map(pot2Value, 0, 1023, 0, 179); int pot3Angle = map(pot3Value, 0, 1023, 0, 179); int pot4Angle = map(pot4Value, 0, 1023, 0, 179); servo1.write(pot1Angle); // Make the servos move to the mapped angles servo2.write(pot2Angle); servo3.write(pot3Angle); servo4.write(pot4Angle); }
Downloads
We're Done!
Turn the potentiometers to control the robot!
Troubleshooting
It isn't moving!
Make sure the battery pack is on and the Arduino is plugged in.
Double check the circuit to make sure everything is correct and plugged in.
A servo isn't working
First, try hitting the reset button on your Arduino. Sometimes a servo might stop working if we push it too far.
The servo may simply be dead, try plugging the circuitry for that servo into another servo and see if the new servo works.
If it doesn't, the problem lies within your circuitry.
Servos are jittery!
Your servo simply may be jittery.
The servo may be bearing too much weight.
Try adding a capacitor to the power wiring for the servos.