Touch points
The head and paw pads use conductive filament, but the printed surfaces did not carry a steady signal. Before each pad was glued into place, a screw secured a wire to its back, creating a reliable connection to the touch controller.
An interactive desktop companion that brings a virtual pet to life as a robotic cat. It responds to touch, light, and time alone through five animated expressions, offering companionship without the upkeep. Built over a semester, this fully functional Arduino prototype combines 3D printing, electronics, and programmed behaviors to explore how form and interaction give an object personality.
Overview
Inspired by the maneki-neko, the beckoning cat, nek.io pairs a raised paw and a rounded body with a single animated face. Virtual pets like Tamagotchi informed the concept: a quiet companion for people who spend long hours at a computer or cannot own a pet because of allergies, housing, or lifestyle.
The design keeps interactions simple and contained within the object, with no menus or companion app. Its silhouette, expressions, movement, and sound give it character without demanding constant attention. Much of the work went into fitting eight components and their wiring inside a custom 3D-printed enclosure while keeping a recognizable cat form.
The project brief called for an Arduino-powered device with at least one physical or environmental interaction. I expanded that to four, starting the semester with no prior electronics experience and learning to integrate touch inputs, light sensing, an OLED display, and sound through custom Arduino programming.
Software
Its personality comes from only a few inputs: touch, time alone, the light in the room, and the power button. Each one maps to an animated face, a matching sound, and a shift in behavior, built on a customized RoboEyes core and custom bitmap mouths drawn pixel by pixel.
A conductive patch on the top of its head triggers a happy face and a soft purr.
The conductive paw pads make it pull an annoyed face and give a short, irritated meow.
Left untouched too long, it occasionally meows to hint that it wants some attention.
A photoresistor reads the room; in the dark it closes its eyes and drifts off to sleep.
The power button wipes the screen down to a line and switches it off; press again and it wipes back to life.
Hardware
Eight parts are soldered to a single Arduino Nano and packed into a space built for a cat first and electronics second. A few are worth a closer look: the ones that let nek.io feel a touch, show a face, and answer back, and the small fixes it took to make each of them behave.
The head and paw pads use conductive filament, but the printed surfaces did not carry a steady signal. Before each pad was glued into place, a screw secured a wire to its back, creating a reliable connection to the touch controller.
A small I2C OLED behind the window does all the emoting. It draws the eased, RoboEyes-based eyes and the hand-drawn bitmap mouths, so every blink and expression reads as deliberate on a screen barely bigger than a stamp.
A DFPlayer Mini reads short clips from a microSD card and drives a small speaker, giving each expression a matching purr or meow. It is what turns a moving face into something that feels like it is answering you.
Wiring
A single Arduino Nano runs everything in one loop, checking three inputs: touch from the MPR121 over I²C, room light from an analog photoresistor, and the power button on D7. These select a state, happy, angry, lonely, sleepy, or off, that drives two outputs. The OLED animates the eyes and mouth over I²C, easing between poses for lifelike motion, while the DFPlayer Mini plays a matching purr or meow through the speaker over serial. A logic level shifter steps the Nano’s 5V I²C down to the touch controller’s 3.3V. Each wire is routed by hand and tucked into the shell around the other components.
Block diagram
Pinout
Live demo
This is the finished prototype running, straight off the desk, with no renders and no edits. Every feature the project set out to build is working here at once.
Pet its head and it purrs, press a paw and it pulls an annoyed face, dim the room and it drifts off to sleep. Touch, light sensing, the animated OLED faces, the meows and purrs, and the autonomous idle all run together off a single Arduino Nano.
All eight components sit inside the custom 3D-printed shell, wired by hand and fixed to the interior walls. The finished build brings the digital concept into a working physical companion.
Build notes
Reflection
Once it is on your desk, the point of nek.io becomes clear: it asks for almost nothing. A glance, an occasional touch, or a meow when the room has been quiet too long makes up the relationship. It was also my first electronics project, and much of what I learned came from things going wrong. Unresponsive components, flickering displays, and cracked solder joints each taught me something beyond the brief.
What surprised me most was how closely the finished build matched my original render. The proportions, pose, and character carried from the screen into a companion that sits on a desk and responds to touch. A few compromises were tucked inside the shell, but from the outside, it is the companion I imagined.