MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


SphereBot - Full Project

by BorisLandoni Dec 11, 2013
Download All Files

Thing Apps Enabled

Please Login to Comment

Comments deleted.

Does anyone have the BoM for this project? BoM = A bill of materials or product structure (sometimes bill of material, BOM or associated list) is a list of the raw materials, sub-assemblies, intermediate assemblies, sub-components, parts and the quantities of each needed to manufacture an end product. A BOM may be used for communication between manufacturing partners, or confined to a single manufacturing plant. A bill of materials is often tied to a production order whose issuance may generate reservations for components in the bill of materials that are in stock and requisitions for components that are not in stock.

Unlike a conventional CNC, this setup has a lot of room for customizing. The BOM for this project can easily be modified and interchanged to suit ones needs. Building this is the easy part, it's the software and firmware that needs more establishment. But to answer your question, you can find a BOM here... http://www.open-electronics.org/spherebot-reloaded-customize-your-xmas/

thanks, you link really did not help at all. This is more what I was looking for...

Note * to anyone else reading. I cannot confirm this list to be fully accurate I found this list on similar "eggbot" site
2x 623 bearing
Threaded steel rod (3mmØ,80mm length) (not shown on the photo above)
1x compression spring (4,5mmØ, 10 mm length)
2x 1.8deg HIGH QUALITY NEMA 17 Stepper motors (40mm length) (4.4Kg/cm torque)
Motor cables (14+70 cms long)
USB cable (to program the Arduino)
1x SG90 servo
Arduino Leonardo compatible
B-robot Brain Shield
2x A4988 Stepper motor drivers
Power supply 12v/2A
2x 6mm M3 bolts
14x 16mm M3 bolts
4x M3 nuts
2x 20mm Suction Cups (to keep the egg/sphere tight in place)
1x M3 wingnut
1x Sharpie pen

Sorry, I did not realize you needed LEGO-type instructions. Hopefully your "somewhat accurate" list helps more than I did. Good luck ;)

End_Plate_Bigger_Higher2 - need to order two (2)
Idler_Bearing_Plate - neeed to order two (2)
What is that red part that hold the egg ?

Does anyone know an existing detailed mechanical parts list or BOM with part numbers/sizes?

Is it possible to run this unit using Arduino Mega and RAMPS, without modifying the Arduino sketch?

I would love to build one of these but my printer is limited to 120³ How could this be modified to reduce the 140mm but still function?

I can't seem to find anywhere on what size bearings are used for this?

NVM, went back to the original this was modeled after. 608ZZ if anyone else is wondering...

How long are the M8 rods?
How long are the springs?

I found that 30cm for the three longer rods works out.

I have made this and almost have it printing, I am running the uno with 4988 drivers, I have everything working but the servo goes up on M300 S30 and down on M300 S50, can figure out how to reverse it.

Comments deleted.

I have built one of these, and it is way cool!! :)
one suggestion would be to raise the stepper motor for the pen to the same height as the rotation stepper. It would help with up down travel on spheres. With It sitting lower, the pen must travel farther to reach the sphere when it is close to the end.. Great Job!!

I have Problems with my serial line. I get errors which ruin every longer print.There a version of the Arduino FW which actually use the checksums and LineNumbers. I tried to hack the SphereBotUI and it seems to work (havn't implemented the resend) BUT after approx 300 lines the SphereBotUI.exe crashes.... I guess I FUBARed it whith my poking and converting QStrings to char* and whatever (I am a Python/PHP dev, no clue about cpp/QT). Any help welcome.

The interesting Part:

QString tmp;
char* cm;
if(lineCounter <= lineMax)
    tmp = QString ("N%1 ").arg(lineCounter+1);
            ignoreFirstM01 = false;
            emit layerTransmitted();
    cm = new char[tmp.toLocal8Bit().size()];
    // checksum code from reprap wiki
    unsigned short cs = 0;
    int j = 0;
    for(j = 0; cm[j] != '*' && cm[j] != NULL; j++)
    cs = cs ^ cm[j];
    cs &= 0xff;  // Defensive programming...
    tmp.append(QString ("*%1").arg(cs));

Use the controller and arduino firmware from thunderbug.. Boris has a link to it in the about section of this thing.. If you send information too quickly, the arduino runs out of buffer space. Thunderbugs firmware uses checksums and responds ok to commands that have been processed. Don't send commands until ok is received.

Yes, all the info is very scattered around.... unfortunately the checksum version did not solve my problem. I suspect a bad servo now as the source of my problems, brown out the arduino or something. This was the most prominent change I did since my first experiments which were not showing this bug ;-) Anyway its near easter and I think I will did a bit more into the next days.

I had a problem with servos over powering the board.. This is how I fixed it. It uses a 7805 regulator from radio shack to convert input power to 5 volts.. Works like a charm.

Yes. Thanks. I will try a similar aproach.


I have Spherebot printed and made ??with my Prusa Mendel

Now I have a question, I use Spherebot ui.exe, everything works perfectly manually
but now I would like to have a calibrate test file in Gcode

Who give a calibrating Gcode file that I can use to work as it should (something like a circle or square or text .....??)
Full step and quarter step as it can be
Micro Step Resolution = Full step or and quarter step
Egg = 6cm long and 42mm diameter

The final stop should be to the left or right are ( i think left ???)
Kind Regards

Hello Boris i've found an error in the "Pen_Arm_Pivot_springy.stl" and i'm not able to print the object, the same thing append with the skp converted can you fix it? E' possibile scrivere in italianno on questo spazio?

I've fond the bug is an half circle inside the structure that cause problemsin the slicing. I've cancelled it with a cad program ad re-converted in stl.

Hello Boris

How can I set the stepper motors so that they proceed exactly 20mm.

Have a square painted and found 20 x 20 mm on a ball that rotates the stepper motor for the pen holder only 18mm and the stepper motor for rotating the ball rotates only 16mm. Even with fonts and circles, it does not fit.

Thank you for your response.


Hi probably you have to change the limits in the sketch. I don't found this problem

Hi Boris, I want to ask you if there's a kit available to buy. Thanks.

There are the printed parts available on ebay.

Hi Bernd and all the others with the

Now I have a new error.

SoftwareServo.cpp: In member function 'uint8_t Software Servo :: attach (int)':
SoftwareServo.cpp: 27: error: 'digitalWrite' was not a declared in this scope



In SoftwareServo.h, This: #include <wprogram.h>
Needs replacing with:#include "Arduino.h"</wprogram.h>

Hi Boris,

I guess I oversee something :) - I am looking for a BOM for this machine, but was not successful yet. For sure I can guess most of the mechanical parts (not the printed ones) but it would help a lot if there would be a BOM. Especially the red "whatever" which keeps the egg/ball in place I am not sure where you got it from. Looks like the end of a toy arrow...


Hello Boris

I think I'm too stupid for Arduino library.
That with the library I figure it not at all.
In my RepRap 3D printer PRotos everything worked right away.
But simply add a new library, I do not get. Something I'll always wrong.
Can you help me please. Thank you. Thank you.

LG. Bernd

Under Spherebot3Drag.zip you find all file you need to compile the Arduino sketch. Install the library and use these file.

Hello Boris

Now I have a new error.

SoftwareServo.cpp: In member function 'uint8_t Software Servo :: attach (int)':
SoftwareServo.cpp: 27: error: 'digitalWrite' was not a declared in this scope
SoftwareServo.cpp: 28: error: 'OUTPUT' was not a declared in this scope
SoftwareServo.cpp: 28: error: 'pinMode' was not a declared in this scope
SoftwareServo.cpp: In member function 'void Software Servo :: write (int)':
SoftwareServo.cpp: 51: error: 'clockCyclesPerMicrosecond' what not-declared in this scope
SoftwareServo.cpp: In static member function 'static void Software Servo :: refresh ()':
SoftwareServo.cpp: 73: error: 'millis' was not a declared in this scope
SoftwareServo.cpp: 106: error: 'digitalWrite' was not a declared in this scope
SoftwareServo.cpp: 108: error: 'TCNT0' what not-declared in this scope
SoftwareServo.cpp: 123: error: 'digitalWrite' was not a declared in this scope

I'm desperate. Can you please help me

Thank you very much right. Bernd

Hello Boris

Have done everything as in "http://www.open-electronics.org/spherebot-reloaded-customize-your-xmas/http://www.open-electronics.or..."

But can the firmware does not play on the Arduino, always get the same error.

("StepperModel does not name a type".)

Haveyou add the library?

Hi Boris,
I've downloaded all the files, even Inkscape. But I can MakerBot Unicorn the G-code is not in the extensions
Install. Do not go on, can you help me maybe.
Thank you

I need help with the software for this Thing. How, specifically, do i get it setup?

Have you tried this with just a sanguinololu? How about just a motor driver and an Arduino?

Hi, Probably with Sanguinololu works without problem.
Could be a good solution an Arduino and a stepper shield.
On Open-electronics we sell this one

adn this one has also the pin for servomotors

nice summary ;)

I´m just curious which changes to the firmware were necessary to make it compatible with the latest Arduino IDE?

Hi,just change the include, I insert Arduino.h.
Then I changed the movement of the servo to make it slower.

great project! great write up, thx again!!