Introduction: Z1: Wifi-Controlled Robot Arm

This is the 3D printed Robotic arm that I designed.

The goal was to make a robot that was both easy to build and easy to control. If you are interested in buying a kit for this robot you can pre-order one at my site

The robot can be controlled by any means but it is designed to use the Esp32 and a custom breakout board. I'll release the designs then they are finalized. With this breakout board, the arm can be controlled and trained via any device via wifi. This is also available on my site.

It is a 4 axis arm with a claw. It uses MG996/MG995 servos for 3 of the axis and MG90s for the claw and "wrist".

All of the pieces can be 3d printed.

The 3D models in stl format can be downloaded free of charge at Thingiverse:

Here are some videos of the robot:

Web Interface:

Handling a Ball:

Parts list:


3 x MG996r

2 x MG90s

3D Printed Parts:

1 x Base_with_adjusted_holes.stl

1 x turntable_ring.stl

1 x turntable.stl

1 x first_arm.stl

1 x second_arm.stl

1 x third_arm_base.stl

1 x claw_gear_horn.stl

1 x claw_gear.stl

2 x paralel_arm.stl

2 x claw_finger.stl

2 x cap.stl (optional)

2 x pipe_stand.stl (optional)

1 x ball.stl (optional)


20 x #6*3/4 wood screw

4 x #4*3/4 sheet metal screw

7 x #4*3/8 sheet metal screw


Zip Ties

Spiral Wire Wrap

Electrical tape


The arm can be controlled in many different ways. I've developed a breakout board for the ESP32 that allows you to control and train it from any wifi device: laptop, tablet, smartphone. You can preorder a bundle for this at:

Step 1: The Base

Start by using 4 of the #6 wood screws to fasten one of the larger servos into the base piece. Make sure the servo shaft is in the center of the base and not to the outside.

Slide the wire through the slot in the base.

Screw the turntable ring on to the top of the base using 4 more #6 wood screws.

Step 2: The Turntable

Start by putting the turntable piece onto the shaft of the servo and use a 4 pronged horn and servo screw to fasten it in place.

Make sure that you fasten the horn onto the shaft such that the turntable is centered and the servo moves both left and right the same amount.

Then fasten another large servo onto the turntable piece using 4 more #6 wood screws, make sure this is oriented according to the picture. Then slide the servo wire underneath the servo towards the back for management.

Step 3: The First Arm

Start by fastening the final large servo into the first arm piece with 4 #6 wood screws slide then the wire through the slot at the end of the first_arm.

Pry the arms around the turntable piece with the servo. The larger hole should fit into the plastic nub on the turntable piece and the smaller hole should go around the servo shaft.

Fasten the servo shaft to the arm with a two-pronged horn keeping in mind the range of freedom of the servo.

Step 4: The Second Joint

Start by fastening a smaller servo into the slot in the second arm piece. The two sheet metal screws should self-tap into the holes of the servo as shown in the picture.

Then pry the second arm around the first in the same manner as the previous step.

Use a two-pronged servo horn and servo screw to fasten the second arm onto the servo shaft. Keeping in mind the range of motion of the servo.

Step 5: The Claw

You may need to drill out the holes of the parallel arms and gear pieces, use a bit close to the size of the sheet metal screws but just slightly smaller, to finalize the size screw all the way into the arm and keep turning, this will ensure a snug fit.

You'll have to drill a hole in the servo horn that came with the MG90s to secure it to the claw_finger and horn_gear_arm drill this in the same manner.

First, screw the thin sides of one parallel_arm and one gear_arm to a claw_finger oriented as in the picture.

Second screw one side of a parallel arm to the other claw finger oriented as in the picture.

Insert the final servo into the third_arm_base piece, fasten the left side using the other end of the parallel arm in the assembly made at the beginning.

Screw the other end of the gear_arm to the adjacent hole.

Fasten the next parallel arm to the other outside hole securing the servo. Fit the horn on with the gear_horn piece and fasten the final two screws.

Step 6: Electronics Fastening

If you decide to use the ESP32 breakout and module discussed in the introduction, you can assemble it and fasten it with the provided screws and spacers to the back of the robot base.

Step 7: Wiring

The frame pieces have built-in wire channels and zip tie hooks. You can use these in conjunction with wire wrap to thoroughly manage the wires and keep the robot looking professional.

On the first and second arm on the bottom of the piece behind the servo there is a hole, route the wire from the servo underneath the piece and through the hole to avoid any wire snags.

You can zip tie the wire from the claw servo onto the screw that fastens it on the right.

After you've managed the wires you can connect them to the appropriate port on the controller board and test the power supply.

Step 8: Test the Limits

It is important that you test and align the limits of the servos while under power. Many servos have mechanical limits past their sensor limits so you want to make sure that you can control along the whole range of motion. By putting the robot limits inside of the servos sensor limits. The way you do this is by removing the horn from the joint piece and resecuring it in a different orientation.

Step 9: Firmware and Software

If you are using the ESP32 breakout board the firmware will already be flashed with the correct firmware. To install it yourself you'll need the latest Espressif board loaded into your Arduino ide and the Arduino Web Sockets library available here:

Step 10: Using the Robot Arm

You can connect to the robot arm via wifi and control it like the video. The robot arm will configure itself as a web access point, then you can connect to it. Navigate to any website on your browser (not cached) and it will redirect you the web interface, the "Robot:" should say connected if it is working properly.

You can control the arm via the 6 sliders and "train" it using the program function. To program a new sequence first click the program button then navigate to the first state and click save state, continue this until the program is done then click "end programming"

You can play the saved program by clicking play.