Skip to content

Latest commit

 

History

History
187 lines (144 loc) · 10.5 KB

components.md

File metadata and controls

187 lines (144 loc) · 10.5 KB

Hardware inventory

Buyers: start at shopping.md. The default build has the PCA9685, the MAX98357A, and USB-C on the main control board. This page is the electrical spec for those chips and the plug-in modules (ESP32, servos, OLED, speaker). Breakout SKUs are the advanced path — wiring.md.

Selected hardware only. Substituting a part means updating this file, pinout.md, and either the board design or wiring.md. Servo model may be any preset in servos.json if the printed parts match — parametric design.

Constants cited below match include/pins.h.

Product links

Part Link
Waveshare ESP32-C3-Zero https://docs.waveshare.com/ESP32-C3-Zero
Adafruit PCA9685 breakout (advanced path) https://www.adafruit.com/product/815
Tower Pro SG90 (or equivalent) Widely available hobby servo — no single canonical SKU
Feetech FS0307 See vendor listing for FS0307 analog micro
EMAX ES9051 See vendor listing for ES9051 analog micro
PowerHD HD-1370A (backward compatibility) https://www.chd.hk/Product_Detail.aspx?id=30
MAX98357A breakout (advanced path) https://www.aliexpress.us/item/3256805196806369.html
Adafruit Mini Oval Speaker - 8 Ohm 1 Watt https://www.adafruit.com/product/3923
Waveshare 0.91inch OLED Module https://www.waveshare.com/0.91inch-oled-module.htm
Adafruit 5993 USB-C breakout (advanced path) https://www.adafruit.com/product/5993

Waveshare ESP32-C3-Zero

Field Value
Exact model Waveshare ESP32-C3-Zero (ESP32-C3FH4)
Quantity 1
Purpose Main controller: I2C, I2S, USB CDC, Wi-Fi, onboard RGB
Operating voltage GPIO 3.3 V. External power on the 5V pad: 3.7–6 V (robot uses the +5V rail)
Logic 3.3 V only — do not drive 5 V into GPIO
Radio Wi-Fi 2.4 GHz (product use). BLE present on silicon but out of scope
USB Native USB on GPIO18/19 — reached via the main control board USB-C (onboard USB-C unused when assembled). Advanced path: Adafruit 5993 — wiring.md
Flash 4 MB stacked flash on GPIO12–GPIO17 (those GPIOs are not exposed)
Onboard RGB WS2812 on GPIO10
Firmware notes Boot: dim green status. Animations: white (typing/reading/thinking/talking/welcome/ring/wakeup), pulsing red (attention/error/dead), solid red (abort), off (idle/sleep). 1 s fade between non-pulse states. Fatal init errors: hang and blink red (1 = PCA9685, 2 = I2S). See blink codes and docs/api.md
BOOT Button / strapping on GPIO9
RESET Separate RESET button (CHIP_EN), not a GPIO
UART0 silkscreen TX = GPIO21, RX = GPIO20
USB D− / D+ GPIO18 / GPIO19 (native USB)
3V3 regulator Onboard LDO (Waveshare: ME6217C33M5G). For logic loads only
Important pins See pinout.md
Limits Do not power servos from 3V3. Do not cover the ceramic antenna with metal, PCB, or plastic.
Firmware note PlatformIO board = esp32-c3-devkitm-1 is a build target, not the physical module. Physical board is C3-Zero.

Adafruit PCA9685 16-channel PWM servo driver

Field Value
Exact model PCA9685 on the main control board. Advanced path: Adafruit 16-Channel 12-bit PWM/Servo Driver breakout
Quantity 1
Purpose Independent 50 Hz servo PWM so ESP32 timing is not the PWM source
Operating voltage VCC (logic): 3.3 V from ESP32 3V3. V+ (servos): +5V rail
Interface I2C
Address 0x40 (PCA9685_ADDRESS in firmware). A0–A5 pads can change this
PWM 12-bit, firmware setPWMFreq(50)
Important pins As drawn: 5V (servo-rail in), V+ (to servo 5V), VCC (3V3 logic), GND, SDA, SCL, PWM, OE (GP5, active LOW)
Channels used 0–4 (five servos). 5–15 unused
Limits V+ and VCC must stay separate. Do not jumper servo power onto logic VCC on this robot
Firmware note Detection at 0x40 is a hard fail in the bring-up test

Analog micro servos (qty 5)

Five analog micro servos drive the joints (Head / Neck / L hand / R hand / Body — robot-movement.md). Buy five of one model. Print the matching parts/{servo_id}/3mf/ folder. Which size to pick: parametric design.

Shared for every preset:

Field Value
Quantity 5 (one model)
Operating voltage Robot: +5V via PCA9685 V+
Interface Analog PWM, ~50 Hz. Signal is 3.3 V from PCA9685 — acceptable for this servo class
Pulse Neutral ~1500 µs. Firmware window 800–2200 µs (SERVO_MIN_US / SERVO_MAX_US)
Important pins SIG, +5V, GND (JR-style 3-wire)

Warning

Never power the servos from the ESP32 3.3 V regulator.

Firmware uses per-servo safe ranges in include/servos.h (SERVO_SPECS). Tune after assembly if needed. Do not command full 0–180° / 800–2200 µs on the assembled robot. See servos.md.

Tower Pro SG90 (recommended)

Easiest to buy. Larger body → larger printed robot; electronics are easier to fit in the desk.

Field Value
Exact model Tower Pro SG90 analog micro (or equivalent 9 g class)
servo_id sg90
Size Larger than FS0307 / ES9051 / HD-1370A — see servos.json

Print 3d_models/parts/sg90/3mf/.

Feetech FS0307

More compact. Use this if you want a smaller robot that looks tighter on the desk.

Field Value
Exact model Feetech FS0307 analog micro servo
servo_id fs0307

Print 3d_models/parts/fs0307/3mf/.

EMAX ES9051

Compact — similar footprint to FS0307, slightly taller body.

Field Value
Exact model EMAX ES9051 analog micro servo
servo_id es9051

Print 3d_models/parts/es9051/3mf/.

PowerHD HD-1370A (backward compatibility)

Still supported. Not the pick for a new build.

Print 3d_models/parts/hd1370a/3mf/.

Field Value
Exact model PowerHD HD-1370A analog micro servo
servo_id hd1370a
Current (datasheet stall) ~260 mA @ 4.8 V, ~320 mA @ 6.0 V
No-load current ~110 mA @ 4.8 V, ~120 mA @ 6.0 V
Idle current ~4 mA @ 4.8 V, ~5 mA @ 6.0 V
Torque / speed 0.4 kg·cm / 0.12 s/60° @ 4.8 V; 0.6 kg·cm / 0.10 s/60° @ 6.0 V
Size / mass ~20.2 × 8.5 × 17.6 mm, ~3.7 g
Limits Manufacturer sheet also lists ~130° travel over 800–2200 µs, while many retailers say 0–180°. Treat 0–180° as nominal, not a mechanical guarantee.

MAX98357A I2S class-D mono amplifier

Field Value
Exact model MAX98357A on the main control board (I2S in, speaker out). Advanced path: breakout module
Quantity 1
Purpose Digital audio → mono speaker. ESP32 never drives the speaker as GPIO PWM
Operating voltage Vin 2.5–5.5 V. Drawing: USB 5V → Vin
I2S logic 3.3 V from ESP32 (compatible)
Interface I2S: BCLK, WS/LRC, DIN. No MCLK
Sample rates Chip: 8–96 kHz. Firmware: 22050 Hz, 16-bit, stereo slot mode
Output power (typical) ~1.8 W into 8 Ω @ 5 V / 10% THD (datasheet-class figure)
Important pins Vin, GND, BCLK, LRC, DIN, SPK+, SPK-. Board gain: solder jumper (board README). Breakout GAIN / SD left unwired (GAIN floating ≈ 9 dB, SD pulled up ≈ left channel) — wiring.md
Limits Output is BTL. Do not connect SPK- to GND. Do not feed SPK+/SPK- into another amplifier. Do not drive the speaker from ESP32 GPIO

Warning

MAX98357A SPK- is not ground.

Speaker

Field Value
Exact model Adafruit Mini Oval Speaker - 8 Ohm 1 Watt (8 Ω, 1 W mono)
Quantity 1
Purpose Acoustic output
Operating voltage Not a voltage-rail device — driven by MAX98357A BTL
Interface Two terminals → SPK+ and SPK-
Limits 1 W rated. Amp can theoretically exceed 1 W into 8 Ω at 5 V; keep firmware volume moderate. Never connect either terminal to GND

Speaker wiring is not drawn on docs/wiring/Tiny Engineer.drawio. Electrical rule is still: speaker ↔ SPK+/SPK- only.

Waveshare 0.91inch OLED Module (SSD1306, I2C)

Field Value
Exact model Waveshare 0.91inch OLED Module (SKU 14657). Driver SSD1306, 128×32, I2C
Quantity 1
Purpose Status / test UI
Operating voltage Module accepts 3.3 V / 5 V. Robot VCC from ESP32 3V3 (confirmed in docs/wiring)
Interface I2C on the shared bus. Pads VCC, GND, SDA, SCL
Address 0x3C (OLED_ADDRESS in firmware). Alternate 0x3D exists on some modules if the ADDR jumper is changed — not used here
Resolution 128×32 (OLED_WIDTH / OLED_HEIGHT)
Important pins VCC, GND, SDA, SCL. Clock pad on this board is SCL. The wiring PNG may still label that net SCK (generic clone silkscreen) — same I2C clock, ESP32 GP1
Firmware notes SSD1306_SWITCHCAPVCC; rotation from oled_rotate_180 (setRotation(0) or 2). Missing OLED is non-fatal in the bring-up test
Limits Robot wiring is 3V3. Do not hang this module on the servo +5V rail

USB-C

Default connector is on the main control board — power.md, main-control-board.md. Advanced path: Adafruit 5993 — wiring.md.

Mechanical / RF notes for firmware and CAD

  • Keep metal and dense plastic off the ESP32 ceramic antenna area.
  • Servo horns and end stops: start from SERVO_SPECS in include/servos.h; tune after installation if needed. Assembled motion stays inside the saved min/max.
  • GPIO18/19 are native USB via the main control board USB-C (or the 5993 on the advanced path). Leave them assigned while using USB CDC for flash/serial.