It has a face
Blinks, breathes and changes expression on its own.
U1 · 2.0" IPS displayPebble-chan looks at you, talks back and nods along. Every part that makes it work is in one box, printed shell included.
Watch it run
Assembled kit tracking a face, talking, and being picked up mid-sentence.
Product demo video
Drop the real clip in here — the layout is already sized for 16:9.
What it does
Every tile cites the part that provides it.
Blinks, breathes and changes expression on its own.
U1 · 2.0" IPS displayPan and tilt, each reporting where it actually got to.
M1 + M2 · SCS0009Onboard camera. Point the head at whoever is talking.
U1 · GC0308A 1 W speaker and two mics. No extra module.
U1 · AW88298 + ES7210Wi-Fi and Bluetooth. Wire it to whichever API you like.
U1 · ESP32-S3JavaScript on the Moddable SDK. The controller is a stock CoreS3, so Arduino and M5Unified work too. Clone it and go.
$ git clone https://github.com/ meganetaaan/stack-chan.git $ cd stack-chan && npm i $ npm run setup -- --device=esp32 $ npm run flash # the face comes up. ▋
In the box
Including the printed shell and the fasteners. You supply a USB-C cable and a computer.

ESP32-S3 controller with a 2.0" touch display, camera, dual mics and speaker. This is the face and the brain.
6 V, 2.3 kg·cm, 300° of travel. Turns the head left and right.
Same servo, its own address on the bus. Nods the head up and down.
Drives both servos over one RS485 pair and carries the servo power rail.
USB to TTL. Set servo IDs and centre positions from your laptop.
5.5 mm DC plug, sized so both servos can stall at once without a brownout.
Printed here and shipped with the kit. You do not need a printer.
40-pin, male/male, male/female and female/female.
Breaks PORT.A out to individual jumpers for bench work.
High-tensile, black oxide, countersunk so the shell sits flush.
Bus decoupling. Stops servo inrush from browning out the controller.
Specifications
Stock M5Stack and Feetech parts, named exactly. Look them up before you buy — we would.
| MCU | ESP32-S3 · Xtensa LX7 dual-core @ 240 MHz |
|---|---|
| Flash / PSRAM | 16 MB / 8 MB |
| Display | 2.0" IPS · 320 × 240 · ILI9342C |
| Touch | Capacitive · FT6336U |
| Camera | GC0308 · 0.3 MP |
| Microphone | ES7210 codec · dual input |
| Speaker | AW88298 I²S amplifier · 1 W |
| IMU | BMI270 6-axis + BMM150 magnetometer |
| Light sensor | LTR-553ALS-WA proximity / ambient |
| Power / RTC | AXP2101 PMIC · BM8563 RTC |
| Battery | 200 mAh LiPo |
| Storage | microSD slot |
| Ports | HY2.0-4P (PORT.A) · M5-BUS |
| USB | USB-C · OTG and Serial/JTAG |
| Dimensions | 54.0 × 54.0 × 16.5 mm |
| Mass | 54 g |
| MCU | ESP32-S3 · Xtensa LX7 dual-core @ 240 MHz |
|---|---|
| Flash / PSRAM | 16 MB / 8 MB |
| Display | 2.0" IPS · 320 × 240 · ILI9342C |
| Touch | Capacitive · FT6336U |
| Camera | GC0308 · 0.3 MP |
| Microphone | ES7210 codec · dual input |
| Speaker | AW88298 I²S amplifier · 1 W |
| IMU | BMI270 6-axis + BMM150 magnetometer |
| Light sensor | LTR-553ALS-WA proximity / ambient |
| Power / RTC | AXP2101 PMIC · BM8563 RTC |
| Battery | 200 mAh LiPo |
| Storage | microSD slot |
| Ports | HY2.0-4P (PORT.A) · M5-BUS |
| USB | USB-C · OTG and Serial/JTAG |
| Dimensions | 54.0 × 54.0 × 16.5 mm |
| Mass | 54 g |
| Model | SCS0009 serial bus servo |
|---|---|
| Voltage | 6 V |
| Torque | 2.3 kg·cm |
| Travel | 300° |
| Bus | RS485, addressable |
| Feedback | Position readback |
How you build it
In order, because the order matters — set the servo addresses before anything is bolted shut.
Plug each servo into the FE-URT-1, give it an address, and centre it. Two minutes each, done once.
Both servos bolt into the printed brackets with the M2 and M3 fasteners. Pan on the bottom, tilt on top.
Servos to the driver board, driver board to the controller, power supply to the rail. One pair of wires for both servos.
Pull the Stack-chan firmware, build with the Moddable SDK, push it over USB-C. The face comes up and the head finds centre.
No. The shell and the servo brackets are printed here and ship in the box. If you would rather print your own, the Stack-chan project publishes the models.
It is our build kit, assembled around the open-source Stack-chan project and an M5Stack CoreS3 Lite. It is not the official M5Stack product — that is a different, pre-assembled device with its own hardware. The software is Stack-chan and we take no credit for it.
Stack-chan runs on the Moddable SDK, so the behaviour is JavaScript. The controller is a stock CoreS3 Lite, so the Arduino core and M5Unified work as well if you prefer C++.
No. The face, the motion and the sensors all run on the device. Wi-Fi is there for when you want to reach a speech or language API, and that choice is yours.
A USB-C cable and a computer to flash it. Nothing else.
Kits dispatch within 1–2 weeks of your order being confirmed. Reserving costs nothing — you pay when we confirm your batch.
Reserve
Nothing is charged now. We email you when your kit is boxed, and you pay then.