This started with a great fy pull in YouTube and some spare time. I knew I would someday build a robot!
The build
The eye mechanism is from this Instructables project. I printed it over 2-3 days, raided my parts drawer for whatever bolts and nuts fit, and drove 30 minutes to an electronics store on a Saturday evening. Stores would be closed the following Monday, so it was that or wait. Got there 10 minutes before closing, got the parts, came back home, locked in.
Picked up a servo HAT, 6 servos, and a 12v power charger which I ended up not using.
I rewrote the Arduino script for Raspberry Pi. The eyes move. That part was actually straightforward, just mapping servo signals to GPIO pins instead of Arduino digital outputs. It needed some tinkering with the speeds but it worked. The store guy warned me about power draw and he was right. When the eyes moved, it died. Six servos pulling from the 5v GPIO pins wasn't going to cut it.
So I looked at the eye movement more carefully. Two servos move the eyelids, one moves the eyes left and right, one moves them up and down. They don't all need to move at the same time. Classic engineering solution: I changed the code to move either left/right with eyelids, or up/down with eyelids, never all six at once. Four servos max at any given moment. Problem solved, no 12v needed.
The AI part
This is where it got interesting.
Headless Raspberry Pi. TinyLlama running locally, small enough to actually work on Pi hardware without dying. Wake word detection via a USB microphone. When it hears "hey Zoro", it listens, sends audio to a local STT model, feeds the text into TinyLlama, gets a response, and speaks it back via TTS.
No cloud. No API calls. Completely offline. It's like a local Wikipedia that talks back.
It could answer general knowledge questions, have basic conversations, remember context within a session. For something running entirely on a Pi it was genuinely impressive.
I tried to give it Roronoa Zoro's voice. This was ambitious. The Japanese voice model wasn't great in English, and I tried training my own with English text mapped to a Japanese voice. The output wasn't bad at all but it was very heavy. Then I found something like a voice interpreter using a recording from a channel that is honestly a goldmine for this kind of thing: WorldVocals on YouTube. It was very good, but also very slow. Eventually I accepted that Zoro was not going to speak through my robot eyes in any convincing way.
The camera problem
I got the RPi camera module to make the eyes track faces like in the video. Move when you move. Actually follow you. That's the version I wanted.
The only AI HAT I could get at the time was one designed primarily for camera-based object detection. From what I read, it made zero difference to the LLM performance so I ditched it. And then I hit the real problem: I was running headless Ubuntu, and the RPi camera module has a rough time with that. After two more hours researching why the drivers weren't working as expected, I decided to let it go.
So the face tracking got shelved. The eyes move but they don't follow you.

Where it is now
It's sitting on a shelf, which is the honest answer. Not abandoned, just paused. The core of it works. Wake word, local AI response, TTS output, animatronic eyes. What I want to do eventually is rebuild it on Raspberry Pi OS instead of Ubuntu so the camera works, then add the face tracking I originally wanted. Maybe even find a HAT that gives me enough power to do proper TTS with Zoro's voice, or find another way entirely.
In any case I consider this a major victory and I'm very happy with what it turned out to be. Did you know that the biggest volcano eruption in the world is.... pssst... Hey Zoro!
Ask him yourself when I finish the rebuild.