Introduction: A DIY Biped Robot With Arduino, 3D Printed, and Lego-compatible Parts

About: We are an incorporated company located in Toronto Canada. Our team includes professional experts in mechatronics, science, mathematics, art, and business marketing to develop world-class STEAM-based educationa…


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 on forward, 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 components, an Arduino board, and some off-the-shelf electrical components. The instructions are prepared in a way that you can build them at home.

Step 1: General View of 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 Technic parts. Then, one DC gear motor will drive the leg mechanism through bevel and spur gear trains.

Step 2: Electrical Assembly

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.

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.

Step 3: Materials

List of electronic parts

A) 1x TT Gear Motor

B) 1x 3D Printed Gear Motor Housing

C) 1x BreadBoard, Mini Size

D) 1x Arduino Nano

E) 1x Neo Pixel LED Ring

F) 1x Power Jack

G) 1x 3D Printed Lego-Compatible Coupling

H) 1x L298N Mini Motor Driver

I) 1x Pushbutton

J) 1x M3 x 30 Machine Screw

K) 2x M3 Machine Screw

L) Male to Male Jumper Wire

List of Lego Technic components

A) Frame, 5x7-module

B) Double bevel gear, 36-tooth

C) Bevel gear, 12-tooth

D) Beam, 9-module

E) Beam, 5-module

F) Beam, 3-module

G) Angular beam, 3x5 module

H) Bushing, 1-module

I) Axle, 8-module

J) Angular block 2, 180

K) Double cross block, 3-module

L) Beam with cross-hole, 2-module

M) Axle with stop, 4-module

N) Beam, 3-module

O) Axle, 2-module

P) Connector peg with friction/axle, 2-module

Q) Connector peg with the axle, 2-module

R) Tube, 2-module

S) Connector peg with bushing, 3-module

T) Connector peg with friction, 3-module

U) Connector peg with friction, 2-module

V) Axle connector with axle hole

W) Angular block 1, 0

Step 4: 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. Prepare Lego Technic pieces according to material figure, and follow the step-by-step video tutorial below.

Step 5: 3D Printed Parts

Lego Technic components only match with LEGO gear motors. In order to transmit power from the shafts of the off-the-shelf gear motors to Lego 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 Technic beams. The coupling connects the gear motor shaft to the Lego Technic axle. These 3D printed parts are called Lego compatible housing and shafts. We have also created front and back body covers for the robot. The back cover look likes the oxygen capsule and protects the electronic part. The front cover acts similarly to armor. Please download the 3D files and print the motor housing, Lego-compatible coupling, and front and back covers with your 3D printer or use the ones in a maker space nearby.

Step 6: 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 the Schematic diagram of the circuit, so you don't end up toasting your Arduino board and motor driver.

Step 7: Programming

You can pick up LEGO 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;

Step 8: 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.

Please visit Tart Robotics for more DIY creative projects and STEAM-related educational content.

Our Socials:

Tart Robotics website,

YouTube, Instagram, Facebook, Twitter, Pinterest, LinkedIn