Electrical · 2 weeks · Personal

Kirby Companion

A custom interactive Kirby desktop companion built as a polished standalone smart display.

2-inch touch displayMAX98357 audio3D-printed shell

Overview

For a personal project, I wanted to build a custom interactive desktop companion as a gift for my girlfriend. I designed a Kirby-shaped device that works as a standalone smart display.

The goal was to make a polished device for time, weather, alarms, timers, and a built-in minigame. I chose a touch-driven interface so the 3D-printed enclosure could stay clean without bulky physical buttons.

Kirby Companion embedded device

System Overview

The brain of the project is a Waveshare ESP32-S3 development board with an integrated 2-inch capacitive touch screen. The ESP32-S3 handles the graphical interface, touch processing, and Wi-Fi connection.

For sound, I integrated a MAX98357 I2S DAC Class D amplifier with two Gikfun 40mm 40-ohm speakers, allowing the device to play alarms, interface sounds, and music through digital audio.

Mechanical Design

I designed the enclosure from scratch in Autodesk Fusion. The internal cavity mounts the Waveshare display and speakers flush with the surface while leaving space to route the ESP32, amplifier, and speaker wiring.

To keep the build inexpensive, I 3D printed the chassis in pink PLA, hand-painted the feet red, and used paper decals for the eyes.

Firmware

I built a touch-responsive GUI for the clock, weather, stopwatch, and minigame screens. The device uses Wi-Fi to fetch real-time weather data through REST APIs and synchronizes the clock with NTP.

Kirby Companion touch display showing the clock and alarm interface

For alarms and interface sounds, I configured the I2S serial bus to stream digital audio from the ESP32 to the MAX98357 DAC without tying up CPU cycles.

Results

I designed, fabricated, and programmed the full device in a two-week timeline, using CMU’s Spring Carnival break to finish the CAD, order parts, assemble the hardware, and integrate the software. The result is a highly personalized, fully functional embedded system that combines mechanical design, IoT software, and digital audio into a polished product.