February 2, 2026
Description
Boosts, photos, and comments really motivate me to keep building projects like this, which take a lot of time and filament.
So don’t hesitate — it genuinely makes a difference 🙏
This project and its tutorial are constantly evolving, just like the C309 project (the Yeti) that I’m working on in parallel.
I’m working alone on this project and dedicating my free time to it, so please be understanding.
— thank you all 🙂
🤖 Expressive Desk Robot – ESP32-C3 & 1.3" OLED Display
When combined with the 1.3" firmware available at www.leroyd.com/beta/,
it becomes a small expressive desk robot based on an ESP32-C3 and a 1.3" OLED display.
It shows animated faces, time and weather, and reacts to touch.
🧩 Companion robot mode (beta but functional)
🖥️ 1.3" OLED display
👆 Capacitive touch interaction
⏰ Wi-Fi synchronized clock
🌦️ Weather via Open-Meteo
🔊 Piezo buzzer
📳 Vibration motor (experimental feature)
🔋 Space for an internal battery
🧩 Modular and minimalist enclosure for 1.3" OLED display + ESP32-C3 Super Mini
✅ No code to write
✅ No soldering required
Firmware, compatible screen, and instructions available here:
👉 https://leroyd.com/beta/
This model is first and foremost an enclosure for your 1.3" displays and ESP32-C3.
I made it compatible with the Companion 309 (Yeti) firmware.
https://makerworld.com/fr/models/2109424-compagnon-309-build-your-expressive-robot#profileId-2281938
This project is a compact, minimalist, and expressive desk robot based on an ESP32-C3 Super Mini and a 1.3" OLED display.
It displays animated faces, the time and weather, and reacts to touch in a simple and affectionate way.
The project is designed to be accessible to everyone, with no soldering and no code to write, thanks to a ready-to-use firmware.
The enclosure is made of several 3D-printable parts:
🔩 Hardware Used
No glue is required.
Below is the basic wiring required for a successful first startup.
You can later add the piezo buzzer for sound and the vibration module by following the connections indicated in the tables below.
Hardware list available at www.leroyd.com/beta/ → 1.3" firmware
| OLED | ESP32-C3 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | GPIO 8 |
| SCL | GPIO 9 |
⚠️ I²C Address
The I²C address (0x3C or 0x3D) depends only on how the OLED display is manufactured.
It is not a software setting.
👉 The link to the compatible display as well as the 1.3" firmware are available here:
🔗 https://leroyd.com/beta/
| Touch sensor | ESP32-C3 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| OUT | GPIO 7 |
The sensor is placed behind the front panel for invisible interaction.
The one selected in the parts list fits perfectly in the dedicated slot and requires no soldering.
| Vibration motor | ESP32-C3 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| IN | GPIO10 |
The vibration motor is currently in an experimental phase.
It activates during a long press on a face (more than 3 seconds) and displays the “love” expression.
👉 It likes being stroked.
| Buzzer piezo | ESP32-C3 |
|---|---|
| + | GPIO 5 |
| − | GND |
The piezo buzzer is used in addition to the vibration motor.
During a long press (more than 3 seconds), it plays a melody at the same time as the vibration and the display of the “love” expression.
Sound can be enabled or disabled from the web interface.
The ESP32-C3 breakout board (extension module) includes an onboard LiPo battery charger.
If you want to power it using an internal battery, use the two solder pads located under the extension board.
⚠️ Important:
You are free to choose the battery, but I do not recommend using a battery with too low or too high capacity.
A capacity between 500 mAh and 800 mAh is preferred.
I cannot be held responsible for improper battery use or any damage it may cause.
Even though batteries are present in most of our devices, they remain potentially dangerous components.
👉 If you have any doubt, prefer powering the device via USB only (without a battery).
👉 All links (firmware, compatible display, recommended components) are grouped here: 🔗 https://leroyd.com/beta/
🎉 You’re all set!
Once you have assembled your desk robot and connected it to your computer using a USB-C cable, it’s time to install the firmware.
That’s it — the software installation can begin 🚀
⚠️ Important:
Close the page once the installation is finished (before configuring Wi-Fi)
If you skip the Wi-Fi connection step, your desk robot will automatically switch to offline mode.
Only part of the companion’s features will be available.
👉 If you are using a smartphone, make sure to disable mobile data before connecting.
👉 Once configured:
Replace 55.123, 55.123 in the left column with your own GPS coordinates
(latitude and longitude).
Select your time zone in the right column.
Click “Save” to apply the changes (bottom of the page).
This will update the current outdoor temperature and the local time displayed on your companion.
Disables all functions except face display.
Allows you to feed and wash the companion.
When feeding, a cooldown time is enforced between two actions
(give it time to chew and swallow…).
Over the course of a day, its hunger, fatigue, and cleanliness naturally fluctuate (decrease).
Here you can choose which pages are displayed or hidden on the companion’s screen.
This tab lets you choose the difficulty level of the Dino game
(level 5 is way too hard).
For direct control of the companion from the web interface.
In the Maintenance section, you can fully reset your companion.
This action will erase everything, and the device will need to be completely reconfigured.
🖨️ 3D Printing
🎯 Project Spirit
This robot is designed as a discreet and expressive desk companion.
A small, living object — simple, endearing — that reacts when you take the time to interact with it.
License:
Standard Digital File License