Ez Arduino Spidey - Making a 12 DOF 3D Printed Quadruped Robot




About: We love robotics!

This is an inexpensive 3D printed 12 DOF quadruped robot using Arduino kind control board. It has two playing modes. One is autonomous pilot mode which the robot walks and performs actions randomly. This is the default. The other is control mode where the robot is controlled by iPhone or Android phone via BLE technology. This page should guide everyone to make one easily.

Step 1: Printing 3D Models

Download the 3D printed STL models files here. Suggested parameters for slicing the models to print are as followings. You may adjust them to fit the 3D printer you're using. If you don't have a 3D printer, you may find online 3D print service.

  • bottom/top thickness: 1mm
  • shell thickness: 1.2mm
  • ayer height: 0.2mm fill
  • density: 10%
  • support: yes
  • adhesion type: skirt or brim

Step 2: Software

Software are free to download:

uploading the Arduino code by open firmware.ino in the Arduino Software, see step 10 on IOS app and step 11 on Android app to control the robot.

for HuaDuino, in Arduino IDE software:

  • the board selection: "Arduino Nano", processor "ATmega328" for AVR Boards support version 1.6.20 or older.
  • the board selection: "Arduino Nano", processor "ATmega328 (Old Bootloader)" for AVR Boards support version 1.6.21 or newer.

Step 3: Hardware

The components can be found in ebay, amazon, aliexpress, DX and etc online store.

  • a HuaDuino board, it is Arduino Nano compatible with enhanced features. It integrates everything on a single PCB. It's a lot easier for people to make a bot with it. Embedded battery charging circuit, battery charging is more convenient. It can be found on Amazon and ebay.
  • a single 3.7V 18650 lithium ion battery or battery pack with XH2.54 connector, if you want longer running time getting a pack with two 18650 in parallel. You may like to use this 18650 battery holder. However, it is also fine to use 3.7V 10440 lithium ion and 3.7V lithium polymer battery dimension not bigger than W35mm, L70mm & T60mm.
  • 12 x Tower Pro SG90 or compatible 9g servos.
  • a female-female dupoint wire or anything you can figure out for connecting two pins
  • some m2x6 tapping screws
  • a BT-05 CC2540 Bluetooth BLE module - this is optional if you don't need App control. Baud rate is required to set to 115200. For iOS app, the service UUID must set to 0xDFB0 and characteristic must set to 0xDFB1. Below is the code to do that automatically. Attached is the reference of the AT command set to configure CC2540.

The following Arduino program issues AT commands setting BLE module service UUID, characteristic ID and baud rate, assuming the BLE default baud rate is 9600. For running below code in HuaDuino with the module onto it, the S1 switch must be set to the BT position.

void setup() {  
  Serial.begin(9600); //change to fit your BLE initial baud_rate
  Serial.println("AT+UUID0xDFB0\r"); // uuid
  Serial.println("AT+CHAR0xDFB1\r"); // characteristic
  Serial.println("AT+BAUD8\r"); // set baud rate to 115200
void loop() {}

The steps you should do of uploading the Arduino sketch to HuaDuino for BLE control are as following

  1. insert the BLE module, switch S1 to USB side, turn on huaduino,
  2. uploading the above ble module setup program
  3. turn off huaduino, switch S1 to BT side
  4. turn on huaduino, let the ble module setup program run in few seconds.
  5. switch S1 to USB side
  6. uploading the robot program
  7. switch S1 back to BT side, the robot now can be controlled by BLE

Step 4: Installation of Servos and the Control Board

Step 5: Legs

Step 6: Servo Wiring

Connection to digital pins of HuaDuino are as followings:

  • D2 to front right femur servo
  • D3 to front right tibia servo
  • D4 to front right coxa servo
  • D5 to back right femur servo
  • D6 to back right tibia servo
  • D7 to back right coxa servo
  • D8 to front left femur servo
  • D9 to front left tibia servo
  • D10 to front left coxa servo
  • D11 to back left femur servo
  • D12 to back left tibia servo
  • D13 to back left coxa servo

Step 7: Calibration

Using a female-female dupoint wire between A5 and 3.3V pin, the robot servos will be set to default reference angles. This is the status for installing servos and having servo arm capping on the correct angle.

Step 8: Installation of Servo Arms

while the female-female dupoint wire connected between A5 and 3.3V pin, puts the servo arms to the servo shaft

Step 9: Finishing Up

insert the CC2540 Bluetooth BLE module to the board's Bluetooth connector, and slide the S1 switch to the BT side, finally closes the robot with the top cover and eyes.

Step 10: Plays Using IPhone

To success doing this part, you must configure CC2540 Bluetooth BLE module, see the step 3 - hardware

  • opens the iOS app and closes it the robot
  • after few seconds the BLE paring between the robot and iPhone should be done, you will see the connection symbol changed to green
  • press the top middle virtual button will switch the robot to control mode
  • press bottom middle virtual button will turn back to autonomous self walking mode

Step 11: Plays Using Android Phone

  • open the Android app while robot is on pressing the connection symbol closed the top edge
  • after few seconds you should see listed BLE device and select it and connection symbol should turn to blue when successes
  • press the top middle virtual button it will switch to control mode
  • press bottom middle virtual button will back to autonomous self walking mode

Step 12: Battery Charging

  • plugs a 5V power source micro USB cable to the robot USB port
  • a red light indicates charging
  • a green light indicates charging completed

Make it Move Contest

Runner Up in the
Make it Move Contest



    • Plastics Contest

      Plastics Contest
    • Optics Contest

      Optics Contest
    • Make it Glow Contest 2018

      Make it Glow Contest 2018

    22 Discussions


    Question 5 weeks ago

    Can you please send me a description of how this receives input?

    I want to make a controller for it but i am not completely understanding what you are doing with the input.


    Question 6 weeks ago

    hey i just got my huaduino board from the link you posted and when i connect only one leg the leg works but when i connect all of them its like it has no power it turns off... i tried with nano and the robot shield and it works but i bought this one so it will work niceley. Any suggestions ?


    6 weeks ago



    3 months ago

    i cannot seem to be able to upload the code to huaduino.

    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x79

    avrdude: stk500_recv(): programmer is not responding

    is it possible to share the setting of the arduino for huaduino?

    5 replies

    Reply 3 months ago

    it may due to 1 - you didn't turn on the power switch, 2 - the S1 switch wasn't on the USB side, 3 - you had the servos connected that causing usb port failed to power up the board properly.


    Reply 3 months ago

    Thank you, I will try them today. And please how do you programma the bluetooth module?


    Reply 3 months ago

    Unfortunately no luck at all even though i tried what you suggested. In what programmer is the huaduino? USBasp?


    Reply 3 months ago

    you had some mis-understandings, see our reply on thingiverse.


    Reply 3 months ago

    I had this very same problem and fixed it by the following steps:

    1) I noticed in the videos that "manic-3d-print" is using Arduino 1.8.3 and so I downloaded and ran that version.

    2) I selected Tools/Board: "Arduino Nano" and then at the top of the drop down menu I selected Boards Manager. I then selected the "Arduino AVR boards" heading at the top of the Board Manager box and then from the "Select version" drop down box I selected version 1.6.19 and then selected install.

    3) Last I made sure that ATmega328 was selected under the tools/Processor menu.

    This allowed me to upload the sketch so long as the power switch was on and the S1 switch was in the USB position. My guess is that the latest version of Arduino and the latest version of the Board Manager may not yet work on the Huaduino board. I could be completely wrong about this but this fix worked great for me.


    3 months ago

    Awesome robot, but can it be made with an Arduino Nano? Because, aside from the pins, I don't see another advantage using a HuaDuino. Thank you.

    1 reply

    Reply 3 months ago

    The 3D models will not fit with nano and extra electonics. HuaDuino has everything integrated on the tidy board, it can charge the lithium battery directly. It will save you a lot of troubles of making this robot.


    Question 3 months ago

    Really nice robot, could you tell me do you have a arduino version (nano or smth like that).

    Not using HuaDuino. Thanks.

    1 more answer

    Reply 3 months ago

    No exactly identical, there is one in Instructables, you can search it in the robot category.


    Question 4 months ago

    Good Morning.

    the design of the tibia one is fine the other is like a negative ??

    someone can pass me the model.

    thank you very much

    1 more answer

    5 months ago

    I didn't yet finish your first robot and now ... an even better one :)

    My ordered parts are still on the way. International shipping.

    But all parts are printed.

    Are any parts from your first robot identical to this one?

    I'm thinking of re-using some parts or maybe start directly with this new robot.

    1 reply

    Reply 5 months ago

    the 3d models of the body is identical, hardware also are identical except you need 4 more servos for this one.