April 9, 2026
Description
When I first came across this Printables competition, I honestly had no idea what I was doing. I was just clicking around the website and suddenly found myself looking at a competition about Otto.
The funny part is that I don’t even own the Otto kit or a 3D printer. So instead, I started exploring Otto through CAD and studying how the parts fit together.
My only experience with CAD was a little bit of TinkerCad that we used at school for fun, and a small amount of FreeCad.
This was the first model I uploaded, but I wasn’t satisfied with it, so I decided to try again.
I quickly realized that TinkerCAD or FreeCAD wouldn’t be enough for what I wanted to build, so I decided to learn Onshape and used it to create the final design.
I started with a simple 2D drawing to understand the size and shape and the idea of turning Otto into a truck.
After finishing the model, I found out that a friend of mine had a 3D printer, so I asked him nicely if he could print it for me. That way I could make sure the measurements were correct and that the slide design would actually work for other people printing it. ( Spoiler: it didn't)
There were small mistakes and redesigns along the way, but that was part of the process. I later found out that his 3D printer had problems with warping, so the print I got had some issues.
Even though I don’t own the Otto kit, I still wanted to learn the electronics behind Otto. So I borrowed an ESP32, a servo motor, and ultrasonic eyes from my school. I wrote some code to make it move back and forth with the eyes.
#include <ESP32Servo.h>
#define SERVO_PIN 13
#define TRIG_PIN 5
#define ECHO_PIN 18
Servo myServo;
long getDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000);
if (duration == 0) return 999;
return duration * 0.034 / 2;
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
myServo.attach(SERVO_PIN);
myServo.writeMicroseconds(1500);
delay(2000);
}
void loop() {
long dist = getDistance();
if (dist > 20) {
myServo.writeMicroseconds(2000);
} else {
myServo.writeMicroseconds(1000);
delay(3000);
myServo.writeMicroseconds(1500);
delay(500);
}
delay(100);
}
Since I only had one motor available, Otto can currently only move back and fourth😂, but the electronics and coding work. For me, this helped me understand how the electronics behind Otto worked.
You can see that I had to use Lego and rubber bands for the first print cause it had issues.
This was the second time I tried (19-3-26)
I started this project simply because I wanted to learn something new and give it a try.
Only after, did I realize that I had followed the exact idea Otto was created for: inspiring students and beginners to explore, build, and learn.
I realized that the goal was never really to win.
It was the learning, the mistakes, and the process behind it.
Otto inspired me to explore CAD, electronics and the more technical side.
So I just wanted to say thank you to the Otto team for helping me discover something new and finding a new hobby;)
Otto the Truck uses all the original electronics components found in the HP Robots | Otto Starter – Creator Kit to build an Otto robot.
Each hole or tight gap is designed with some extra room for errors.
Nozzle: 0.4mm
Type: PLA
Quality: I used 0,8mm High Quality.
❗You can also use 0.16mm for faster print, I just had some issues with printer with 0.16mm (cause of the printer warping)
Supports: I used the normal Tree function
It took 3 days in total.
License:
Creative Commons — Attribution — Noncommercial — Share Alike