Projects / Education

Otto – the dancing DIY walking robot

A pocket-sized biped that walks, dances, dodges obstacles and makes sounds – the friendliest first robot you can build.

Otto DIY robot with its box and parts

Photo: Otto DIY (www.ottodiy.com), CC BY-SA 4.0

Choose how it arrives

₹1,843

Before shipping. The courier fee is calculated from your PIN.

  • 4 printed parts (head, body, pair of legs, pair of feet) in your colours
  • Arduino Nano + Nano I/O shield
  • 4 × SG90 servos with horns and screws
  • HC-SR04 ultrasonic sensor, passive buzzer, battery holder, jumper wires, USB cable
  • Illustrated step-by-step build guide
Order diy kit

Beginner

What it is

Otto is one of the best-loved open-source robots in the world: four little servo motors give him two legs and two feet, an ultrasonic sensor makes his 'eyes', and a tiny buzzer lets him sing. He shuffles, moonwalks, dances and politely backs away when your hand gets too close.

Because every part is open and the code is written for the Arduino platform, Otto is a perfect bridge from 'I've never built anything' to 'I wrote my own dance routine'. Children (10+ with a grown-up), students and curious adults can all finish him in an afternoon.

We print the head, body, legs and feet for you in your choice of colours and pair them with tested electronics and our illustrated, step-by-step guide. Choose the DIY kit for the full experience, the Assembled version if you just want to do the fun final steps, or let us build, calibrate and test him for you.

Components

Each line is the price of that part. The tier price above is the full price for that way of buying it, before shipping.

PartQtyEachLine
Arduino Nano R3 compatible board (CH340)1₹270₹270
Nano I/O expansion shield1₹83₹83
TowerPro SG90 9 g micro servo (180°)4₹115₹460
HC-SR04 ultrasonic distance sensor (Otto's 'eyes')1₹87₹87
Passive buzzer module 3.3–5 V1₹27₹27
4 × AA battery holder with cover and on/off switch1₹43₹43
Female-to-female jumper wires 20 cm (pack of 20)1₹39₹39
Mini-USB programming cable 30 cm1₹33₹33

Printed parts

Print just the parts · ₹695 before shipping.

Build guide

The DIY kit includes this guide. Assembled and fully built orders include it too, for care and the steps that remain.

Build Otto – your dancing DIY walking robot

Welcome! In the next few hours you'll turn a handful of printed parts, four tiny motors and a small Arduino board into Otto, a cheerful little biped who walks, dances, sings and backs away from things in his path. You don't need to solder, and you don't need to have built anything before. Take your time and enjoy each step. Otto is meant to be fun to build as well as fun to play with.

Which version do you have? - DIY kit: follow every step below. - Assembled: we've already done steps 1–7. Start at Step 8 (legs and feet), then calibrate (Step 10) and play. - Fully built: Otto arrives assembled, calibrated and tested. Skip to Testing and Make it yours.

Otto, the open-source DIY robot

What's in the box

| Item | Qty | |---|---| | Printed head, body, 2 legs, 2 feet | 4 prints (legs and feet come as pairs) | | Arduino Nano (CH340) + Nano I/O expansion shield | 1 each | | SG90 micro servos with horns and tiny screws | 4 | | HC-SR04 ultrasonic sensor ("eyes") | 1 | | Passive buzzer module | 1 | | 4 × AA battery holder with switch | 1 | | Female-to-female jumper wires | 20 | | Mini-USB cable | 1 |

3D render of the printed parts (not a photo)

Tools you'll need

  • Small Phillips screwdriver (PH0 or PH1). The servo screws are tiny, so a magnetic tip helps.
  • A computer (Windows, macOS or Linux) with a free USB port.
  • 4 × AA batteries (alkaline or NiMH rechargeables).
  • Optional: tweezers, a small file or a craft knife for tidying up print edges, and masking tape for labelling wires.

Safety first

  • Batteries off while wiring. Keep the battery switch OFF, or the batteries out, whenever you plug or unplug wires.
  • Check polarity. On servo cables, brown is GND, red is +5 V and orange is signal. A plug turned the wrong way round can damage a servo or the board.
  • Don't force the servos. Never twist a servo shaft by hand while it's powered. Even unpowered, turn it slowly. The plastic gears are small.
  • Small parts. Screws and horns are a choking hazard. Children under 10 should build with an adult, and keep loose parts away from toddlers and pets.
  • Craft knives cut away from your body, every time.

Step-by-step build

1. Get to know your parts

Lay everything out on a clean table. Identify the head (two round holes for the eyes), the body (servo pockets and a battery bay), the two legs and the two feet. Open the servo bags. Each has a few plastic horns and two or three tiny screws. For Otto you'll use the single-arm and small cross horns.

2. Centre every servo (important!)

Servos must start at their middle position (90°) or Otto will walk lopsided.

  1. Upload the calibration sketch from Firmware below with the servos connected (see Wiring).
  2. Each servo will move to 90° and hold.
  3. Unplug them, keeping the shafts untouched.

No computer handy yet? Gently rotate each shaft to one end, then to the other end, and stop halfway. This is close enough for now; you'll fine-tune in Step 10.

3. Fit the hip servos into the body

Push the two leg servos into the two pockets on the underside of the body, shafts facing down and towards the front. Feed their cables up through the slot into the body. Secure each servo with the screws supplied, snug but not tight enough to crack the plastic.

4. Fit the ankle servos into the legs

Slide one foot servo into each leg, shaft pointing outward. Route the cable up through the leg. Secure with the small screws.

5. Prepare the feet

Press a single-arm horn into the recess in each foot. Trim the horn with a knife if it's a little long. Fix it with the smallest screw from the servo bag.

6. Fit the electronics in the head

  1. Push the HC-SR04 into the two eye holes from inside the head, pins pointing up.
  2. Press the Nano firmly into the I/O shield, with the USB socket facing the back of the head.
  3. Place the shield in the head and stick the buzzer module to the inside wall with a dab of double-sided tape.

7. Wire it up

Follow the diagram and table in Wiring below. Plug each servo into the matching shield header (S/V/G), with the orange wire on S. Label the cables with tape ("LL", "RL", "LF", "RF") so you never mix them up. Put the battery holder in the body's battery bay.

8. Attach the legs and feet

  1. With the servos still centred, press a cross horn onto each hip servo shaft so the legs point straight down, then screw it in place.
  2. Push each leg's ankle servo shaft onto the horn in its foot so the foot sits flat and points forward. Fix it with the shaft screw.
  3. Close up the body and set the head on top. The tabs click into the body.

9. Upload the firmware

See Firmware flashing below.

10. Calibrate the trims

Calibration makes Otto stand perfectly straight. See Testing below.

Wiring

Otto wiring diagram

| From | Pin | To (Nano / shield) | |---|---|---| | Left leg (hip) servo | signal (orange) | D2 | | Right leg (hip) servo | signal | D3 | | Left foot (ankle) servo | signal | D4 | | Right foot (ankle) servo | signal | D5 | | HC-SR04 | Trig | D8 | | HC-SR04 | Echo | D9 | | HC-SR04 | VCC / GND | 5 V / GND | | Passive buzzer | S (I/O) | D13 | | Passive buzzer | VCC / GND | 5 V / GND | | Battery holder | red (+) / black (−) | shield VIN (or DC screw terminal) / GND |

"Left" and "right" are Otto's own left and right, as if you were standing behind him.

Firmware flashing

Otto's official library, OttoDIYLib, is open source (GPL-3.0): <https://github.com/OttoDIY/OttoDIYLib>

  1. Install the Arduino IDE (2.x) from arduino.cc.
  2. Install the USB driver if your computer doesn't recognise the board. Our Nano uses the CH340 chip, and Windows sometimes needs the CH340 driver.
  3. In the IDE, open Library Manager, search for OttoDIYLib and install it. Alternatively, download the repo above as a ZIP and use Sketch → Include Library → Add .ZIP Library.
  4. Choose Tools → Board → Arduino Nano and Processor → ATmega328P (Old Bootloader). Try the non-"Old" option if upload fails. Pick the right Port.
  5. Open File → Examples → OttoDIYLib → Otto_CalibrationWalk and click Upload.
  6. When calibrated, try Otto_allmoves, Otto_avoid (obstacle avoidance) or Otto_smoothcriminal (dance!).

Prefer blocks to code? Otto Blockly lets you drag and drop moves, sounds and sensor logic. See <https://www.ottodiy.com> for the current download.

Testing

  1. Upload Otto_CalibrationWalk and open Serial Monitor at 9600 baud.
  2. Otto moves to his "home" pose. Use these keys (press Enter after each) to nudge each joint until he stands upright with feet flat:

- a / z: left leg - s / x: left foot - k / m: right leg - j / n: right foot

  1. Press f to test a walk and h to return home. Trims save automatically to the board's memory.
  2. Upload Otto_avoid, switch to batteries and wave your hand in front of his eyes. He should stop and turn away.

Troubleshooting

| Problem | Try this | |---|---| | "Servo.h: No such file" when compiling | Install the Servo library (by Arduino) from Library Manager. Newer IDE versions usually include it already. | | Upload fails / port not shown | Install the CH340 driver; try a different USB cable or port; switch Processor between "Old Bootloader" and normal. | | A servo jitters or twitches | Batteries are low, or USB alone can't supply four servos. Use fresh AAs. Check the servo plug is fully seated and the right way round. | | Otto falls over or walks in circles | Re-run calibration. Make sure each horn was fitted with the servo centred (Step 2); re-seat it one tooth over if a trim is near its limit. | | One leg moves the wrong way | The servo is plugged into the wrong pin. Compare against the wiring table. | | No sound | Buzzer signal must be on D13. Check it is the passive module and its VCC/GND are connected. | | Obstacle avoidance ignores things | Check Trig → D8 and Echo → D9; soft fabric and very thin objects reflect poorly, so test with a book or your hand. | | Board resets when Otto moves | Weak batteries. Replace all four at once. |

Make it yours

  • Print the head or feet in a second colour, or add a name badge.
  • Use Otto Blockly to choreograph your own dance to your favourite song.
  • Add a sound sensor, touch sensor or LED matrix "mouth". The OttoDIY community has lots of add-on designs.

Want something bigger, like a custom Otto for a school workshop or a robot with a different personality? Ask us about custom ideation and consulting.

Credits

  • Otto DIY robot design and photos by the OttoDIY project and community, <https://github.com/OttoDIY>, licensed CC BY-SA 4.0. Our printed parts are the official Otto head/body (v3) and legs/feet; we print them unchanged in your chosen colours.
  • OttoDIYLib firmware by OttoDIY contributors, GPL-3.0, <https://github.com/OttoDIY/OttoDIYLib>.
  • This guide, the wiring diagram and the renders are original MyPartLab material and are shared under CC BY-SA 4.0, matching the Otto design.

Ways to change it

Customise this project

Source: Otto DIY (classic Otto, body/head v3, legs/feet v05) by Otto DIY community, led by Camilo Parra Palacio (ottodiy.com). CC-BY-SA-4.0. View source