2016-04-01 Modify:

Correct the Battery model name and dimension.

2016-01-24 update:

Open the PCB source file which is designed by EaglePCB, https://github.com/regishsu/SpiderRobot

2015-10-11 upload the PCB layout image file.

2015-10-04 update:

Step 2: schematic pdf file - spider_2015-10-04-open-v2.pdf

Step 10: picture 1.

2015-11-19 update:

Upload the Arduino sketch file which is "special dance" included(step13). Someone who are asking about it, they are interested in it. :-)


This is my first project for the 4 legs robot and it took me about 1 year development.

It is a robot that relies on calculations to position servos and pre-programmed sequences of legs.

I'm doing this by handmade way is because of it could be fun and educational for 3D design/printing and robot control.

This is the fourth generation of my design, you can take a look here if you are interested the history.


2 more projects sharing -

Spider Robot simulator by vPython


Remote control by bluetooth


Building this project is fun, however, it should take you more time and patient to implement.

If it is a hard job to you, the product comes from Sunfounder might a good choice.


Before going to next step, please aware that the soldering tools and 3D printer will be used in this project.

Let's get start and have fun!

Step 1: Electrics Parts preparation

Here are the parts:

1x Arduino Pro Mini

1x DC-DC(12-5v/3A output)

1x HC-06 Bluetooth module(option)

12x SG90 servo(3DOF for 4 legs)

1x 3000mhA Li battery (DC12300, 90x43x17mm)

1x 12V Jack

1x 680 Ohm 1/4 watt 5% Resistor

1x 3mm Blue LED

1x Tactile Switch

1x 5x7cm perfboard

Some male and female pin headers

Small guage wire(Solid or Stranded)

I believe that these parts are most popular and not expensive. They are just cost me about 2,000 Taiwan dollar.

Step 2: Make the main-board


upload the PCB layout image file, you should download the zip file would be better.

You can come here for more information about PCB DIY. http://regishsu.blogspot.tw/search/label/0.SpiderR...


Refer to the schematics file, and place all components like the pictures. you can make the board as small as passable.

The main-board that the last one picture is the newest version, just for you reference.

Here are some tips while you are going to building the PCB:

1. Be sure the output voltage of DC-DC module should be 5v before mount to the perfboard.

2. The servos consume a lot of power, almost 3A in full loading condition. Please use more thick wire for "power" and ground" traces.

3. Do the "open/short" test with the multi-meter for your PCB when you finish the soldering, that is the important process.

4. Using the female pin header instead of solder the modules(Arduino, DC-DC) on the perfboard directly

5. The LED will be on while the "Switch" turns off. Why I design this way is because I would like to check the power source is ok or not when I plug in the power source like battery or something else, it is a simple way for protection..

6. While you see the LED turns on after connect the 12v battery to the board, congratulation!

Step 3: Test the main-board

Test process:

1. Don't plug the DC-DC and Arduino Pro Mini into the main-board

2. connect the battery to the 12v-Jack of main-board

3. Check the LED, if LED turns on, that is a good start.

4. Push the POWER-Switch, the LED should be off.

4. Using the multi-meter to check all of +5V and GND pins are correct

5. Push the POWER-Switch back to turn off the power, the LED turns on

6. Plug the DC-DC and Arduino Pro Mini into the main-board

7. Push the POWER-Switch, the LED turns off, but the LED of Arduino Pro Mini turns on

Then power off, and connect a servo to the first row of Leg1 connectors of main-board(pin2 of Arduino)

upload the "servo_test" code to Arduino and you will see the servo sweeps from 0 - 180 degree.

If you are here without any problem, that is a great progress!

servo_test source code:

Step 4: Building the mechanical parts - Download 3D STL files

This step is going to build the robot mechanical parts, you can print the parts by yourself or ask someone who has 3D printer to help you.

I also open the 3D model design which is design by Sketchup Make version and you can modify it with your great idea.

Download the STL file from http://www.thingiverse.com/thing:1009659

Print parts list:
1x body_d.stl

1x body_u.stl

2x coxa_l.stl

2x coxa_r.stl

2x tibia_l.stl

2x tibia_r.stl

4x femur_1.stl

8x s_hold.stl

Step 5: 3D objects printing

And print them out by your 3D printer.

Please check the configuration of 3D printer before start to print because of it will take a long time about 7~8 hours to print them all. Be patient~~~~

I suggest set the fill density to 35% to get legs structure stronger.

you can print these parts separate by color group.

Step 6: Preparing to assemable

tear down the parts and check the objects printing quality, and using the sandpaper to polish the surface to make it looks good.

Refer to here to get more information: http://regishsu.blogspot.tw/2015/07/robot-quadruped-robot-re-design-3-round.html

Step 7: Assemble the body

Put the battery between the upper body case and lower body case with 4 screws(M3x25mm)

Step 8: Assemble the leg

And, install all of servos with legs parts, one leg comes with 3 servos and 4 screws(M1.6x3mm, or glue it anyway)

Notes: 1. Connect to all parts with screws and servos, but do not install the servo rocker arm in this step 2. Be sure the leg direction, refer to the picture 1 Refer to here to get more information:http://regishsu.blogspot.tw/2015/07/robot-quadrupe...

Step 9: Integrate 4 legs to body

connect all of legs to the body, and check all servos and joints are move smoothly.

Step 10: Connect servos to the main-board


update the picture1 which is wrong pin assignment.


Place the main-board onto the body-case and use the polymer clay to fix it.

And then, refer to the picture, follow the pin number which mark by pink color to connect all servo wire to the main-board, and green color is present the signal direction of servo wire, yellow connect to "S", red to "+", brown to "-".

Be sure the servo of legs should match the pin number of main-board and leg direction, otherwise, the legs will get crazy...

Step 11: Locate the initial position for legs

This is an important procedure, the install procedure:

1. upload the "legs_init" code to Arduino to activate the servos

2. place the legs as the position shows the picture 1, and install the servo rocker arm with screws.

3. tighten all of the screw

legs_init source code:

Step 12: Organize the wires

Then, organize the wires of the servos to make it great looking.

Now, all of hardware installation was finished.

Step 13: It is showtime!!

It is excited to go this step.

Let's upload the "spider_open_v1" code to Arduino to make it moves!

you will see the action as following

1. stand up, wait 2 sec

2. step forward 5 steps, wait 2 sec

3. backward 5 steps, wait 2 sec

4. turn right, wait 2 sec

5. turn left, wait 2 sec

6. wave the hand,, wait 2 sec

7. shake the hand, wait 2 sec

8. sit down, wait 2 sec

9. back to 1


spider_open_v1 source code:

Step 14: Do something special

you can add more special feature like change the move speed dynamically with remote control, that will let your robot more attractive.

Welcome to share the funny gaits or movement.

The remote control


Here are some idea share with you in my blog.



Add the IR-detector to detect the obstacle.



handmade the PCB



<p>help!!! </p><p>C:\Users\usuario\Pictures\spider bot\spider_open_v3\spider_open_v3.ino:30:63: fatal error: FlexiTimer2.h: No such file or directory</p><p> #include &lt;FlexiTimer2.h&gt; //to set a timer to manage all servos</p><p> ^</p><p>compilation terminated.</p><p>exit status 1</p><p>Error compilaci&oacute;n en tarjeta Arduino Nano.</p>
use arduino uno
<p>What do I use to upload the code to the arduino pro mini?</p>
using hc06/05 by wireless way, or USB2uart cable. you can google to get more information. the key word as &quot;arduino pro mini upload&quot;
<br>Thank you for sharing the project. I redraw for nano PCB.<br><br><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/87nNW4DgTBc" width="560"></iframe>
<p>Can i use Ardunino Uno Board to make this Robot ? is the code Working in Ardunino Uno Board ? Thx !</p>
I don't understand which line should I uncommented frist in spider_open_v3 pls tell me
<p>what are you want to do for this code?</p>
<p>how use the hc05 in this proyect?</p><p>you send me the code of the spider legs for the remote control with bluetooth please? is the only i need to complete my robot</p>
please refer to this https://github.com/rwaldron/johnny-five/wiki/Getting-Started-with-Johnny-Five-and-HC-05-Bluetooth-Serial-Port-Module
<p>only to set it as a slave and connect as hc 06 I can start controlling my spider? or I to edit the code for that? the code is the legs_init ? please , it's my first project of this type</p><p>thanks por answer :D</p>
<p>yes, the HC-05 needs set as slave mode. You don't need modify the Arduino code except you change the baudrate.</p>
<p>i burn my hc 05 :c buy another but I'm afraid to burn , the rx works and arduino 3.3 gives 5v</p>
<p>please send out the hc-05 picture and spec.</p>
<p>@<a href="http://www.instructables.com/member/RegisHsu" rel="nofollow">RegisHsu</a></p><p>Can you tell me where exactly their lengths are ?</p><p>const float z_absolute = -28; <br>const float z_default = -50; <br>const float z_up = -30; <br>const float z_boot = z_absolute;<br>const float x_default =62;<br>const float x_offset = 0;<br>const float y_start = 0; <br>const float y_step = 40;</p>
<p>and why you make lengths = 0 and later you subtract this lengths.</p><p>Why you make fuctions: polar_to_servo, cartesian_to_polar, wait_reach, wait_all_reach?</p><p>How it working function set_site</p>
i am using the interrupt way tp control the servos, those functions are calculate the position to angle and move the lags
<p>const float z_absolute = the dist between end of leg and bottom of body </p><p>const float z_default = the hight of stand up; </p><p>const float z_up = the hight of raise the leg <br>const float x_default =body lenght<br>const float y_step = the dist of 1 step ahead</p>
<p>@RegisHsu</p><p>what is KEEP length ?</p>
it means stay the same position. ex, (x,y,keep) means z axis doesnt change
Hi regishsu n thanks fr the tutorial on quadruped bot..... I also lv to make robots but I m beginner.....so can u pls send me the code for ir remote control spider bot pls....
i am using bluetooth for remote control, it is very easy that send the commamd from pc or smartphone.
Hi can u pls help me their was an error while compiling the main sketch and pls tell me why it happen
what error have you got?
<p>@RegisHsu</p><p>許幫我,我使用Arduino的nano和BT HC05。為什麼當上傳編碼不響應?</p>
may I know more your question in detail? <br>anyway, some of direction for you reference<br>1. check the baudrate of HC05, it need config as 57600.(the default is 9600)<br>2. check the TX/RX between with Arduino and HC05.<br>
<p>Hi RegisHsu!<br><br>This is an amazing project.<br><br>I am having trouble corresponding the schematic to the pictures and instructions.<br><br>What are I2C_J1, I2C_J2, JP1-4, and the connector with pins 1 &amp; 2? (see images)<br><br>You also refer to pins A4 and A5 on the mini Pro, but I do not see those pins.<br><br>Thank you very much for your reply!</p>
Hi YaronT1, i'm not RegisHsu but said to another person &quot;This robot didn't use these pins, you could ignore them.&quot; Regarding your topic.
<p>Thank you, @neo_95.<br><br>Are you referring to all of the pins that I asked about, or just some of them?</p><p>@RegisHsu</p>
Hi RegisHsu! Please tell me what is the power of the capacitor that you used in the version 1 of your circuit? Thank you.
<p>I am so sorry that I forget what is the version 1 you mention about. Recall my memory, you may asking about this board. If so, for the yellow ones - 0.1uf, and black one is 10uf. However, the design isn't correct.</p>
<p>en que programa realizaste el pcb?</p>
<p>what are this? help, i dont speak english</p><p>someone please answer</p>
<p>This robot didn't use these pins, you could ignore them.</p>
<p>ohh, bueno, gracias entonces</p>
<p>Can you please post a key for the schematics.</p><p>Thanks</p>
<p>I don't know what are you asking for~</p>
<p>The 1298A battery is bigger than the body of the robot. Please Help</p>
Do you happen to know a website that has it in English?<br>Thanks
any size information?
<p>The 1298A is 13.0 cm x 6.5 cm x 2.3 cm</p><p>the 3d model is 9.1 cm x 4.6 cm x 1.91 cm. </p><p>If I am looking at the wrong battery, can you please give me a link to the correct one.</p><p>If the 3d model is wrong, can you please give me a corrected model.</p><p>Thanks</p>
<p>I am using DC12300 (90x43x17mm).Here is my blog to show the battery in detail. <a href="http://regishsu.blogspot.tw/2014/03/arduino-2wd-robot-part-ii.html" rel="nofollow">http://regishsu.blogspot.tw/2014/03/arduino-2wd-robot-part-ii.html</a></p>
Hi, for the battery the good choice is that : https://m.fasttech.com/p/1895004 (number 1298A but 4000mAh capacity) or that : https://m.fasttech.com/p/1896802 (number 12300 affiched 3000mAh but 1500mAh &quot;actual capacity&quot;) or that : https://m.fasttech.com/p/1896800 (number 12680A with 6800mAh affiched and 3000mAh &quot;actual capacity&quot;) I dont understand? <br>(Sorry for my very bad english)
<p>I would suggest to use 1298A because of the dimension limitation.</p><p>The dimension of 12300 and 12680 are too big for this robot body.</p>
<p>I am so sorry to give you the wrong message, I am using DC12300 (90x43x17mm)which is small than 1298A and 12680. Here is my blog to show the battery in detail. <a href="http://regishsu.blogspot.tw/2014/03/arduino-2wd-robot-part-ii.html" rel="nofollow">http://regishsu.blogspot.tw/2014/03/arduino-2wd-robot-part-ii.html</a></p>
Thank you very much !
<p><iframe allowfullscreen="" frameborder="0" height="281" src="//www.youtube.com/embed/1FqgTmMF16g" width="500"></iframe></p><p>Here a new Dance Video ;o))</p>

About This Instructable




More by RegisHsu:Handy Power Supply[vPython] Spider Robot simulator[DIY] Spider Robot - PART II - Remote control
Add instructable to: