Personal Project · 2024
Bertie
Overview
Bertie is a desktop companion robot built around a distributed client-server architecture. The hardware — an ESP32 devkit on an aluminium frame with two servos for head rotation, an e-ink display for expressive eyes, a microphone, a button, and an IR positioning sensor — acts as a thin client. The 'brain' lives on a server the robot connects to via TCP: the robot forwards sensor readings and current state, and the server returns instructions.
Pressing the button triggers a state machine that activates the microphone and streams audio to a Python server handling speech-to-text transcription. The transcription result flows back through the C# server, which parses the recognised speech into commands and dispatches servo animations and e-ink eye state updates simultaneously. The firmware is written in C++ using PlatformIO, with dual power rails — 4× AA batteries for the servos and USB-C for the ESP32 — a split that caused some early hardware failures before proper power management was in place.
Key Contributions
Distributed architecture: ESP32 TCP client forwarding state to a C# server brain
Python speech-to-text layer handling microphone streaming and transcription
State machine-driven button and microphone handling on the embedded side
Coordinated servo animation and e-ink eye state updates from a single transcription result
2-DOF aluminium-framed head with dual power rails (servo + logic separated)
IR positioning sensor with LED tracking capability