Introduction: Otto DIY+ Arduino Bluetooth Robot Easy to 3Dprint

Truly open source nature of Otto allows open STEAM education, we collect feedback from different workshops and schools around the world that are already using Otto DIY in their classroom and depending of the openness of this educational places we organize the lesson material and share as well, some people are teaching electronics explaining the connections with fritzing and the physics behind, other code with Arduino then github, other to create open source APPs in app inventor, others how to customize with arts &crafts, other how to design 3d models with accessories for Otto with tinkerCAD or Fusion 360.


Otto DIY + is the improved and advanced version of original #OttoDIY, the idea is to have the same base features DIY robot + Bluetooth control and programming + metal gear servo motors + rechargeable + changing modes by touch sensor + sensors + light moves + other outputs +...?

Otto DIY+ is a forever BETA!, develop by a broad community of Otto builders, recommend to first check all documentation for Otto DIY and then you can try to play with more advanced features with Otto DIY+

The exciting part is that we are doing open development with makers and hackers around the world so we are open to ideas, not only from expert,s you can join us with , feedback, social share, testing or any other contribution that you might think of.

Step 1: Electronic Parts and Tools

Picture of Electronic Parts and Tools

Is important to read first Otto DIY previous instructable

3d print parts, codes and libraries for Bluetooth already here: The APP is still under BETA too but is functional So for any issue or question please follow this topic in Thingiverse

1 × Arduino Nano
1 × HC-06 or HC-05 Bluetooth module

1 × Arduino Nano Shield I/O You can use a mini breadboard but much more cable work

1 × USB-A to Mini-USB Cable

4 × Micro servo SG90 (plastic) or MG90s(metal) " depend of the type of servo motor you choose you will need to 3d print different legs and feet'

1 × Buzzer 10 × Female/Female Jumper Wires

1 × 3.7 V LiPo Battery

1 × Touch sensor

1 × RGB Led

1 × 8x8mm Micro Switch Self lock On/Off

1 × Dot matrix display MAX7219 (optional for the LED mouth)

1 × Screwdriver

1 x 3d printer (or use 3dhubs)

Step 2: ​3D Print

Picture of ​3D Print

Updated files here:

  • Recommended to use a FDM 3D printer with PLA material.
  • No need supports or rafts at all.
  • Resolution: 0.15mm
  • Fill density 20%

Need to adjust size some changes use the source file made in Fusion 360

or use this customizer

Step 3: Build Your Own Otto

Picture of Build Your Own Otto

in the following pictures you can have a reference of how to build Otto DIY+, due some new versions drawings are not exactly the same:

Step 4: Code Your Own Otto

Picture of Code Your Own Otto

So to this point you should have an Otto 3d printed, assembled, now some programming to have libraries and Arduino installed in your PC.

Other type of Programming:

  • An easier way for programming faster and less drivers or software trouble some like Arduino IDE
  • graphical coding with mBlock
  • Something tangible like Google bloks
  • App like cousin Zowi trough Bluetooth
  • Anything to control the robot in and more fund and friendly way, up to you.

Step 5: Bluetooth (BT) Setup:

Baud-rate for programming module is 9600 or 19200 or 38400, depends on a module.

The BT code(OTTO_BT_easy.ino and OTTO_BT.ino) has 115200 baud-rate so BTmodule must match that speed to be able to communicate with Arduino Nano via serial interface(UART) .

For HC-05: 38400 or 115200
Here you can find sketch and wiring diagram for programming your BT module with Arduino Nano:

1. Upload the sketch HC05_BT_config.ino to your Nano first, then disconnect Nano from USB.

2. Now connect BT to Nano as shown in diagram but do not connect VCC.

3. Plug in the USB to Nano and then connect VCC so BT enters AT mode. LED on BT should start to blink slower, about once every 2 seconds. (If this doesn't work, try holding the button on BT module while connecting VCC).

Open serial monitor in IDE, set baud-rate to 9600 and line ending to Both NL & CR.

Type AT then press enter; (if everything is right, BT should respond with OK and then enter following commands:

AT+NAME=Zowi "setting the name"

AT+PSWD=1234 "pairing password"

AT+UART=115200,1,0 "baud rate"

AT+POLAR=1,0 "enabling STATE pin to be used as reset for programming arduino over BT"

Now go to the APP step

If any problem check this instructable of how to Modify the HC-05 Bluetooth Module Defaults Using AT Commands

For HC-06: 9600 or 115200

For HC-06 BT module things are a little simpler because module is always in AT command mode when not connected to anything. But the downside is that HC-06 module cannot be used to upload sketches to Arduino because it doesn't have reset. For configuring the module

1. upload this sketch HC06_BT_config.ino to your Nano

1. disconnect USB

2. connect BT module to Nano like this:



VCC - 5V


3. Power on your Nano and after about 10-15 seconds everything should be finished and your BT should be configured (LED13 should start blinking).

If any problem check this instructable

Step 6: ​main Code for Bluetooth

Picture of ​main Code for Bluetooth

After setup the bluetooth, disconnect again the module and upload this code:


After successful upload connect the module again and will be ready for pairing

Step 7: APP

Picture of APP

Thanks to Juan Felix Mateos we have a Beta android APP that you can test

we will have new UI design similar to the picture

Or because Otto is also compatible with Zowi you can use BQ APP

Download the official "Zowi App" from bq

Install and open Zowi app for android, pair the device and ignore the warning message that says the code is modified or something.

Step 8: ​Rechargeable Battery (optional):

"LiPo battery, 500 mAh, with step up converter it danced continuously for 40 minutes before battery run out"

Nano expansion board Arduino Nano with micro USB connector - i removed shottky diode from it and soldered a wire from it to Lipo charger so it only charges from usb and can be programmed via usb but can't be powered from it.

But programming is a problem since BT is connected so maybe i will remove connector, plug the hole and use the connector from lipo charger for charging and BT for programming Metal gear servos 2 switches

- had to add 10 microF capacitor on reset line so i can program it over BT500 mAh lipo batteryLipo charger boardStep up converterWith 4x AA 1.5V

Energizer can only run about 1 hour and then HC-06 not running Battery AA x4

Control the robot from your Android phone: Download the official "Zowi App" from bq Configure the bluetooth module using this code:

Then load the Zowi base v2 software:

Servos consume a lot, and drop the battery voltage under 5V or 3,3V and reset the arduino, to solve this add this circuit:

Battery ----+--->|----+----- 5V arduino. diode | === Capacitor 1000uF /10V

|Battery ---- GND-------- GND arduino

5V power supply directly, using LiPo battery with 5V/4A rise circuit.

Step 9: ​Adding the Matrix (optional)

Many #ottobuilders like to imitate Zowi as much as possible so jarsoftelectrical, modified the libraries and added new codes to make this possible using a MAX 7219 LED MATRIX and represent emotions and gestures Matrix codes in Github

This Repository have all open source files for my version of the popular Otto DIY The Arduino code is modified from the Zowi robot, it has modified to work with a MAX 7219 LED MATRIX as as mouth as well as other adjustments. Please copy all the files in the OTTO_Library folder to the Arduino IDE Library folder

The code is based on the Zowi code, modified for OTTO

  • Please NOTE: i have moved the BUZZER to pin D13............
  • Please NOTE: you need pull-down resistors on the button pins............10K ohm
  • Please NOTE: you will need a link between A7 and +5 volt to fool low battery warnings The modified OTTO main program is inside the OTTO_LEDMATRIX folder, ensure you are using the latest version of the Arduino IDE. The modified ZOWI main program is inside the ZOWI_BASE_v2_MATRIX folder, Also ensure you use all the modified libraries in the ZOWI folder here.

Step 10: Copy, Expand, Customize,modify, Remix and Share!

Picture of Copy, Expand, Customize,modify, Remix and Share!

Use #OttoDIY #Ottobuilder #OttoDIYPLUS for social media


  • 3d print accessories
  • Custom labels
  • Noise detector
  • LED nose
  • LED matrix mouth
  • Arms
  • wheels
  • change rduino for ESP 8266
  • change arduino for raspberry PI
  • Voice controlled
  • Laser cut version
  • and the list will continue...


brucla68 (author)2017-11-04

Hello! Great project, but I have troubles with printing correct parts. I'm re-designing all parts because using my M3D printer I cannot match parts each other and fit components inside parts because of shrinkage and different final 3D printed parts' dimensions. I mean starting from original STL files.

One question: how should I fix the self-lock button and buzzer in their space? Should I use glue or something else? Thanks

cparrapa (author)brucla682017-11-05

weird i use middle quality settings and the motor just fit right, if some are to tight is fine because this is a 3d design for ALL printers in the world so some tolerances differ but can be adjusted by post processing.

Better to glue the switch yes

brucla68 (author)2017-11-04

here the button

DaleE26 (author)2017-10-04

Building one with my kids, I have lots of hobby 2 and 3 cell lipo's around, can I power the system with one of these? I dont know how tolerant the power supply on the shield can be..... 7.4v on the Vin pins possible? 12.6v on the barrel connector?

cparrapa (author)DaleE262017-10-12

12V is the maximum for Arduino but i never put more than 9V

hope is helpfull

for faster response join our facebook group


brucla68 (author)2017-10-01

hello. Thanks for your great project. I am trying to follow your steps. I printed the body (I have your same 3d printer , same green colour) but the holes which house the tow motors are a bit smaller. Before re-printing (it took almost 8hours) I will try to enlarge holes and use some post-processing. But in case I would like to know what settings you use on M3D. Thanks!

esmk2 (author)2017-09-21

dear friend i upload the code bluetooth .easy.ino but not working

i use hc-05 module and rate 115200,1,0

please help me

cparrapa (author)esmk22017-09-24

Most of the time the problem is the module first make sure is properly setup, try also other BT codes

You are welcome

esmk2 (author)cparrapa2017-09-28

i do it. working well. thanks

About This Instructable




Bio: Toy Maker & Industrial designer working and living in China, in my daily work design inflatables and pool accessories, in my spare time make toys, robots ... More »
More by cparrapa:Otto DIYZOtto DIY+ Arduino Bluetooth Robot Easy to 3DprintSimon Says
Add instructable to: