Voice-Assisted Mini Companion Bot
Inspired by the Disney Research team's bipedal animatronic characters that interact with crowds in real-time. I wanted to create a similar but smaller, desktop friendly design but smaller design for my desktop. Open-source leg mechanism designs (Legolas and Tinker) make this project a good choice for a final project. Unlike existing options like EMO, which are expensive to import in India, this design is more affordable
Table of Conents
- The Idea
- CAD Design
- PCB Schematic
- Voice Input
- OLED Output
- Servo Output
- References
1. The Idea
Brainstorming
Many ideas were discussed including a mini companion bot and a robotic humanoid chatbot among others (see more in Week 1), but ultimately I choose the All-Seeing Eye as my final project for the following reasons:
Sketching

Key Features
The Companion Bot has the following key features:
- An LCD display on the robot's front shows three expressions—happy, sad, and neutral—with accompanying sound effects from a speaker.
- The robot responds to voice commands for power control and can display time, weather, and temperature information, replacing its standard expressions.
- The robot features bird-like legs that fold when powered down to save space. When activated, the legs extend to full height, enhancing its interactive presence.
- Front-mounted sensors help the robot detect and avoid obstacles while preventing falls from the desktop.
2. CAD Design
This is model when rendered as a still image.

This is the model when rendered as a turntable.
Project FlowChart

3. Possible PCB Schematic
Trying to create a PCB for my final project using the ESP32-WROOM-32E module
Here I have made a schematic for a PCB for my final project. The design has to be refined in the coming weeks, but theoretically, there is a voltage regulator circuit making sure that the MCU receives only 3.3V. Also I can communicate with my MCU using a USB A to C type connector. I will continue to refine this design as the weeks progress.

For more information, see Week 6 documentation.
4. Voice Input
In week 9, I made an an audio input sensor, which could potentially be able to recognize certain voice commands


To see more, check out my documentation for Week 9. In the future, I would like to make it possible for the device to recognize voice commands
5. OLED Output
In Output Devices Week I learnt to make a simple facial animation on the OLED display. To achive this, I used this tutorial that uses the U8g2 library, which is supported by Wokwi simulator. Following the tutorial I went to Lopaka.app, selected the U8g2 library, and created a new project


#include <U8g2lib.h>
#include <Wire.h>
long dt;
long vert;
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
void setup(){
Serial.begin(115200);
if (!u8g2.begin()){
Serial.println("Display not initialized");
for(;;);
}
delay(1000);
Serial.println("Display initialized");
}
void mouth_open(){
u8g2.clearBuffer();
u8g2.setFontMode(1);
u8g2.setBitmapMode(1);
u8g2.drawFilledEllipse(83, 33+vert, 8, 13);
u8g2.drawFilledEllipse(62, 54+vert, 8, 6);
u8g2.drawFilledEllipse(41, 33+vert, 8, 13);
u8g2.sendBuffer();
}
void mouth_half_open (){
u8g2.clearBuffer();
u8g2.setFontMode(1);
u8g2.setBitmapMode(1);
u8g2.drawFilledEllipse(83, 33+vert, 8, 13);
u8g2.drawFilledEllipse(41, 33+vert, 8, 13);
u8g2.drawFilledEllipse(62, 57+vert, 8, 3);
u8g2.sendBuffer();
}
void mouth_closed (){
u8g2.clearBuffer();
u8g2.setFontMode(1);
u8g2.setBitmapMode(1);
u8g2.drawFilledEllipse(83, 33+vert, 8, 13);
u8g2.drawFilledEllipse(62, 59+vert, 8, 1);
u8g2.drawFilledEllipse(41, 33+vert, 8, 13);
u8g2.sendBuffer();
}
void loop(){
vert = random(0,3);
dt = random(0,150);
mouth_closed();
delay(dt);
// Serial.println(dt);
vert = random(0,3);
dt = random(0,200);
mouth_half_open();
delay(dt);
// Serial.println(dt);
vert = random(0,3);
dt = random(0,200);
mouth_open();
delay(dt);
// Serial.println(dt);
vert = random(0,3);
dt = random(0,200);
mouth_half_open();
delay(dt);
// Serial.println(dt);
vert = random(0,3);
dt = random(0,200);
mouth_closed();
delay(dt);
// Serial.println(dt);
}
6. References
- Design and Control of a Bipedal Robotic Character (DisneyResearchHub)
- A 1-foot tall, 3D-printed bipedal robot student project (umrobotics)
- Tinker: Open-sourced cartoon-Style Bipedal Robot (yuexuan li)
- EMO Launch video: The Coolest AI Desktop Pet with Personality and Ideas. (EMOPET ROBOT)
- ESP-SparkBot: ESP32-S3 large-model AI desktop robot
- ESP-SparkBot
- Robonyx Self Balancing Robot
- OTTO Walking Robot