Bouw je eigen robot in slechts één uur met de Otto DIY-kit
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Otto DIY Builder Kit | 1 |
| Otto DIY Arduino NANO Shield I/O | 1 |
| Arduino Nano Every | 1 |
| USB-A naar Mini-USB kabel | 1 |
| SG90 Micro-servomotor | 4 |
| Buzzer | 1 |
| Female/Female Jumper draden | 6 |
| Otto DIY 8x8mm Micro Switch Self lock On/Off | 1 |
| 4xAA batterijhouder | 1 |
| AA Batterijen | 1 |
Nodige tools en machines
- 3D-printer (generic)
- Phillips kruiskopschroevendraaier
Apps en online diensten
- Arduino IDE
- Arduino Web Editor
- Microsoft Visual Studio Code Extension for Arduino
Over dit project
Wie is Otto?
Een interactieve robot die iedereen kan maken!

Wat kan Otto?
Otto loopt, danst, maakt geluiden en ontwijkt obstakels.

Waarom is Otto bijzonder?
Otto is volledig open source, Arduino-compatibel, 3D-printbaar en heeft een sociale missie om een inclusieve omgeving voor kinderen te creëren.

Otto was geïnspireerd op de robot BoB the BiPed en geprogrammeerd met code van de open source biped robot Zowi.

CC-BY-SA
Otto's verschillen liggen in de gemonteerde afmetingen (11cm x 7cm x 12cm), schonere integratie van componenten en expressies. Met kant-en-klaar en 3D-geprinte onderdelen, eenvoudige elektronische verbindingen (bijna geen solderen vereist) en basiscoderingsvaardigheden, kun je je eigen schattige Otto-vriend in minder dan één uur bouwen!
Otto is ontworpen met Autodesk 123D Design, nu Tinkercad-software, zodat je het kunt aanpassen voor customization of verdere verbeteringen.

Deze stapsgewijze handleiding richt zich op het bouwen van de eenvoudige versie van Otto DIY; er zijn meer geavanceerde bipedale robots zoals Otto DIY+ of Tito.
Stap 1: Verzamel alle onderdelen en tools

Verzamel alle kant-en-klaar hardware-onderdelen die je nodig hebt voor de montage. Een mini-breadboard is een alternatief voor de shield, maar vereist meer bedrading en tijd.
Daarna hoef je alleen nog 6 onderdelen in totaal te 3D-printen:
- 3D-geprinte kop
- 3D-geprinte lichaam
- 3D-geprinte been x2
- 3D-geprinte voet x2
Optioneel: een snijmes voor na-bewerking van de 3D-onderdelen (als de printkwaliteit goed genoeg is, niet nodig) en een soldeerbout (als je het op batterij wilt laten draaien, anders kan je het via USB voeden).
Dat is alles! Download alle .stl-bestanden. Als je geen 3D-printer hebt, kun je altijd naar je lokale makerspace gaan.
Als je de onderdelen niet hebt of moeilijk te krijgen zijn, kun je onze complete kits kopen op www.ottodiy.com
3D-printinstellingen

Otto is ontworpen voor 3D-printen; de gedownloade bestanden zijn correct georiënteerd en gecentreerd, zodat ze geen problemen geven als je deze algemene parameters volgt:
- Aanbevolen: FDM 3D-printer met PLA-materiaal.
- Geen supports of rafts nodig.
- Resolutie: 0,15 mm
- Vuldichtheid: 20%
Voor slicing en het genereren van de g-code voor de machine: gratis slicer-software zoals Cura of in ons geval FlashPrint die bij de FlashForge Finder 3D-printer hoort (als je de print uitbesteedt, hoef je je hier geen zorgen over te maken).
Na het printen moet je de benen en voeten die de motoren fixeren een beetje schoonmaken.
Controleer je onderdelen
Zoals vermeld in stap 2, worden micro-servomotoren geleverd met 3 schroefjes; in de afbeelding zijn deze nu opgenomen en de onderdeelnummers hernummerd voor gemakkelijke leesbaarheid.
Onthoud je mini-schroevendraaier te magnetiseren.
Download of print de instructiehandleidingen of volg deze video:
Voet-servo montage
Plaats de micro-servo in de voet en duw hem erin; als het te zwaar gaat, moet je misschien het gebied met een snijmes meer schoonmaken.
Het is heel belangrijk om te controleren of de servo minstens 90 graden aan elke kant kan draaien.
Na controle van de beweging, fixeer hem met alleen de kleine schroef.
Hetzelfde proces voor de andere voet.
Servo's aan lichaam fixeren
Neem de andere 2 micro-servo's, plaats ze op de aangewezen locaties in het 3D-geprinte lichaam en fixeer ze alleen met de puntsschroeven.
Benen aan lichaam fixeren
Verbind de benen met de naaf van de micro-servo; net als de voet-servo's moet je controleren of de benen 90 graden aan elke kant ten opzichte van het lichaam kunnen draaien.
Na verificatie van de uitlijning, fixeer ze met de kleine schroeven in het gat aan de binnenkant van het been.
Voeten aan benen fixeren
Houd rekening met de kabels zoals in de illustratie getoond; je moet de kabels in de gleuven van het lichaam leggen, door het gat van de benen.
Zodra ze in de juiste positie zitten, fixeer ze van achteren met de puntsschroeven.
Kopmontage
Begin met de ultrasoonsensor; het is belangrijk om de ogen tot aan de rand uit te trekken.
Na het plaatsen van de Arduino Nano in de shield, kun je optioneel de pluskabel van de batterijhouder aan Vin op de print solderen en de minuskabel aan een willekeurige GND.
Steek beide printplaten diagonaal in elkaar met de USB-connector gericht naar het gat in de 3D-geprinte kop, en fixeer ze met de laatste 2 puntsschroeven.
Stap 9: Elektrische verbinding

Bereid de DuPont-kabels, microschakelaar en buzzer voor.
Volg vervolgens de pinnummers in het schema en zorg dat ze op de juiste positie zitten.
Als je de Arduino Nano shield niet hebt, gebruik een breadboard en volg dit schakelschema: TinkerCAD Circuits.
Programmeren met blokken
Je kunt altijd de broncodes van Arduino uitproberen via de Otto Wikifactory.
Hier zijn enkele complementaire tutorials voor beginners om snel aan de slag te gaan met Arduino voor elk component:
- Servomotor Tutorial: https://arduinogetstarted.com/tutorials/arduino-servo-motor
- Ultrasoonsensor Tutorial: https://arduinogetstarted.com/tutorials/arduino-ultrasonic-sensor
- Aanraaksensor Tutorial: https://arduinogetstarted.com/tutorials/arduino-touch-sensor
- Buzzer Tutorial: https://arduinogetstarted.com/tutorials/arduino-piezo-buzzer
Bezoek www.ottodiy.com
De Otto DIY+ versie biedt meer mogelijkheden met Bluetooth, meer sensoren en interacties.
Plaats je remix en modificaties op de Wikifactory.
Code
Obstakelvermijding
//----------------------------------------------------------------
//-- Zowi basic firmware v2 aangepast voor Otto
//-- (c) BQ. Vrijgegeven onder GPL-licentie
//-- 04 December 2015
//-- Authors: Anita de Prado, Jose Alberca, Javier Isabel, Juan Gonzalez (obijuan), Irene Sanz
//-----------------------------------------------------------------
//-- Experimenteer met alle functies die Otto heeft dankzij Zowi!
//-----------------------------------------------------------------
#include <Servo.h>
#include <Oscillator.h>
#include <EEPROM.h>
#include <BatReader.h>
#include <US.h>
#include <LedMatrix.h>
#include <EnableInterrupt.h>
#include <OttoSerialCommand.h>
OttoSerialCommand SCmd;
//-- Otto Library
#include <Otto.h>
Otto Otto;
//---------------------------------------------------------
//-- Eerste stap: Configureer de pennen waar de servo's aan vastzitten
/* ---------------
| O O |
|---------------|
YR 3==> | | <== YL 2
---------------
|| || || ||
RR 5==> ----- ------ <== RL 4
|----- ------| */
#define PIN_YL 2 //servo[0]
#define PIN_YR 3 //servo[1]
#define PIN_RL 4 //servo[2]
#define PIN_RR 5 //servo[3]
//---Otto Knoppen
#define PIN_SecondButton 6
#define PIN_ThirdButton 7
/////////////////////////////////////////////////////////////////
//-- Globale Variabelen -------------------------------------------//
/////////////////////////////////////////////////////////////////
const char programID[]="Otto_todo";
const char name_fac='$';
const char name_fir='#';
//-- Bewegingsparameters
int T=1000;
int moveId=0;
int moveSize=15;
//---------------------------------------------------------
//-- Otto heeft 5 modi:
//-- * MODE = 0: Otto wacht
//-- * MODE = 1: Dansmodus!
//-- * MODE = 2: Obstakeldetectiemodus
//-- * MODE = 3: Geluidsdetectiemodus
//-- * MODE = 4: OttoPAD of teleoperatiemodus (luistert naar SerialPort).
//---------------------------------------------------------
volatile int MODE=0;
volatile bool buttonPushed=false;
volatile bool buttonAPushed=false;
volatile bool buttonBPushed=false;
unsigned long previousMillis=0;
int randomDance=0;
int randomSteps=0;
bool obstacleDetected = false;
/////////////////////////////////////////////////////////////////
//-- Setup ------------------------------------------------------//
/////////////////////////////////////////////////////////////////
void setup(){
Serial.begin(115200);
pinMode(PIN_SecondButton,INPUT);
pinMode(PIN_ThirdButton,INPUT);
Otto.init(PIN_YL,PIN_YR,PIN_RL,PIN_RR,true);
randomSeed(analogRead(A6));
enableInterrupt(PIN_SecondButton, secondButtonPushed, RISING);
enableInterrupt(PIN_ThirdButton, thirdButtonPushed, RISING);
SCmd.addCommand("S", receiveStop);
SCmd.addCommand("L", receiveLED);
SCmd.addCommand("T", recieveBuzzer);
SCmd.addCommand("M", receiveMovement);
SCmd.addCommand("H", receiveGesture);
SCmd.addCommand("K", receiveSing);
SCmd.addCommand("C", receiveTrims);
SCmd.addCommand("G", receiveServo);
SCmd.addCommand("D", requestDistance);
SCmd.addCommand("N", requestNoise);
SCmd.addCommand("B", requestBattery);
SCmd.addCommand("I", requestProgramId);
SCmd.addDefaultHandler(receiveStop);
Otto.sing(S_connection);
Otto.home();
delay(50);
for(int i=0; i<2; i++){
for (int i=0;i<8;i++){
if(buttonPushed){break;}
Otto.putAnimationMouth(littleUuh,i);
delay(150);
}
}
if(!buttonPushed){
Otto.putMouth(smile);
Otto.sing(S_happy);
delay(200);
}
if (EEPROM.read(5)==name_fir){
if(!buttonPushed){ Otto.jump(1,700); delay(200); }
if(!buttonPushed){ Otto.shakeLeg(1,T,1); }
if(!buttonPushed){ Otto.putMouth(smallSurprise); Otto.swing(2,800,20); Otto.home(); }
}
if(!buttonPushed){ Otto.putMouth(happyOpen); }
previousMillis = millis();
}
/////////////////////////////////////////////////////////////////
//-- Hoofd-Loop ---------------------------------------------//
/////////////////////////////////////////////////////////////////
void loop() {
if(obstacleDetected){
Otto.sing(S_surprise);
Otto.playGesture(OttoFretful);
Otto.sing(S_fart3);
Otto.walk(2,1300,-1);
Otto.turn(2,1000,-1);
delay(50);
obstacleDetector();
} else{
Otto.walk(1,1000,1);
obstacleDetector();
}
}
// ... (overige functies zoals in originele code)
Aangepaste onderdelen en behuizingen
Thingiverse .STL 3D-printbare bestanden
3D-printonderdelen voor het bouwen van Otto. CAD-bestand op thingiverse.com
Schema's
Servo's, ultrasoonsensor, buzzer en batterijverbindingen, volg de kabels. Gebruik DuPont-kabels.
Productieproces
- DIY Thermocam: Van Klaslokaal Idee Tot Globaal Product
- Custom Object-sensoren Bouwen voor LEGO Mindstorms EV3: DIY Licht-gebaseerde "Ogen"
- Bouw een DIY Google Voice HAT voor je Raspberry Pi
- Bouw een Internet-gecontroleerde Video-streamende Robot met Arduino & Raspberry Pi
- Een Ballistisch Parachute-herstelsysteem Ontwerpen voor UAV's
- Bouw Sauron: De Semi-Humanoïde Robot – Complete Arduino Mega 2560 Handleiding
- MeArm robotarm V1.0 – Bouw je eigen Arduino- en Raspberry Pi-aangedreven robotarm
- Bewijzen stappen om een robuust IoT-prototype te bouwen
- Waarom Elke Doet-het-zelf-er Een Luchtcompressor Nodig Heeft: Voordelen & Het Juiste Model Kiezen
- Reinforcement Learning: De Toekomst Van Intelligente Industriële Robotica
- Zelf Een Robotarm Bouwen: Risico's en Voordelen