The Hermes head bezel cover is the front frame of the robot’s head that surrounds and protects the 2.8-inch display.
Its main jobs are to:
Hold the display in landscape orientation
Expose only the active screen area through a rectangular window
Hide the display PCB, wiring, and unused border
Protect the glass from direct impacts
Attach to the rest of the head enclosure
Provide the robot’s finished “face”
The display is installed from behind. Its rear PCB face rests against internal supports, while clips or screws retain the PCB around safe edge areas. Nothing should press directly against the LCD glass, solder joints, connectors, or rear components.
Planned clearances are:
0.5 mm around the display window
0.5 mm around the display PCB
1 mm beyond the tallest rear component
Cable space behind the display for a gentle bend and service loop
The bezel should be printed face-down if that produces a clean window edge without internal support material. The final window and support geometry must still be adjusted to the measured Adafruit PID 1770 PCB outline, active-area position, rear depth, and mounting pattern before the final print.
Status: Approved for schematic capture Revision: 0.5 — 2026-08-06
Project Overview
A small, 3D-printed desktop robot that acts as a Windows USB peripheral for Hermes Agent. The robot provides expressive motion, an animated face, microphone input, and optional local speaker output while the computer performs all AI and speech processing.
Intended Use
Indoor desk use beside a Windows computer.
One-off modular prototype using readily available development boards and modules.
Connected to Hermes Agent Desktop through a small local plugin or companion application.
Intended for learning, experimentation, and expressive AI interaction rather than unattended or safety-critical operation.
What the Device Should Do
Display animated eyes, an optional mouth, and optional status information.
Turn its head approximately 45 degrees left and right.
Raise and lower its left and right arms independently.
React to Hermes states such as listening, thinking, speaking, tool activity, success, and errors.
Offer a fallback reactive mode based on microphone activity and USB/connection state.
Appear in Windows as a standard USB microphone and speaker.
Allow Windows/Hermes to use either the robot audio devices or separate computer audio devices.
Main Features
Verified Adafruit SPI TFT LCD Display Touch ILI9341 module, 2.8-inch, 240 x 320 pixels (Flux part UID 86457530-204e-4e30-9ac7-55b0be369132), mounted landscape for a 320 x 240 face.
Three micro servos: one head and one for each shoulder.
USB audio with microphone input and speaker output.
USB serial or HID control channel for expressions and motion commands.
Two-cable power arrangement for reliability:
USB data/electronics cable from the computer.
Dedicated 5 V USB servo-power cable.
3D-printed body, 6–8 inches (15–20 cm) tall, with no legs.
System Architecture
Text
Windows PC / Hermes Agent
|
| USB data + electronics power
v
Internal USB 2.0 hub
| |
v v
USB audio module RP2040 controller
(mic + playback) | |
| | +--> Adafruit 2.8-inch ILI9341 SPI touchscreen
| +----------> 3 servo control signals
v
Microphones + small audio amplifier + speaker
Dedicated 5 V USB servo supply
|
+--> fuse/protection --> bulk filtering --> 3 micro servos
|
+--> common ground with controller
The internal hub allows the robot to expose both its audio module and motion/display controller through one data cable. The second cable powers only the noisy, high-peak-current servo rail.
Hardware Subsystems
Controller
Approved part: Raspberry Pi Pico SC0915 (Flux part UID e29510c9-a78c-431c-982d-b47536d971fc).
Reasons:
Native USB device support for a serial or HID command channel.
Adequate SPI performance for a small animated TFT.
Enough PWM/GPIO resources for three servos.
Good Arduino and CircuitPython ecosystem for a learning-focused prototype.
Face Display
Approved part: Adafruit SPI TFT LCD Display Touch ILI9341, 2.8-inch 240 x 320 SPI touchscreen module (Flux part UID 86457530-204e-4e30-9ac7-55b0be369132), mounted landscape for a 320 x 240 face. This verified library part replaces every earlier planned or unverified 2.4-inch display direction.
Display modes:
Animated eyes only.
Eyes and mouth.
Expressions plus compact status text/icons.
Touch is approved for wiring where Pico GPIO availability permits; display operation remains the primary requirement.
Motion
Three 9 g micro servos.
Metal-geared MG90S-class servos are preferred for durability, subject to mechanical load testing.
Head travel limited in firmware and mechanically to approximately ±45 degrees.
Each shoulder provides one degree of freedom: arm raise/lower.
Firmware must use eased acceleration and avoid commanding all servos to reverse abruptly at once.
USB Audio
Approved codec: CM108B USB audio codec in headset mode (USB Audio Class playback + recording), using its internal crystal-free oscillator, internal ADC/DAC, microphone bias/input, and stereo analog outputs.
Preferred characteristics:
Windows class-compliant USB audio.
Two or more microphones.
Acoustic echo cancellation, noise suppression, and voice activity detection where available.
Playback output suitable for feeding a small amplifier.
Do not base the prototype on the original EOL ReSpeaker USB Mic Array. Confirm the currently available ReSpeaker Lite/XVF-series variant and its playback interface before purchase.
Speaker Output
Small 4 ohm or 8 ohm speaker in the body.
Compact class-D amplifier module driven by the USB audio module’s analog playback output, if that output is available on the selected module.
Physical or software volume control is desirable.
Speaker placement and microphone isolation must minimize acoustic feedback.
USB Hub
Approved FE1.1s USB 2.0 four-port hub, bus-powered from DATA_5V.
One protected upstream pair from the Windows PC.
Two populated protected downstream pairs: Raspberry Pi Pico SC0915 and CM108B. Unused hub ports are intentionally not populated.
Every used USB D+/D- pair has USBLC6-2SC6 protection placed connector-side before hub/device circuitry.
Servo Power and Protection
Separate 5 V USB input rated for at least 3 A.
Selected fuse: F2 Bel Fuse 0ZCF0300AF2C, resettable PPTC, 2920 SMD, 15 Vdc, 3.00 A hold / 5.20 A trip at 23°C. SMD050F-2 remains prohibited on SERVO_5V because its 0.50 A hold rating cannot pass this rail.
Reverse-current/backfeed prevention between the servo input and computer USB power.
Installed bulk: two Chemi-Con EMZS250ARA102MJA0G low-ESR SMD aluminum electrolytics, 1000 uF/25 V each (2000 uF total), 60 mOhm max ESR and 1.19 A rated ripple each at 105 C/100 kHz, plus local ceramic bypassing.
Common ground between servo supply and controller; 5 V power rails remain isolated from each other.
Interfaces and Connections
Table
Interface
Purpose
USB data/electronics input
Hub upstream connection; Windows audio and robot control
USB servo-power input
Dedicated 5 V supply for three servos
USB Audio Class
Robot microphone and speaker selection in Windows
USB serial or HID
Hermes/companion-app motion and expression commands
SPI
Controller to TFT face display
3 x PWM
Head, left-arm, and right-arm servos
Analog audio
USB audio playback output to class-D amplifier, if required
Power and Runtime Expectations
The robot is always tethered; no battery is planned.
Data-side electronics should target no more than 500 mA from a conventional USB port unless the selected hub and computer connection explicitly support more.
Servo supply should be a regulated 5 V, 3 A USB wall adapter or equivalent dedicated source.
Power Tree and Preliminary Budget
Computer USB data rail
Table
Load
Preliminary allowance
RP2040 controller
50 mA
Adafruit 2.8-inch ILI9341 touchscreen and backlight
Verify module maximum; budgeted within the negotiated DATA_5V source limit
USB hub overhead
30–80 mA
USB microphone/audio module
100–200 mA
Total planning range
280–510 mA
The exact audio module and TFT backlight current must be confirmed. If the measured total exceeds a reliable 500 mA budget, use a hub with controlled external power while preserving backfeed isolation.
DATA_5V input protection is Micro-USB VBUS → SMD050F-2 (0.50 A hold / 1.00 A trip) → DATA_5V, with SMF5.0A from protected DATA_5V to GND. This fuse is suitable only for the lower-current data input.
Dedicated 5 V servo rail
Table
Load
Preliminary allowance
Three MG90S-class servos moving
approximately 0.3–1.5 A combined, motion-dependent
Three-servo worst-case/stall allowance
up to approximately 2.6 A combined
Selected supply target
5 V, at least 3 A
Servos must not be powered from the controller board or computer USB data rail.
Servo power path is J7 VBUS (SERVO_VBUS_RAW) → F2 0ZCF0300AF2C → protected SERVO_5V. D3 SMF5.0A remains on the protected side to common GND. F2 is rated 15 Vdc, 3.00 A hold / 5.20 A trip at 23°C, with an 8 A / 20 s maximum trip-time test point and 10 mΩ initial minimum / 48 mΩ post-trip-or-solder R1max. At 3 A this corresponds to approximately 30–144 mV drop (0.09–0.432 W), with an untouched device expected near the low end. The preliminary 2.6 A combined servo-stall allowance is below its room-temperature hold rating, while its thermal delay tolerates brief startup/stall pulses. Limitation: hold current derates to about 2.49 A at 40°C (83%), so sustained simultaneous stall or high enclosure temperature may trip it; firmware motion staggering and bench thermal validation remain required. DATA_5V and SERVO_5V share GND only; their VBUS conductors are never tied.
Standalone reactive mode uses audio activity and connection status when Hermes events are unavailable.
Example Command Model
Text
STATE THINKING
STATE SPEAKING
FACE HAPPY
FACE EYES_ONLY
ARM LEFT 70
ARM BOTH WAVE
HEAD -30
BRIGHTNESS 60
MODE REACTIVE
The final protocol should include travel limits, rate limits, and a neutral/home command.
Manufacturing and Assembly Expectations
Revision 1 uses modules and hand wiring rather than a custom all-in-one PCB.
Use keyed or clearly labeled connectors for the servos and power inputs.
Use strain relief on both USB cables.
Provide access to the RP2040 reset/boot controls and USB connector.
The body should be serviceable with screws; avoid permanently glued electronics.
A later revision may replace the wiring with a small carrier/interconnect PCB.
Firmware-Relevant Hardware Requirements
Store neutral positions and motion limits for each servo.
Smooth motion profiles to reduce noise and current spikes.
Watchdog or timeout that returns servos to a safe neutral pose after lost communication.
Non-blocking display and servo animation.
USB command parser with acknowledgments and version reporting.
Configurable face modes and screen brightness.
Manual demo/reactive mode independent of Hermes.
Physical Design Expectations
Overall height: 6–8 inches (15–20 cm).
3D-printed head, torso, and two arms; no legs.
Screen forms most of the front face.
Head rotates around a vertical axis with ±45-degree travel.
Arms rotate at the shoulders to raise/lower independently.
Microphones need unobstructed acoustic openings away from the speaker.
Internal structure must provide rigid servo mounts, wire clearances, cable strain relief, and access for assembly.
The body should have enough mass or a weighted base to resist tipping when both arms move.
Important Design Decisions
Approved: Replace all planned/unverified 2.4-inch TFT references with the verified Adafruit 2.8-inch ILI9341 SPI touchscreen module, Flux part UID 86457530-204e-4e30-9ac7-55b0be369132.
Approved module set for the first-pass carrier schematic: Raspberry Pi Pico SC0915, FE1.1s USB hub, CM108B USB audio, the verified Adafruit display, and three 1x3 servo headers.
USB protection is mandatory: USBLC6-2SC6 on the hub upstream pair and on each populated downstream pair (Pico and CM108B), connector-side before the protected IC/module; SMD050F-2 plus SMF5.0A on DATA_5V; SMF5.0A on SERVO_5V with the higher-current fuse selection left open.
Servo interface: three external MG90S-class servos connect through independent 1x3 2.54 mm headers, each carrying GND, SERVO_5V, and one dedicated Pico PWM GPIO.
DATA_5V supplies hub/controller/display/audio only and must remain within the negotiated USB source limit; SERVO_5V is a separate 5 V/3 A input. The rails share GND only and must never be tied together.
The Windows computer performs all AI and speech processing.
The robot is a USB peripheral rather than a standalone AI computer.
The first prototype uses off-the-shelf modules.
Reliability takes priority over a single cable, so servo power uses a second USB cable.
One data cable still carries both robot control and USB audio through an internal hub.
Audio input/output and external computer audio remain selectable options.
Assumptions
Hermes lifecycle hooks/plugin APIs available in the installed version are sufficient to derive the desired animation states.
A currently supported ReSpeaker/XMOS module with Windows USB audio and playback capability will be available.
The printed head and arms are lightweight enough for genuine MG90S-class servos.
The user has access to a 3D printer and a regulated 5 V/3 A USB power adapter.
The first enclosure can be adjusted after fit and acoustic testing.
Prototype Success Criteria
Windows detects the robot controller and USB audio without a custom kernel driver.
Hermes events trigger visible expressions and motions with acceptable latency.
Robot microphone works for understandable near-field speech.
Robot speaker can play Hermes speech without unstable feedback at normal desk volume.
Simultaneous servo motion does not reset or disconnect the controller/audio devices.
Head and arm motion remain within safe mechanical limits.
Robot remains stable on the desk during normal gestures.
Open Items Before Purchasing
Approved Off-board Display Interface (Rev 0.5)
The Adafruit 2.8-inch ILI9341 SPI touchscreen remains the approved purchased display module and is mounted off-board in the moving robot head. The main PCB no longer carries the oversized display-module footprint. It carries J8, JST SM10B-GHS-TB(LF)(SN): GH family, 10 positions, 1.25 mm pitch, right-angle SMT, polarized/locking, approximately 1 A per contact. The cable requires JST GHR-10V-S housing and ten SSHL-002T-P0.2 crimp contacts, with flexible wire and strain relief appropriate for repeated head motion.
Table
J8 pin
Main-board net
External display connection
1
GND
GND
2
DATA_5V
VCC and LED/backlight
3
TFT_SPI_SCK
SCK and T_CLK
4
TFT_SPI_MOSI
MOSI and T_DIN
5
TFT_SPI_MISO
MISO and T_DO
6
TFT_CS
CS
7
TFT_DC
D/C
8
TFT_RESET
RESET
9
TOUCH_CS
T_CS
10
TOUCH_IRQ
T_IRQ
This is the minimum sensible contact count for eight distinct TFT/touch signals, DATA_5V, and GND. J8 MP_1/MP_2 are mechanical no-connects. The module SD-card interface remains intentionally unused. Verify mating-face pin numbering against the JST drawing before harness manufacture.
Open Items Before Purchasing
Bench-validate F2 0ZCF0300AF2C temperature rise and nuisance-trip margin with three real servos in the enclosure; the fuse selection and schematic implementation are complete.
Measure or obtain guaranteed current consumption for the selected TFT/backlight and complete DATA_5V enumeration/current-budget validation.
Estimate printed head/arm mass and confirm MG90S torque margin.
Decide whether USB serial or HID is the preferred robot command transport after a small Windows/Hermes proof of concept.
Confirm CM108B C12 VREF capacitance from a legible official reference schematic; the datasheet mandates decoupling but the searched application-note text did not expose a numeric value. C12 remains 1 uF and is explicitly not release-confirmed. C13 VBIAS=1 uF and the 100 nF AVDD/DVDD local bypass values are also retained as engineering defaults pending authoritative numeric confirmation.
Change Notes
Rev 0.4: Selected and implemented F2 Bel Fuse 0ZCF0300AF2C (2920 resettable PPTC) between J7 raw VBUS and protected SERVO_5V; retained D3 SMF5.0A on the protected side; documented electrical ratings, voltage drop, transient behavior, and thermal-derating limitation.
Rev 0.3: Locked SC0915, FE1.1s, CM108B, verified Adafruit 2.8-inch 240x320 ILI9341 SPI touch display, three external MG90S-class servo headers, DATA_5V/SERVO_5V isolation, per-pair USBLC6-2SC6 protection, and per-input TVS protection. Restricted SMD050F-2 to DATA_5V and recorded the required higher-current SERVO_5V fuse as an open safety item.
Rev 0.2: Approved the verified Flux library Adafruit 2.8-inch ILI9341 SPI touchscreen (UID 86457530-204e-4e30-9ac7-55b0be369132) and replaced every earlier 2.4-inch display reference; fixed the first-pass module set and explicitly preserved separate DATA_5V and SERVO_5V domains.
Rev 0.1: Captured the agreed 6–8 inch, Windows-connected Hermes robot concept; selected the modular two-cable architecture; added preliminary module directions, power budget, integration approach, and prototype success criteria.