

Brain
Personal assistant characterized by Bender from Futurama
- Size
- 100 × 100 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 225
- Nets
- 168
- Pads
- 783
- Tracks, vias
- 1,684, 723
- Pours
- 51
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 3 Apr 2026
- Updated
- 4 Aug 2026
Overview
Brain is an open-source printed circuit board by Pegoku, from the Pegoku/SarcasmOS repository on GitHub. It is a 4-layer board of 100 × 100 mm with 225 parts on 168 nets, routed with 1,684 tracks and 723 vias.
It is built around the ESP32-S3-WROOM-1-N8, AP63203WU and AP63205WU, with the CH221K, MAX17049G+T10 and R5460N214AF-TR-FE among its other parts. Its parts include 96 capacitors, 61 resistors, 14 connectors, 11 diodes and 9 ICs. It belongs with the ESP32 boards of this library.
Main components
10ESP32-S3-WROOM-1-N8
SMD,25.5x18mm-40℃~+85℃ -98.2dBm 2.4GHz 20.5dBm 355mA 3V~3.6V 95mA Bluetooth5.0 ESP32-S3 Chip On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesAP63203WU
TSOT-23-6-40℃~+85℃@(TA) 1 1.1MHz 22uA 2A 3.3V 3.8V~32V Buck Built-in Fixed Overcurrent Protection、Light load efficient mode、Cycle-by-cycle current limiting、Hiccup current limiting、EMI optimization (spread spectrum) Step-down type Yes TSOT-23-6 DC-DC Converters ROHSDiodes IncorporatedDC-DC ConvertersAP63205WU
TSOT-23-6-40℃~+85℃@(TA) 1 1.1MHz 22uA 2A 3.8V~32V 5V Buck Built-in Fixed Overcurrent Protection、Light load efficient mode、Cycle-by-cycle current limiting、Hiccup current limiting、EMI optimization (spread spectrum) Step-down type Yes TSOT-23-6 DC-DC Converters ROHSDiodes IncorporatedDC-DC ConvertersCH221K
SOT-23-6-40℃~+105℃ 100W 5V、9V、12V、15V、20V PD 3.0 Power Receiver Controller SOT-23-6 USB PD ROHSWCH (Nanjing Qinheng Microelectronics)USB PDMAX17049G+T10
TDFN-8-EP(2x2)-40℃~+85℃ 2 2.5V~4.5V 23uA I2C Lithium Battery Monitoring IC Not supported Not supported TDFN-8-EP(2x2) Battery Management ROHSMaxim Integrated (Analog Devices)Battery ManagementR5460N214AF-TR-FE
SOT-23-6-40℃~+85℃ 1.5V~10V 100nA 2 Lithium Battery Not supported Protection IC Support SOT-23-6 Battery Management ROHSNisshinbo Micro Devices Inc.Battery ManagementCSD17577Q3A
VSONP-8(3.3x3.3)-55℃~+150℃ 1 N-channel 1.8V 103pF 2.31nF 270pF 30V 35nC@10V 53W 6.4mΩ@4.5V 83A N-Channel VSONP-8(3.3x3.3) MOSFETs ROHSTexas InstrumentsMOSFETsCBW160808U601T
0603-55℃~+125℃ 1 1A 300mΩ 600Ω@100MHz ±25% 0603 Ferrite Beads ROHSGuangdong Fenghua Advanced Tech (FH)Ferrite BeadsICS-43434
LGA-6(3.5x2.7)-26dB -40℃~+85℃ 0.98mm 1.65V~3.63V 2.65mm 3.5mm 550uA 64dB I2S Omnidirectional Omnidirectional pickup LGA-6(3.5x2.7) MEMS Microphones ROHSTDK InvenSenseMEMS MicrophonesSMBJ15A
DO-214AA(SMB)-65℃~+150℃ 15V 18.5V 1uA 24.4V 24.6A@10/1000us 600W@10/1000us TVS Unidirectional DO-214AA(SMB) ESD and Surge Protection (TVS/ESD) ROHSMDDESD And Surge Protection (TVS/ESD)
README
README.mdSarcasmOS
SarcasmOS is a personality-first voice assistant. The core idea is simple: take a smart assistant like Alexa or Google Home, then give it a face, a voice, and most importantly, a personality. Instead of answering like a neutral corporate box, SarcasmOS replies in Spanish with dry humor, sarcasm, and animated expressions inspired by Bender.
This project focusses on the software and AI side of the assistant, but it also includes various hardware elements, like multiple PCBs, sensors, motors, and quite a bit of 3D printing. The goal is to have a memorable, sarcastic, and show-like assistant that can be used both for fun and real tasks like controlling smart home devices, playing music reviewing your agenda, or answering questions.
Demo Video
Do not click here
Why did we Build This?
Futurama is a classic tv show we love (and you should too). Bender is the most memorable character, and his sarcastic personality is a perfect fit for a voice assistant. We wanted to build a voice assistant that is not just a plain, neutral box, but one that has a personality and you won't just use it to get things done, but also to have fun and be entertained
Images

CAD - click to expand

Brain PCB

Brain PCB schematic - click to expand

Brain PCB layout - click to expand

Eye PCB

Eye PCB schematic - click to expand

Eye PCB layout - click to expand

Mouth PCB

Mouth PCB schematic - click to expand

Mouth PCB layout - click to expand

Language Scope
SarcasmOS is designed to work in Spanish first.
The language model prompt, personality, expected user input, and generated responses are all tuned for Spanish. Other languages may work accidentally depending on the upstream model, but they are outside the intended behavior of this project.
Features
- Listens to speech input.
- Transcribes speech to text.
- Generates Spanish answers with a sarcastic character voice.
- Converts the answer back to speech.
- Syncs audio playback with an animated face.
- Stores memory of past interactions.
- Has a web interface for chat, audio, history and configuration.
- Has integrated speaker and microphone.
- Custom animations for the eyes and mouth.
- 8k mouth display (128x64 pixels = 8192 pixels).
BOM
It is recommended to use the online google spreadsheet for the most up to date BOM with links and prices.
Click to expand the BOM table
Current State
SarcasmOS is complete, including its Brain, Eye, and Mouth firmware. The finished hardware can listen for its wake phrase, understand a spoken request, use tools, answer in a Spanish Bender-style voice, and coordinate the animated face while it works and speaks.
| Component | Capabilities |
|---|---|
| Brain firmware | Runs the complete voice-assistant workflow on the ESP32-S3: microphone capture, wake-phrase detection, STT, multi-round LLM calls, TTS, speaker playback, conversation memory, a USB console, and a local HTTP API. Its native tools provide weather, local time, Google Calendar search, and live robot status. It also coordinates synchronized face transitions. |
| Eye firmware | Drives the two 240x240 GC9A01A displays from RP2040 boards, with 31 animated expression and weather states, independent left/right artwork, brightness control, and synchronized transitions over I2C. |
| Mouth firmware | Drives the 64x32 HUB75 RGB matrix from an ESP32-S3, with the matching 31 states, blended transitions, speaking intensity, live weather temperatures, brightness control, and acknowledged ESP-NOW communication. |
| Web app | Provides an optional browser interface with chat, voice, history, configuration, and a full-face view. A hosted demo is available at sarcasmos.pegoku.com. |
| Hardware | Includes the finished 3D-printed enclosure, Brain/Eye/Mouth PCBs, microphone, speakers, sensors, motors, and display hardware. |
The Brain is the runtime controller: it talks to the two Eyes over I2C and to the Mouth over acknowledged ESP-NOW. STT, LLM, and TTS remain cloud services, but the physical assistant does not require the Python web backend to run.
Build and Run the Firmware
Bring the boards up in this order so the Brain can be configured with the Mouth's MAC address and matching 2.4 GHz Wi-Fi/ESP-NOW channel.
1. Mouth
Install PlatformIO, connect the Mouth ESP32-S3, and run:
cd Code/Mouth-NeonPCB
pio run -e custom_esp32s3_mini_n8 --target upload
pio device monitor -e custom_esp32s3_mini_n8At boot, note the station MAC address and ESP-NOW channel printed in the serial monitor. The Mouth uses channel 1 by default; its onboard button can select channels 1 through 13. It must match the Brain's Wi-Fi channel. See the Mouth firmware guide for local animation tests, panel wiring, channel controls, and display emulation.
2. Eyes
Install the Raspberry Pi Pico SDK, connect each RP2040 Eye through SWD, and flash the regular I2C firmware:
cd Code/Eye
./flash.sh --left --regular --build --upload --swd-monitor
./flash.sh --right --regular --build --upload --swd-monitorThe left and right Eyes use I2C addresses 0x30 and 0x31, respectively.
The helper also provides self-test and standalone animation-demo firmware. See
the Eye firmware guide for OpenOCD setup, manual builds,
UART monitoring, alternate animation packs, and the desktop editor.
3. Brain
Install ESP-IDF, connect the Brain ESP32-S3, and run:
cd Code/Brain
idf.py set-target esp32s3
idf.py menuconfig
idf.py build
idf.py flash monitorUnder SarcasmOS Brain in menuconfig, set the Wi-Fi credentials, provider
tokens, TTS voice ID, timezone, and the Mouth station MAC recorded above. You
can also configure the wake phrase, audio sensitivity, Eye transition timing,
and ESP-NOW channel. After flashing, the USB console can test every subsystem,
send typed or spoken requests, and update persistent configuration stored in
NVS. See the Brain firmware guide for all settings,
console commands, API endpoints, native tools, and the independent PCB
self-test firmware.
Web Demo
For the already setup web demo, visit https://sarcasmos-7f3c9a2e.easyrumbo.com/.
For the best experience and no ratelimiting, run the local web app.
From Code/AI/Workflow/SarcasmOS-web:
start-all.batOn macOS/Linux:
./start-all.shThis starts:
- Proxy (combines all services into 1 port for easy access):
http://localhost:9000 - Frontend:
http://localhost:5173 - Backend:
http://localhost:8001
You can also start them separately:
python -m http.server 5173
python -m uvicorn backend.app:app --host 0.0.0.0 --port 8001Configuration
The backend reads environment variables from .env files, especially:
Code/AI/Workflow/SarcasmOS-web/backend/.envCode/AI/Workflow/.env
Important variables:
HACK_CLUB_AI_KEY, or separate provider keys.OPENROUTER_API_TOKENfor the language model.REPLICATE_API_TOKENfor STT/TTS if using Replicate.MINIMAX_VOICE_IDfor the TTS voice.FFMPEG_PATHifffmpegis not available on PATH.
More technical detail:
Code/AI/Workflow/SarcasmOS-web/README.mdCode/AI/Workflow/SarcasmOS-web/PROJECT_OVERVIEW.md
Architecture
Microphone / wake phrase / text request
|
v
ESP32-S3 Brain
| | \
| | +--> Cloud STT, LLM/tools, and TTS
| |
| +----------> Mouth over ESP-NOW
|
+-----------------> Left + right Eyes over I2C
|
v
Speaker audio + synchronized animated faceThings that happened when carrying out the project
When it came to making our project a reality we had several problems, because of customs we had to pay almost $200 more than what we had budgeted. We ended up paying more than $600 for the project 😭
When we ordered the electronic components, 4 were missing, for some reason. We told the company and they sent us the missing components (they were less than $1). When they arrived, which they did way after we finshed the project, and they wanted us to pay customs more than $16 for $0.80 of chips...
The flexible display we wanted to use also got lost in the mail, and we had to pay $60 for one, but it didn't arrive either. We ended up using a different display and driver, which we already had from a previos Hackclub YSWS (Neon).
Credits
Built as a physical AI assistant project for Hack Club / Fallout. SarcasmOS is not trying to be polite. It is trying to be memorable.
Parts
225| Qty | Value | Footprint | References |
|---|---|---|---|
| 35 | 10uF | Capacitor_SMD:C_0603_1608Metric | C10, C11, C12, C13, C17, C18, C19, C20, C21, C22, C23, C26, C27, C33, C34, C35 +19 |
| 16 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C8, C9, C25, C28, C36, C40, C59, C62, C64, C65, C66, C67, C68, C69, C82, C96 |
| 12 | 10k | Resistor_SMD:R_0603_1608Metric | R4, R18, R23, R25, R28, R29, R52, R53, R54, R55, R56, R57 |
| 10 | RED_LED | LED_SMD:LED_0603_1608Metric | D1, D2, D3, D4, D6, D7, D8, D9, D10, D11 |
| 8 | 0.1uF | Capacitor_SMD:C_0603_1608Metric | C1, C2, C15, C29, C47, C51, C56, C92 |
| 8 | 1k | Resistor_SMD:R_0603_1608Metric | R6, R7, R8, R9, R10, R11, R40, R41 |
| 8 | 22uF | Capacitor_SMD:C_0805_2012Metric | C42, C43, C48, C49, C50, C57, C58, C94 |
| 7 | TestPoint | TestPoint:TestPoint_Pad_D1.5mm | TP1, TP2, TP3, TP4, TP5, TP6, TP7 |
| 5 | 20k | Resistor_SMD:R_0603_1608Metric | R46, R47, R48, R49, R50 |
| 5 | Conn_01x04 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J2, J4, J5, J6, J11 |
| 4 | 0.22uF | Capacitor_SMD:C_0603_1608Metric | C80, C83, C85, C87 |
| 4 | 10nF | Capacitor_SMD:C_0603_1608Metric | C3, C44, C75, C76 |
| 4 | 49.9R | Resistor_SMD:R_0603_1608Metric | R31, R32, R34, R35 |
| 3 | 1M | Resistor_SMD:R_0603_1608Metric | R1, R30, R39 |
| 3 | 1uF | Capacitor_SMD:C_0603_1608Metric | C14, C16, C90 |
| 3 | Jumper_3_Open | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | JP1, JP2, JP4 |
| 2 | 0.05R | Resistor_SMD:R_1206_3216Metric | R44, R45 |
| 2 | 100k | Resistor_SMD:R_0603_1608Metric | R58, R59 |
| 2 | 220pF | Capacitor_SMD:C_0603_1608Metric | C5, C6 |
| 2 | 22R | Capacitor_SMD:C_0402_1005Metric | R60, R61 |
| 2 | 22nF | Capacitor_SMD:C_0603_1608Metric | C72, C79 |
| 2 | 22uF | easyeda2kicad:CAP-SMD_BD6.3-L6.6-W6.6-FD | C86, C91 |
| 2 | 300R | Resistor_SMD:R_0603_1608Metric | R36, R37 |
| 2 | 330R | Resistor_SMD:R_0603_1608Metric | R14, R15 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric | R12, R13 |
| 2 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C32, C77 |
| 2 | 4.7uH | easyeda2kicad:IND-SMD_L5.0-W5.0 | L3, L4 |
| 2 | 47nF | Capacitor_SMD:C_0603_1608Metric | C30, C31 |
| 2 | 5.11k | Resistor_SMD:R_0603_1608Metric | R2, R3 |
| 2 | 6.8k | Resistor_SMD:R_0603_1608Metric | R42, R43 |
| 2 | 6.8nF | Capacitor_SMD:C_0603_1608Metric | C73, C74 |
| 2 | Battery_Cell | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | BT1, BT2 |
| 2 | CSD17577Q3A | Package_SON:VSON-8_3.3x3.3mm_P0.65mm_NexFET | Q1, Q2 |
| 2 | Conn_01x06 | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J7, J8 |
| 2 | FerriteBead | Inductor_SMD:L_0603_1608Metric | FB1, FB2 |
| 2 | SW_Push | Button_Switch_SMD:SW_SPST_TS-1088-xR025 | BOOT1, EN1 |
| 1 | 1.0 uH | easyeda2kicad:IND-SMD_L7.1-W6.5-P5.60 | L1 |
| 1 | 100R | Resistor_SMD:R_0603_1608Metric | R16 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric | R33 |
| 1 | 10k | easyeda2kicad:RES-ADJ-SMD_3P-L3.8-W3.7_VGF39NCHXT | RV1 |
| 1 | 10k | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | TH1 |
| 1 | 12.4k | Resistor_SMD:R_0603_1608Metric | R38 |
| 1 | 15.8k | Resistor_SMD:R_0603_1608Metric | R26 |
| 1 | 15PF | Capacitor_SMD:C_0603_1608Metric | C71 |
| 1 | 15pF | Capacitor_SMD:C_0603_1608Metric | C70 |
| 1 | 16V 2.6A | Fuse:Fuse_1812_4532Metric_Pad1.30x3.40mm_HandSolder | F1 |
| 1 | 1nF | Capacitor_SMD:C_0603_1608Metric | C24 |
| 1 | 1nF/2kV | Capacitor_SMD:C_1206_3216Metric | C78 |
| 1 | 2.2k | Resistor_SMD:R_0603_1608Metric | R24 |
| 1 | 2.7nF | Capacitor_SMD:C_0603_1608Metric | C45 |
| 1 | 25MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 3.3uH | easyeda2kicad:IND-SMD_L11.5-W10.0_SMMS1040 | L2 |
| 1 | 30.31k | Resistor_SMD:R_0603_1608Metric | R21 |
| 1 | 30.9k | Resistor_SMD:R_0603_1608Metric | R19 |
| 1 | 33k | Resistor_SMD:R_0603_1608Metric | R51 |
| 1 | 33pF | Capacitor_SMD:C_0603_1608Metric | C46 |
| 1 | 47k | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | 5.24k | Resistor_SMD:R_0603_1608Metric | R22 |
| 1 | 52.3k | Resistor_SMD:R_0603_1608Metric | R27 |
| 1 | 6.04k | Resistor_SMD:R_0603_1608Metric | R17 |
| 1 | 68.1k | Resistor_SMD:R_0603_1608Metric | R20 |
| 1 | AP63203WU | Package_TO_SOT_SMD:TSOT-23-6 | U14 |
| 1 | AP63205WU | Package_TO_SOT_SMD:TSOT-23-6 | U12 |
| 1 | AP64501SP-13 | Package_SO:SOIC-8-1EP_3.9x4.9mm_P1.27mm_EP2.29x3mm_ThermalVias | U11 |
| 1 | BAT | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J12 |
| 1 | BQ25792 | Package_DFN_QFN:Texas_RQM0029A_VQFN-29_4x4mm_P0.4mm | U9 |
| 1 | CBW160808U601T | Inductor_SMD:L_0603_1608Metric | FB3 |
| 1 | CH221K | Package_TO_SOT_SMD:SOT-23-6 | U8 |
| 1 | Conn_01x02 | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J14 |
| 1 | Conn_01x05 | Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical | J13 |
| 1 | Conn_01x12 | Connector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_Vertical | J10 |
| 1 | ESP32-S3-WROOM-1 | RF_Module:ESP32-S3-WROOM-1U | U1 |
| 1 | ICS-43434 | Sensor_Audio:InvenSense_ICS-43434-6_3.5x2.65mm | MK1 |
| 1 | MAX17049G+T10 | easyeda2kicad:WSON-8_L2.0-W2.0-P0.50-BL-EP0.9 | U10 |
| 1 | MAX98357A | Package_DFN_QFN:TQFN-16-1EP_3x3mm_P0.5mm_EP1.23x1.23mm | U4 |
| 1 | Motor | easyeda2kicad:CONN-TH_4P-P2.54_MX128-2.54-GN01-04P-CU-Y-A | J9 |
| 1 | R5460N214AF-TR-FE | easyeda2kicad:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BL | U7 |
| 1 | RJ45_Hanrun_HR911105A_Horizontal | Connector_RJ:RJ45_Hanrun_HR911105A_Horizontal | J3 |
| 1 | SMBJ15A | easyeda2kicad:SMB_L4.6-W3.6-LS5.3-RD | D5 |
| 1 | Screw_Terminal_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_Horizontal | J1 |
The 219 most common of 225 parts.
Questions
How big is the Brain PCB?
It measures 100 × 100 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Brain use?
225 parts, built around the ESP32-S3-WROOM-1-N8, AP63203WU, AP63205WU and CH221K. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Brain KiCad files?
From the Pegoku/SarcasmOS repository on GitHub, at the commit this page was made from: the board is PCB/brain/brain.kicad_pcb and its schematic PCB/brain/brain.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Brain design in my own project?
Its repository states no licence, so its author keeps all rights: ask Pegoku before reusing the design.
More from Pegoku/SarcasmOS
2- 2 layers49.6 × 50 mm

- 2 layers40 × 44 mm

Similar boards
- 2 layers100 × 80 mm

Power board
WestianPKl/pcb-docs
A collection of custom PCB designs created in KiCAD, centered around the Raspberry Pi Pico (RP2040) platform. Each board is a standalone module that connects to the Main Board and extends its functionality via I2C, SPI…
75 parts - 4 layers68 × 73.5 mm

Messenger
nickzentmayer/Messenger
This is a repository of hardware and software for a SX1262 radio based messageing device I made. This device supports a messaging protocol named Hermes that I created with insperation from protocols like TCP.
91 parts1 - 4 layers90 × 65 mm

FlySensei Stack Actuation ECAD
denjos007/FlySensei_Stack_ECAD
PCB Design for the Stacked design for Blimp Controller
122 parts - 2 layers80.5 × 53.8 mm

- 4 layers70 × 70 mm

- 2 layers80 × 30 mm

Controller PCB
h2dakhil/FFT-Audio-Spectrum-Analyzer
Real-time audio-reactive LED matrix powered by an ESP32, featuring custom PCB design, I2S microphone input, and dynamic visual effects through FFT signal processing.
42 parts - 2 layers80 × 79 mm

- 4 layers100 × 80 mm

