A friend robot inspired by OrpheusHack Club mascot. It has three screens that make up its face, senses your presence with an ultrasonic sensor, detects obstacles, and moves with a controller.
[ IMG_001 ]
Starpheus complete, powered on and showing its face
A Wall-E type robot that simulates emotions. Programmed with a ESP32-S3
Three OLEDs make up its two eyes and its mouth. It simulates emotions with state machines: neutral, sleepy, happy, and scared.
He looks at you with the ultrasonic obstacle detector, he looks at you like you're an obstacle! And obstacles scare him.
A MG996R servo moves its head with expressive motion, controlled by native PWM so it doesn't shake.
TT motors with wheels give it mobility. Variable speed with real power control.
An HC-SR04 ultrasonic sensor measures distance. If something gets too close, the motors brake by themselves.
Create your own WiFi network. You control it from your phone or with a Logitech controller through the browser.
[ PHOTO ]
Starpheus — full view
Honestly, I struggled a lot with this project. I changed everything from one moment to the next thousands of times. It was going to have computer vision and an infrared sensor so you could pet it, it was going to be semi-autonomous, but it was very ambitious. This is the beginning of Starpheus; in the future, I’ll improve it and all these ideas will be more than just ideas.
— Anna Strs
Everything runs on an ESP32-S3. Power comes from the wall with a cable I made myself! and is distributed through two regulators to isolate the motor noise from the sensitive electronics.
[ PCB ]PCB designed in KiCad
[ SCHEMATIC ]Schematic diagram
[ 3D VIEW ]3D chassisBuilding Starpheus was a lot of trial and error. This is the honest story, I'm a mess
The first thing was giving it life with the OLEDs and the IR sensor: a state machine with cute emotions and natural blinking. Challenge: the screens share an I2C address, so they go on separate buses,emm... and what are buses?
The servo gave us trouble: it wouldn’t move with low current, it stalled without a capacitor, and it failed because of loose wires. Each mistake taught something about power and solid connections.
The idea was for Orpheus to see you, using computer vision seemed epic to me, but it didn't work at any point because the camera was a clone and didn't work with any library.
The OLEDs didn't want to turn on when the servomotor was on, and like that, there was a voltage fight even though I was using a buck converter.
DRV8833 driver with two TT motors. Learning: you have to disconnect them to upload code, and they run on their own regulator because they generate electrical noise, why is everything so noiiisy
Distance sensor with a voltage divider to protect the chip. The standard reading function was freezing the ESP32, so it was replaced with a manual reader immune to that bug :P
a third screen to keep an eye on the OLED, and control via WiFi from the phone or a Logitech controller. The robot creates its own network and receives orders instantly, but all at the same time, as if it was difficult for Starpheus
The code is essential and it's where I made the most mistakes until I gave up, and Gemini and Claude helped me a lot.(top things I am most thankful for)
// starpheus has is own wifi (u can change name and password) ledcAttach(SERVO_PIN, 50, 12); // 50Hz, 12 bits void servoEscribir(int angulo) { int us = map(angulo, 0, 180, 500, 2500); uint32_t duty = (us * 4095.0) / 20000.0; ledcWrite(SERVO_PIN, duty); }
Documentation of my creation
[ IMG_02 ]The screens showing the face
[ IMG_03 ]The neck with the servo
[ IMG_04 ]The motors and the wheels
[ IMG_05 ]The schematic / wiring
[ IMG_06 ]Control from the phone
[ IMG_07 ]Detail of the wiring and regulators