Subscribe to our Newsletter

You can subscribe to get the latest news, product updates, offers and more from Tart Robotics.

August 26, 2020 by Tart Robotics

Biped Robot

How to make a DIY biped robot with Arduino, 3D printed, and Lego-compatible parts


Making Biped robots that can mimic human walking has always been the focus of scientists, makers, and inventors for many years. In fact, biped robots are mobile robots with articulated leg mechanisms that provide locomotion. To compare with wheeled robots, they can go upstairs and pass on obstacles, although, at a slower speed. Building humanoid biped robots have always been difficult due to the high number of joints and maintaining stability during walking. If you have no academic knowledge of forwarding, inverse kinematics, and control engineering, it is absolutely no problem. In this tutorial, we are going to make a fun and easy-to-build biped robot with Lego-compatible components, an Arduino board, and some off-the-shelf electrical components (Fig. A). The instructions are prepared in a way that you can build them at home.

Fig. A – General view of a biped robot

In this project, the biped robot uses an interesting mechanical mechanism that mimics human walking with only one DC gear motor. The result is quite interesting.

In this tutorial, we will make the structure of the body and the leg mechanisms of the biped robot using Lego-compatible parts. Then, one DC gear motor will drive the leg mechanism through bevel and spur gear trains (Fig. B).

Fig. B – Combination of body structure, electronics, and gear motor

In the next step, we will add an Arduino Nano as the brain of the biped. Arduino Nano uses a small-size powerful microprocessor that makes it suitable for low-weight and small-size projects (Fig. C). 

Fig. C - An Arduino Nano board

Various off-the-shelf motors, sensors, and shields can be easily connected to Arduino boards. This feature enables us to do a variety of tasks with the biped. For instance, you can tell the biped to move back and forth and dance by programming the Arduino board.


Fig. D – Electronic and electromechanical components
  1. 1x TT Gear Motor
  2. 1x 3D Printed Gear Motor Housing
  3. 1x BreadBoard, Mini Size
  4. 1x Arduino Nano
  5. 1x Neo Pixel LED Ring
  6. 1x Power Jack
  7. 1x 3D Printed Lego-compatible Coupling
  8. 1x L298N Mini Motor Driver
  9. 1x Pushbutton
  10. 1x M3 x 30 Machine Screw
  11. 2x M3 x 25 Machine Screw
  12. Male to Male Jumper Wire
Fig. E - Lego-compatible components
  1. Frame, 5x7-module
  2. Double bevel gear, 36-tooth
  3. Bevel gear, 12-tooth
  4. Beam, 9-module
  5. Beam, 5-module
  6. Beam, 3-module
  7. Angular beam, 3x5 module
  8. Bushing, 1-module
  9. Axle, 8-module
  10. Angular block 2, 180°
  11. Double cross block, 3-module
  12. Beam with cross hole, 2-module
  13. Axle with stop, 4-module
  14. Beam, 3-module
  15. Axle, 2-module
  16. Connector peg with friction/axle, 2-module
  17. Connector peg with axle, 2-module
  18. Tube, 2-module
  19. Connector peg with bushing, 3-module
  20. Connector peg with friction, 3-module
  21. Connector peg with friction, 2-module
  22. Axle connector with axle hole
  23. Angular block 1, 0°

Assembly of mechanical parts

Let's start assembling the biped's body-structure and leg mechanisms. The leg mechanism consists of a parallelogram mechanism that is driven by a four-bar linkage mechanism (Fig. F). Prepare Lego-compatible pieces according to Fig. E, and follow the step-by-step video tutorial below.

Fig. F - Four-bar linkage and parallelogram mechanisms

3D printed parts

Lego-compatible components only match with Lego-compatible gear motors. In order to transmit power from the shafts of the off-the-shelf gear motors to Lego-compatible gears or axles, we need to print a housing for the gear motor as well as a coupling. The housing will serve as an interface or an adaptor between the gear motor and the Lego-compatible beams. The coupling connects the gear motor shaft to the Lego-compatible axle. These 3D printed parts are called Lego-compatible housing and shafts (Fig. G and Fig. H). We have also created front and back body covers for the robot. The back cover look likes an oxygen capsule and protects the electronic part. The front cover acts similar to armor (Fig. I). Please download the 3D files and print the motor housing, Lego-compatible coupling, and covers with your 3D printer or use the ones in a maker space nearby.

Fig. G - 3D printed Lego-compatible motor housing
Fig. H - General view of Lego-compatible gear motor
Fig. I - 3D printed front and back body covers

Electronics and wiring

Prepare your screwdriver and soldering iron and carefully follow the video instructions below. Make sure you properly implement the schematic circuit diagram shown in Fig. J, so you don't end up toasting your Arduino board and motor driver.

Fig. J - Schematic diagram of the circuit


You can pick up Lego-compatible pieces and let your imagination go limitless. Of course, coding is also the part that you can have lots of fun and be the most creative. You can go to Arduino IDE and write your own code to tell the biped what to do. But for now, let's start with this code.

  Bipedal Walking Robot
    The idea:
    In this project, the robot starts and stops walking when a button is pressed on
    its back. There's also the robot's eye which is an Adafruit Neopixel 
    controllable color RGB LED ring.
    The circuit:
    - In this circuit, an Arduino nano is used. Any other types of Arduino
    can be used of course but do not forget to change the pin configurations
    if you want to change the circuit on your preference.
    Visit Tart Robotics blog for more information:

#include <Adafruit_NeoPixel.h>
#define PIXELSPIN A1 // Which pin on the Arduino is connected to the NeoPixels?
#define NUMPIXELS 8  // How many NeoPixels are attached to the Arduino?
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

#define M1 A4
#define M12 A5
#define button A3

int buttonNew;
int buttonOld = 1;
int Motorstate = 0;

void setup() {
  // Initialize Arduino pins to outputs
  pinMode(M1, OUTPUT);
  pinMode(M12, OUTPUT);
  pinMode(button, INPUT_PULLUP);
  // This initializes the NeoPixel library.

  for (int i = 0; i < 9; i++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255.
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    // This sends the updated pixel color to the hardware.;

void loop() {
  buttonNew = digitalRead(button);
  if (buttonOld == 0 && buttonNew == 1) {
    if (Motorstate == 0)
      // bright blue color.
      pixels.setPixelColor(1, pixels.Color(0, 0, 250)); 
      pixels.setPixelColor(2, pixels.Color(0, 0, 250));
      pixels.setPixelColor(3, pixels.Color(0, 0, 250));
      pixels.setPixelColor(5, pixels.Color(0, 0, 250));
      pixels.setPixelColor(6, pixels.Color(0, 0, 250));
      pixels.setPixelColor(7, pixels.Color(0, 0, 250));;
      // Motor run.
      digitalWrite(M1, HIGH);
      digitalWrite(M12, LOW);
      digitalWrite(M12, HIGH);
      digitalWrite(M1, LOW);
      Motorstate = 1;
    } else {
      for (int i = 1 ; i < 8 ; i++)
        pixels.setPixelColor(1, pixels.Color(0, 0, 0)); // Neopixel off.;
      // Motor stop.
      digitalWrite(M1, HIGH);
      digitalWrite(M12, HIGH);
      Motorstate = 0;
  buttonOld = buttonNew;

Run your biped

Please let us know what you think about this tutorial by commenting below. Your feedback will help us to improve our future work.

More image

Fig. K - A DIY Biped Robot Fig. L - A STEAM Walking Robot With Lego-Technic Fig. M - A DIY Walking Robot