Overview

This project is a voice-activated AI assistant powered by a Raspberry Pi, integrating real-time speech recognition, natural language processing via ChatGPT, and smooth robotic eye animations. Using a PCA9685 servo controller, I implemented cosine-based easing functions to achieve lifelike eye movements and synchronized blinking. The system responds to a custom wake word, allows conversational interruptions, and smoothly transitions between idle, listening, and speaking states—all while minimizing mechanical noise to preserve microphone clarity during voice input.

This project is finished

Creating the Eyeball

When designing the eye itself I wanted the servos to be as hidden as possible. To do this I put the servos inside the eye. I did this by having the first servo mounted on the left side which makes the eye pivot upwards and downwards. Then I had the second servo rotate the first servos mount making the whole system move left and right. The whole system is mounted onto a bolt that is attached to my spare monitor arm.

Upper Eyelid

I started by finding 4 holes within the arm allowing me to create a mount for the servos. After I finished that I found where I wanted the eyelid to pivot along and created a mount. I made a linkage on the top of the eyelid to the servo horn. I quickly ran into issues with the design of the mount so i decided to make the pieces that stick out off of the monitor arm thicker.

Both Eyelids

When creating the lower eyelid I kept the design similar to the upper one. However I made the point that it pivots around 5mm thicker because the upper one broke while testing. I also made a slot for the upper eyelid to slide into when the lower eyelid is in place because they pivot along the same point. A longer linkage was made for the lower one because the servo was put further away.

Making it Think and Speak

Once it was done mechanically I integrated my code from the AI chatbot project. When the wake word is said the servos move to set positions and it waits for a prompt. Then once someone talks to it the eye is able to use voice recognition to plug what someone says into chatGPT then have what is written by the AI be recognized as text and it will be spoken. After this was finished I improved servo movements by making it the servos accelerate and decelerate instead of snapping between positions.