Introduction: 3D Printed Arduino Controlled Eggbot/Spherepot

About: I am a physics student at Wheaton College who likes building interesting physics demos and other stuff that I think is awesome!

First off this project was a combination of of two great online resources. I had been looking into building an eggbot for a while and since I had a lot of ping pong balls on hand after one of my other videos the time was right for making my SphereBot that could write on ping pong balls. After doing some research online I found that there were already some brilliant designs out there. The 3D printed design came from Glasswalker's page on thingverse ( and the Arduino schematic and setup came from a page on Pleasant Software's blog ( I simply put these two designs and will document my building experience of a (mostly) 3D printed SphereBot in this instructable.

Step 1: Materials

This is what I used to build the SphereBot. I substituted wood in for the two side pieces but those parts can also be 3D printed as well. Sorry I forgot to stage a nice materials picture at the beginning...

- foot threaded rod
- Bolts that fit the threaded rod
- A sheet of thin craft wood (if you aren't 3D printing the sides)
- Sharpie
- Hobby King 5v stepper motor
- Ardunio uno
- Bread Board
- 2x Polulu A4983 stepper motor drivers
- 2x CanaKit stepper motors (
- Jumper wires
- 12V DC power supply
- Skateboard Bearing
- Computer with arduino firmware
- USB cable (to connect the arduino to the computer)
- Super glue
- Nerf Darts
-Ping Pong Balls (or eggs)
- M3 machine bolts, washers and nuts
- A Never Give Up Attitude!

- Dremel (to cut the threaded rod)
- Drill (if you use wooden side pieces) 

Step 2: 3D Printing the Parts

Once you download the files from Glasswalkers thingverse: ( It is just a matter of configuring your printer settings and fabricating the parts. I used a replicator 2 and blue PLA. However settings for 3D printers vary a lot across the board even for the same model so do some experimenting before you print all of the parts. For the record these are the settings that I used.

I used makerware medium settings as follows:
-infill: 15%
-Layer height: .25
-Number of shells: 1
-Feed rate: 80
-Travel feed rate: 150
-Print temperature: 230

Step 3: Hardware Assembly

The first step is cutting the threaded rod. I cut mine into three foot long sections and then used the left overs for the part that connects to the nerf dart. Once the threaded rod was cut I assembled the pen arm that holds the stepper motor and attached it to the middle plate for the stepper motor. Then I centered the wooden sides around the pen arm. Finally I glued in the skateboard bearing in place and added the spring to keep pressure on the ping pong balls. Overall the assembly is pretty straight forward once you have the parts from the 3D printer. The most important thing to to make sure that the stepper motor that will turn the ping pong ball is centered with the spring loaded piece of the threaded rod that rests on the skateboard bearing so it can turn freely with the stepper motor (if you are using 3D printed sies this isn't really a problem...). 

Step 4: Configuring the Arduino

This circuit diagram comes directly from Pleasant Software's blog ( I had to do some experimenting to figure out which wires were which on my stepper motors but there are plenty of tutorials for how to do that online. On my bread board there is a third motor driver that is not being used (I forgot to remove it for the picture). Anyway if you follow the blog this part should be pretty straight forward. Just make sure that you have a 12V DC power supply connected to the positive and negative rails. 

Step 5: Configuring the Software

The software setup came directly from Pleasant Software's blog ( However because of newer versions of Arduino some changes have to be made to the original blog post instructions. 

My First Step: Hit Up GitHub for some files:
I downloaded the zip from the sphere bot files: (
This zip-file basically is three files:

The main file (SphereBot.pde) requires two libraries that I proceeded to download from the provided links:

- I copied the folder from the zip file (SoftwareServo) to the arduino libraries folder
- The SoftwareServo.h file needed to be updated…
- I opened it in x-Code and chanced the Wprogram.h to Arduino.h

- I copied the folder TimerOne into the arduino Libraries folder
- When the zip-file was unzipped the TimerOne had -78 on it so I renamed it first before copying it into the libraries folder

Next Step: Change up some stuff to get rid of errors
The StepperModel.ccp needs to be adjusted… the Wprogram.h needs to be changed to Arduino.h

Now Gettting the sketch to compile
-Go into Sketch and add file… I made a separate folder for StepperMotor and then added both files to the sketch. This made everything work well.

Other than those changes you can directly follow the instructions on the blog post.

Step 6: Putting It All Together

You might have to do some experimenting to get your stepper motor's working properly. A great wiki for using inkscape with EggBot type creations can be found here: ( Other than figuring out how to use hatchings in inkscape running it is pretty straight forward!

3D Printing Contest

Second Prize in the
3D Printing Contest

Arduino Contest

Finalist in the
Arduino Contest

Epilog Challenge V

Participated in the
Epilog Challenge V