EMOtto_ESP32 DIY
We calculate the final price from your selected file. You review and accept it before payment.
Saved on this device.
New Version of EMOttoDiy with ESP32 + Shield + Sound with Dfplayer mini, Touch control, App Control.
- Rating
- 5 / 5
- Likes
- 7
- Downloads
- 64
- Makes
- 2
- Views
- 430
- Reviews
- 1
Updated at source:
Model information
- Source
- Printables
- Category
- RC & Robotics
- License
- Creative Commons — Attribution — Noncommercial — Share Alike
EMOtto_32 DIY
Update — September 30, 2026
Added the EMOttoESP32_2_0_Printables_senza_librerie.zip package, containing updated instructions and an app project (.aia) editable with MIT App Inventor.
The EMOttoDIYLib.zip and TFT_eSPI.zip libraries can be downloaded separately from the page attachments. The previously published Android app remains available.
Audio tracks 4, 31, 35, 36, and 37 are excluded due to copyright. The firmware has not been modified.
To get started, extract the package and read LEGGIMI.md.
EMOtto_32, makes sounds, talks, sings, dances and moves, changing expressions depending on the emotion. After a while without touching it, it falls asleep. But just touch it and it wakes up! It can be controlled thanks to 2 Touch or via Android App. It avoids obstacles and chases you thanks to the VL53L0X module.
Welds not necessary if you use pre-welded VL53L0X and TTP223 component.
Emotions Included:
Happy (Moves eyes and blinks)
Angry
Nostalgic
Sad (Moves eyes and blinks with tears falling) In Love (with pulsating heart-shaped eyes)
sleep (With mouth movement and zzz animation, yawns and snores thanks to MP3s on the micro SD card)
Disgusted
Embarrassed
Fearful
Anxious
Modes Included:
Chase
Avoidance
Dancer (4 Songs)
Singer (4 Songs)
This Template Uses the Modified ElectronBot Emo Project as a Design: https://github.com/maker-community/ElectronBot-Peripheral/tree/main/ElectronBot%20EMO .
Thanks to Scotty Franzyshen and his Concepts:
https://www.tinkercad.com/users/9Wbn1uShxa2-scotty-franzyshen, that inspired me.
The code uses the Modified Ottodiy library for Movements and Sounds:
https://github.com/ottodiy
Thanks to the fantastic project by Camilo Parra Palacio: https://github.com/cparrapa
and to the site:
https://www.ottodiy.com/.
We recommend using an FDM 3D printer.
No supports or rafts are required for the feet and legs. Supports are required for the other components.
Resolution: 0.3 mm or 0.2 mm for better resolution.
Infill density: 15%
All Stl files are already positioned correctly for Slicers
Characteristics
👩💻 Customizable Programming with Arduino
👣It moves
Change Expression
🔊 Makes sounds
Walks
Dances
Sings
Avoids Obstacles
Chases You
Sleeps
Touch Control
App Control
Parts list
(All the necessary materials can be purchased on Aliexpress)
🖥 Microcontroller ESP32 + SHIELD I/O (aliexpress)
🔌 cable micro USB - or USB-C
🔋 7.4V 1200mah Battery Lipo
Chrager for Lipo Battery
UBEC 5V-3A (aliexpress )
Switch 6 pin
⚙ 4x micro servo motors with screw sets.
🔊 Passive Buzzer Ø12mm
Round Display GC9A01
🌈 DuPont female-female jumper cables 10cm
2 Touch Capacitive TTP223
Sensor VL53L0X (aliexpress)
DFplayer Mini
Micro SD card 32GB
8R 2W 20mm, DuPont line 2.54( or eqivalent 8 ohm Speaker)
1k resistence for RX DFPlayer Mini
Magnetized Phillips screwdriver
3D-Printed Head
3D-Printed Headphones
3D-Printed Legs (2)
3D-Printed Feet (2)
CONNECTIONS
ATTENTION! :
Power is essential for proper operation!
To get a clear idea of the various options for powering your Otto project, you can follow this guide. (I've tried them all over time with varying success.)
The robot won't function properly without battery power. The cable connected to the PC isn't sufficient.
Use a 7.4V 1200mAh rechargeable Lipo battery.
Connect it to the 5V 3A UBEC.
Place the shield jumper on 5V.
Connect the UBEC to the 5V of the shield as shown in the figure.
Connect the GC9A01A VIN to the 3.3V.

![]() | ![]() |




WIRING
|
| ESP32 Pin Shield I/O | Vin | Grd |
Servo1 | Left Leg | 25 | 5V | - |
Servo2 | Right Leg | 26 | 5V | - |
Servo3 | Left foot | 27 | 5V | - |
Servo4 | Right Foot | 14 | 5V | - |
Buzzer | Sound | 13 | 5V |
|
Display GC9A01A | CS | 5 |
|
|
Display GC9A01A | DC | 17 |
|
|
Display GC9A01A | RST | 16 |
|
|
Display GC9A01A | SCL | 18 |
|
|
Display GC9A01A | SDA | 23 |
|
|
Display GC9A01A | Vin | 3,3V |
| Grd |
Display GC9A01A | Grd |
|
| Grd |
TTP223 | Touch | 12 | 5V | Grd |
TTP223 | Touch | 33 | 5V | Grd |
DFPlayer Mini | RX | 32( with 1k Resistence) |
|
|
DFPlayer Min | TX | 4 |
|
|
DFPlayer Min | Vin |
| 5v |
|
DFPlayer Min | Grd |
|
| Grd |
DFPlayer Min | Busy | 34 |
|
|
VL53L0X | SCL | 22 |
|
|
VL53L0X | SDA | 21 |
|
|
VL53L0X | Vin |
| 5v |
|
VL53L0X | Grd |
|
| Grd |
Battery 7,4V>Ubec 5V-3A | Battery | 5V |
| Grd |
Scheme

CODE
Arduino IDE -ESP32 Board Manager
Install from File/Preferences/Settings/Additional URLs screen for Tab Manager:
https://dl.espressif.com/dl/package_esp32_index.json,https://espressif.github.io/arduino-esp32/package_esp32_index.json
For operation, it is necessary to install the following libraries. Aside from EMOttoDIYLib, the others can be installed directly from Arduino IDE, or from GitHub.
EMOttoDIYLib (Arduino Ide , Menu/Sketch/Include Library/Add Zip Library)
TFT_eSPI(setup 200)
Dedicato a Mio Figlio FRANCESCO……………


