Hack Club · Starpheus · 2026 ESP32-S3 / SEMI-AUTÓNOMO

STARPHEUS

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
VIDEO!!
First

What is Starpheus

A Wall-E type robot that simulates emotions. Programmed with a ESP32-S3

FACE

3 displays face

Three OLEDs make up its two eyes and its mouth. It simulates emotions with state machines: neutral, sleepy, happy, and scared.

Simulated Detection

ultrasonic sensor

He looks at you with the ultrasonic obstacle detector, he looks at you like you're an obstacle! And obstacles scare him.

Neck

neck with MG996R

A MG996R servo moves its head with expressive motion, controlled by native PWM so it doesn't shake.

movement

He walks!

TT motors with wheels give it mobility. Variable speed with real power control.

Simulated Detection

Avoids Collisions

An HC-SR04 ultrasonic sensor measures distance. If something gets too close, the motors brake by themselves.

LogiTECH

Controll Starpheus!

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

componets and more

The sistem

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.

Brain
ESP32-S3 Wroom-1
Displays
2× 0.96" OLED (eyes) + 1× 0.91" OLED (mouth)
Movement
MG996R servo (neck) + 2 TT motors with DRV8833 driver
Energy
The energy part was difficult, preferably a 7.4V battery with two cells would be used but I don't have money... I made a cable so that Orpheus is 'free'REMEMBER this is a rlly worked out demo jsjsjs
Controll
Own WiFi network · phone or Logitech controller via browser
Fabrication
Custom PCB in KiCad + 3D chassis designed to measure
[ PCB ]PCB designed in KiCad
[ SCHEMATIC ]Schematic diagram
[ 3D VIEW ]3D chassis
my hours of sleep

Time Laps

Building Starpheus was a lot of trial and error. This is the honest story, I'm a mess

1

Emotional Face 0-0

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?

2

servomotor neckwhy is it so dificult?

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.

3

worst desition in life i hate AlliExpress

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.

4

Servomotor and oleds fightam I dumb?

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.

TT motors are economic cus they don't work ... no words

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

6

broken Ultrasonic sensor OK

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

7

logitech control and 3rd eye starpheus ñ

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

thnks gemini

CODE

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);
}