Project tutorial

Otto DIY+ Arduino Bluetooth Robot Easy to 3D Print © CC BY-SA

"Otto DIY with steroids" + Bluetooth + APP + switch + touch sensors + strength + sound detection...

  • 103 respects

Components and supplies

Ard nano
Arduino Nano R3
Gus 1719
C.H.I.P. Approved 3.7 V LiPo Battery
500 mAh battery (optional)
HC-05 Bluetooth module
HC-06 Bluetooth module
HC-SR04 Ultrasonic module
Buy one that also works on 3.3V if you plan to use Lipo battery without step up converter.
This is optional, if you want nose that changes colour.
Touch sensor
Arduino NANO Shield I/O
Adafruit industries ada260 image 90px
USB-A to Mini-USB Cable
Micro servo MG90
Adafruit industries ada1536 image
266 04
Female/Female Jumper Wires
8x8mm Micro Switch Self lock On/Off
 dsc1102 900x600
DFRobot Romeo BLE - Arduino Robot Control Board with Bluetooth 4.0
as an option to replace the arduino and the shield
Otto DIY Otto maker kit
as an alternative kit
12758 02
SparkFun Electret Microphone Breakout

Necessary tools and machines

3D Printer (generic)
09507 01
Soldering iron (generic)
if you buy from NO need
Phillips Cross screwdriver
Hy gluegun
Hot glue gun (generic)

Apps and online services

About this project

If you don't have or is difficult to get the part you can just buy our full kits!


Otto DIY + would be 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 + optional rechargeable + changing modes by touch sensors + sound sensor + RGB light + other outputs +...?

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.

some main moves

Is important to read and do first the Otto DIY previous tutorial

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:


  • Infrared control
  • raspberry PI
  • customizable face and parts
  • paper craft and accessories

and the list continue...

ready to start to configure the Bluetooth!

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 BT module must match that speed to be able to communicate with Arduino Nano via serial interface(UART) .

For HC-05: (38400?) 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?) 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 instructables:

Main Code:

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

Android APP:

You can make your own APP!

download the latest .APK here

using app inventor by MIT use our template to modify and create your own mobile application

Otto DIY using Juan Felix Mateos APP

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.

Otto controlled by Zowi APP


The easiest to code your own Otto is by using MBlock 3 software; graphical programming interface in Arduino mode.

watch these simple tutorial to learn how to install the Otto extension blocks

programming Otto with scratch language

So to this point you should have an Otto 3d printed and completely assembled

Now some basic programming with Arduino:

Post your remix and modifications in the community or Thingiverse


Function that reads voltage of batteryArduino
//Function that reads voltage of battery

#define BAT_MAX  600 //max battery voltage in mV/10
#define BAT_MIN 400 // min battery voltage in mV/10
#define SLOPE 100/(BAT_MAX - BAT_MIN)
#define OFFSET  (100*BAT_MIN)/(BAT_MAX - BAT_MIN)

this you add in shetch where zowi reads batt voltage:

    batt = ((readVcc() / 10) * SLOPE) - OFFSET;
    if(batt>100){batt = 100;}
long readVcc() {
  // Read 1.1V reference against AVcc
  // set the reference to Vcc and the measurement to the internal 1.1V reference
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Start conversion
  while (bit_is_set(ADCSRA, ADSC)); // measuring

  uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH
  uint8_t high = ADCH; // unlocks both

  long result = (high << 8) | low;

  result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
  return result; // Vcc in millivolts
Avoid obstacles
Basic code to avoid obstacles, also include all libraries and is easy to modify for custom moves

Custom parts and enclosures

Thingiverse files
Now we have space for switch and buzzer, new legs
You can modify the size, use the parts for 3d printing and add parts as desire


Basic parts shematic
Please note that was made in Autodesk Circuit the ultrasound lack of one cable,


Similar projects you might like

Program a DHT11 Temperature and Humidity Sensor

Project showcase by rowan07

  • 6 respects

Air Surfer

Project tutorial by Anton

  • 92 respects

zPatch: Hybrid Resistive/Capacitive eTextile Input

Project showcase by fkeel

  • 9 respects

Proximity Alarm Distance Meter

by Hassan Shettima Lawan

  • 6 respects

GO-4 Smart Home Arduino Bot

Project in progress by AhmedAzouz

  • 21 respects

Making an Arduino Touch Sensitive LED Sign

Project showcase by MBcreates

  • 18 respects
Add projectSign up / Login