Original eight-servo era document. Copied from the original Google Doc on October 12, 2026. The text below retains its own historical status and later additions; “current” refers to the document’s observation period, not today. All original posts · Current project status.
Later V1 correction: the built robot used a 1000 mAh pack, not the proposed 2600 mAh pack. GPIO33–37 belong to octal PSRAM on the delivered N16R8; the provisional GPIO33/34 assignments below were superseded. Use the V1 hardware guide and maintained S3 pin map for the later build record.
A remote “master brain” does the thinking over WiFi; an ESP32-S3 onboard the robot streams senses up and executes motion and speech commands down.
Part: Freenove ESP32-S3-WROOM CAM board — N16R8 variant (16MB flash / 8MB octal PSRAM; use the R8 PSRAM version for camera streaming).
Included with board: OV2640 camera on dedicated connector; microSD slot; 16MB flash. The slot is physically available, but whether microSD remains enabled depends on the final GPIO map.
Role: Streams camera video (MJPEG ~VGA) and mic audio to the master brain over WiFi; receives commands; generates 8 hardware servo PWM signals through the ESP32-S3 MCPWM peripheral; plays received speech through the amp; drives the OLED; monitors battery voltage.
Power: 5V into the board’s 5V pin from Buck #2. Onboard regulator produces 3.3V for the chip, camera, and small peripherals. The Freenove board’s USB-UART USB-C port remains a separate firmware/programming connection. The charger board has its own charge-only USB-C port. Turn master power off before programming or charging; use OTA updates when practical.
3. Sensing & Output Peripherals (wired to body controller)#
Part
Interface
Power
Notes
INMP441 I2S microphone
I2S (shares clock lines with amp)
3.3V from board pin
Keep wires short, away from servo power runs
MAX98357A I2S amplifier
I2S (shares clock lines with mic)
5V from Buck #2 rail
~2W into 8Ω
Speaker, 28mm 8Ω 2W
Speaker terminals on amp
—
Mount against a cavity/enclosure if possible; keep physically away from mic
0.96” OLED display
I2C (2 pins)
3.3V from board pin
Face/status display
Battery voltage divider
1 ADC pin
—
100kΩ + 47kΩ from battery+ (after switch); 0.1µF ceramic cap from ADC pin to GND. For low-battery voice warning and deep-sleep protection. Calibration needed.
Current GPIO budget: 8 MCPWM servo outputs + 4 I2S + 2 I2C + 1 ADC = 15 pins. MCPWM resolves the camera/LEDC channel conflict, but physical pin availability remains tight. The first map will be bench-tested; preserving microSD and native USB at the same time may require pin sharing or a later hardware revision.
Servos: 8× MG90S metal-gear micro servos (per original Sesame BOM)
Servo rail: Hand-soldered power distribution rail carried over from the original Sesame design. The 8 servo signal lines use MCPWM, which is separate from the LEDC channel used for camera XCLK.
Rail power bus: 5V from Buck #1
Rail ground bus: common ground
Signal wires: individually from Freenove GPIO pins to each servo
USB-C power source (charge port only) │Panel-mount USB-C port (mounted in shell) │HiLetgo 2S/3S/4S USB-C boost charger board ── configured for 2S (8.4V), ASIN B0CHS2DXKZ │ BAT +/− (NTC/TEMP compatibility is not yet confirmed; insulate any unused lead) │2S1P 18650 battery pack, 7.4V 2600mAh, seller-listed protected, ASIN B0DR33HLQ5Keyed battery connector │Inline fuse (rating selected after peak-current testing) │KCD1 mini rocker switch ←— MASTER POWER SWITCH │ ┌────┴─────────────────┐Buck #1: MINI560 PRO 5A Buck #2: MINI560 PRO 5A(5V, servo rail) (5V, electronics) │ ├── Freenove 5V pin ── onboard 3.3V reg ── mic, OLEDServo rail + 1000µF bulk └── MAX98357A ampcapacitor ── 8× MG90S
All grounds are electrically common, but the servo return and electronics return must remain on separate physical paths until the central battery/power-split point. Connect the pack through a keyed removable connector and inline fuse before the master switch; do not route combined servo current through perfboard or controller wiring.
Separate regulated 5V branches: one for servos, one for electronics. They share ground; separate regulators reduce servo noise reaching the camera/mic rail.
~19Wh nominal; seller-listed onboard protection. Runtime and NTC behavior to be measured.
Panel-mount USB-C extension cable
1
Puts the charge port on the shell; robot charges like a phone
KCD1 mini rocker switch
1
Master power, load side only
100kΩ + 47kΩ resistors
2
Battery voltage divider to ADC
0.1µF ceramic + 1000µF electrolytic capacitor
1 each
0.1µF on ADC input; 1000µF (10V minimum) near servo rail for bulk buffering
6. Protection & Longevity (built into the design)#
Pack protection PCB (seller-listed, internal): overcharge, over-discharge, and short-circuit protection. Verify the delivered pack before relying on it; this does not by itself confirm cell balancing.
Charger CC/CV termination: configured for a 2S 8.4V charge. The charger and pack protection are separate layers; exact behavior will be checked during first-charge testing.
NTC thermistor: the pack includes an NTC lead, but charger TEMP compatibility and wiring are still unresolved. Insulate the lead until verified.
Buck dropout behavior: the MINI560s are expected to lose regulation as pack voltage falls. This system behavior works as a planned safe fail point in the system.
Firmware guardian (voltage divider): at ~7.0V the robot announces “battery low” through its speaker; at ~6.8V it parks servos and deep-sleeps
Failure point note: Proper operation is to flip the KCD1 off when the robot runs down. If the robot sits with the switch on for months on low/no charge, the battery could fully drain and not take a charge later.
First-charge validation: supervise the first full charge — confirm the charger is set to 2S, voltage never exceeds 8.4V, nothing more than warm. Explosion hazard otherwise — Suicide bomber robot bad.
Nylon standoffs or printed spacers plus cable ties/lacing and strain-relief hardware for a removable electronics tray
KCD1 mini rocker switch
100kΩ + 47kΩ resistors and 0.1µF ceramic capacitor for battery-voltage sensing
1000µF electrolytic capacitor, 10V minimum, mounted near the servo rail
M2 × 5mm self-threading screws (~40)
M2.5 × 5mm machine screws (~10, servo horns)
11-part printed Sesame body/frame set; internal frame may require modification for the 18650 pack and added electronics
(maybe?) Panel-mount USB-C extension cable
Silicone hookup wire: 20AWG for battery → connector → fuse → switch → power split → buck inputs and for the Buck #1 → servo-rail main trunk (~1m); 22AWG for short servo-power branches; 30AWG for PWM, I2S, I2C, and ADC signals; plus heat-shrink assortment
Treat the chassis as two electrical zones, preferably on two removable decks: a lower dirty-power/motion zone and an upper quiet radio/audio/sensing zone. Keep the battery centered and low.
Split battery power near the master switch. Run a separate paired positive/negative feed to each buck converter.
Buck #1 must feed the heavy servo rail directly. Buck #2 must feed the ESP32, microphone, OLED, and amplifier electronics rail.
All grounds remain electrically common, but servo return current and electronics return current should meet only at the central battery/power-split point.
Do not carry servo current through perfboard traces, ESP32 ground pins, or thin daisy-chained wiring.
Keep servo-power wiring in a separate chassis channel from camera, I2S, I2C, ADC, and PWM wiring. If they must cross, cross at approximately 90 degrees.
Leave approximately 15mm of empty space around the ESP32 antenna: no battery, converter, servo bundle, speaker, OLED board, perfboard copper, metal bracket, or large screw.
Keep the two buck converters approximately 20–30mm apart when space permits, components exposed to air, and both away from the antenna and microphone.
Twist the amplifier OUT+ and OUT− speaker conductors together. Neither MAX98357A speaker output connects to ground.
Use separate printed wire channels for servo power and low-current signals, with strain relief where every leg harness exits the body.
Leave service loops only where joints move; keep all loose wire clear of servo horns and linkages.
Mount the electronics on a removable tray with connectors accessible from one side. Label every servo header by position and joint.
Do not mount the microphone on the same rigid bracket as the speaker. Place the microphone and speaker at opposite ends of the body.
Use a sealed or semi-sealed printed speaker cavity. Software should mute or reduce microphone capture while the robot speaks until echo cancellation is added.
Validation before committing the final printed chassis#
Move all eight servos simultaneously while camera streaming, microphone recording, and speaker playback are active.
Monitor both 5V rails for voltage dips and check buck, battery, switch, connector, fuse holder, and wiring temperatures during sustained walking.
Test WiFi with the final shell installed. Reposition the ESP32 or clear the antenna pocket if signal quality falls materially.
Measure actual startup and stall transients before choosing the fuse rating, and bench-validate that Buck #1 survives the combined servo load.
9. Generation 2 architecture — provisional development direction#
This is a Generation 2 evaluation candidate, not a committed replacement for the unfinished Generation 1 build. An Amazon listing currently places the Waveshare ESP32-P4-WIFI6 standard board near $18, but seller identity, board revision, availability, and the final delivered configuration must be verified before frame design or bulk purchase.
Integrated functions: ESP32-P4 with 32MB PSRAM, 32MB NOR flash, ESP32-C6 Wi-Fi 6/Bluetooth, MIPI-CSI camera input, MIPI-DSI display output, onboard microphone, audio codec/amplifier with an 8Ω 2W speaker connector, TF/microSD slot, USB 2.0 OTG, hardware H.264/JPEG encoding, and 27 exposed programmable GPIOs.
Provisional package: ESP32-P4-WIFI6 for camera, microphone, speaker audio, Wi-Fi, storage, video encoding, and the Ainekio network protocol; Kakute H7 Mini for IMU sensing, body orientation, motion control, failsafes, and the current eight servo signal outputs; existing high-current 5V servo power/distribution rail for the MG90S servos.
Parts potentially replaced: Freenove ESP32-S3-WROOM CAM board, OV2640 camera system, INMP441 microphone, MAX98357A amplifier, and the Freenove microSD implementation. The existing speaker may connect directly to the P4 board. The OLED may remain on exposed I2C/SPI GPIO because the board’s DSI interface targets substantially larger displays.
Parts still required: a compatible MIPI-CSI camera module such as an OV5647-class board, Kakute or another motion controller, powered servo rail, battery, charger, regulators, switch, protection components, wiring, and the physical speaker.
No third Pi, Radxa, or other Linux board is required while the heavy AI remains on the remote machine. A Linux board becomes relevant only if a later model needs substantial onboard vision, applications, or autonomous operation.
Confirm the exact board dimensions, mass, connector clearance, camera-board footprint, and antenna placement from the delivered hardware.
Measure idle and full-load power, regulator temperature, boot time, and Wi-Fi performance inside the final shell.
Verify simultaneous camera capture/H.264 streaming, microphone input, speaker playback, TF-card access, and UART communication with the Kakute.
Confirm that the required ESP-IDF camera, audio, ESP32-C6 networking, and storage drivers are stable enough for the project.
Bench-test a compatible MIPI camera and verify image quality, latency, ribbon routing, lens placement, and availability.
Keep servo timing and body safety on the Kakute when the two-board architecture is used, even though the P4 exposes MCPWM-capable GPIO.
Status
This section records an architecture under investigation. Generation 1 is not finished, and the existing shopping list remains the active prototype build. No Generation 2 component named below is a committed purchase or final design. As Generation 1 develops, testing and new use cases reveal limitations and make different