
Iris brainstem
HeyPCB/iris-brainstem
Iris Brainstem: power and servo hub of the Iris robot head. 9 V USB-C PD in, 6 V / 5 A servo rail in stitched copper zones (measured), 5 V rail, half-duplex servo bus with ten ports, speaker amp.

Iris Cortex: head controller of the Iris robot head. ESP32-S3 (16 MB flash, 8 MB PSRAM), OV2640 eye-camera FPC, iris-ring LED drivers, harness hub. 4-layer KiCad 10 board, DRC-clean, with gerbers, BOM, CPL, STEP and renders.
Iris cortex is an open-source printed circuit board by HeyPCB, from the HeyPCB/iris-cortex repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 4-layer board of 80 × 40 mm with 77 parts on 63 nets, routed with 913 tracks and 117 vias.
It is built around the ESP32-S3-WROOM-1-N16R8, TLV62569DBVR-TP and SN74AHCT1G125DBVR(UMW), with the ME6211C12M5G-N, ME6211C28M5G-N and CC0603KRX7R9BB104 among its other parts. Its parts include 25 capacitors, 22 resistors, 6 ICs, 6 connectors and 2 switches. It belongs with the robots and motor control boards and the ESP32 boards of this library.
The head controller of Iris: an ESP32-S3 (16 MB flash, 8 MB PSRAM) with the eye camera's FPC, the iris-ring LED drivers and the harness to the brainstem and brow. It rides the tilt cradle.
Part of Iris, the human-eyed robot head, HeyPCB's open robot boards. Designed end to end with the HeyPCB method on
KiCad 10 (headless pipeline, Freerouting 2.4.1); every number below is measured on the files in this repository.
Mentions of ./run.sh, docs/rules/, blocks/ or parts/ refer to the heypcb-kicad SDK that produced them.

| Layers | Outline | Parts | Nets | Connections routed | Vias | ERC errors | DRC errors / unconnected / parity |
|---|---|---|---|---|---|---|---|
| 4 | 80 x 40 mm, shaped | 77 | 54 | 177 -> 0 open | 117 | 0 | 0 / 0 / 0 |
Not fabricated, assembled or powered.
| KiCad project | kicad/ |
| Gerbers (unzipped and zipped), BOM, CPL, STEP, schematic PDF | fab/ |
| Mechanism CAD, fit check and system docs | Iris, the human-eyed robot head |
| Renders | top, bottom |
| Design process, every step as KiCad rendered it | media/design-process.mp4 |

Iris Cortex is the head controller of Iris, an open-hardware robot head with human-like eyes. It
is board B1 of the Iris design spec (v0.1, 2026-10-03, section 4.1; not published, its binding
contracts are in the Iris system docs).
An ESP32-S3-WROOM-1-N16R8 runs the OV2640 camera in the right eye through a 24-pin FPC connector. Two
buffered outputs drive the WS2812C iris LED rings. Five JST SH headers carry the spec's binding harness
contracts to the Brainstem (B2), the Brow strip (B4) and the two iris rings (B3). The design was
made with the HeyPCB method on KiCad 10 (10.0.6), using heypcb-kicad's headless pipeline and
Freerouting 2.4.1. The input is the brief in board.json.
This board has not been fabricated, assembled or powered, and its firmware has not been written.
Every number below comes from KiCad and the pipeline, measured on the design files (report.json of the
final run, 2026-10-03). Nothing here has been tested on hardware.



flowchart LR
B2["B2 Brainstem"]
B4["B4 Brow"]
CAM["OV2640 module, right eye"]
RR["B3 iris ring, right"]
RL["B3 iris ring, left"]
subgraph B1["B1 Iris Cortex, 80 x 40 mm, 4 layers"]
J5["J5 H1, SH-10"]
J6["J6 H2, SH-7"]
J4["J4 BROW, SH-8"]
J1["J1 FPC, AFC07 24P"]
J2["J2 RING_R, SH-4"]
J3["J3 RING_L, SH-4"]
U1["U1 ESP32-S3-WROOM-1-N16R8, B face"]
U2["U2 TLV62569 buck"]
U3["U3 ME6211C28, 2V8"]
U4["U4 ME6211C12, 1.2 V"]
U5["U5 74AHCT1G125"]
U6["U6 74AHCT1G125"]
F1["F1 PTC 0.5 A"]
F2["F2 PTC 0.5 A"]
J5 -->|"5V_SYS"| U2
J5 -->|"5V_SYS"| F1
J5 -->|"5V_SYS"| F2Measured on the final board file (kicad/iris_cortex.kicad_pcb).
MountingHole_2.2mm_M2) for M2 x 6 screws into the cradle's
heat-set inserts.| Hole | Board (x, y) | Head (X, Y, Z), F face |
|---|---|---|
| H1 | (4.0, 4.0) | (-52.0, -36.0, +16.0) |
| H2 | (76.0, 4.0) | (-52.0, +36.0, +16.0) |
| H3 | (4.0, 36.0) | (-52.0, -36.0, -16.0) |
| H4 | (76.0, 36.0) | (-52.0, +36.0, -16.0) |
The bosses' faces are at X = -53.6 (the B face).
Connectors. All six connectors are on the F face, so their bodies stand from X = -52.0 toward the eyes. The AFC07 is 2 mm tall (catalogue row C262567). For the SH housings, LCSC lists 2.9 mm and 4.32 mm body dimensions; the spec's F-face budget is 4.5 mm.
| Ref | Harness | Body, board x range / y range | Body centre, head (Y, Z) | Opens toward | Mouth edge | Pin 1, board (x, y) / head (Y, Z) |
|---|---|---|---|---|---|---|
| J1 | CAM FPC | x 0.00-4.50 / y 11.15-28.85 | (-37.75, 0.00) | -x, the left edge (head -Y) | x 0.00 (Y -40.0) | (5.30, 14.25) / (-34.70, +5.75) |
| J2 | RING_R | x 7.95-14.05 / y 34.93-39.28 | (-29.00, -17.10) | +y, the bottom edge (head -Z) | y 39.28 (Z -19.28) | (9.50, 34.65) / (-30.50, -14.65) |
| J3 | RING_L | x 74.88-79.22 / y 16.95-23.05 | (+37.05, 0.00) | +x, the right edge (head +Y) | x 79.22 (Y +39.22) | (74.60, 21.50) / (+34.60, -1.50) |
| J4 | BROW | x 11.95-22.05 / y 7.58-11.92 | (-23.00, +10.25) | -y, toward the top edge (head +Z) | y 7.58 (Z +12.42) | (20.50, 12.20) / (-19.50, +7.80) |
| J5 | H1 | x 22.95-35.05 / y 34.93-39.28 | (-11.00, -17.10) | +y, the bottom edge (head -Z) | y 39.28 (Z -19.28) | (24.50, 34.65) / (-15.50, -14.65) |
| J6 | H2 | x 44.95-54.05 / y 34.93-39.28 | (+9.50, -17.10) | +y, the bottom edge (head -Z) | y 39.28 (Z -19.28) | (46.50, 34.65) / (+6.50, -14.65) |
The pin tables below are copied exactly from the Iris spec, section 5 (binding). "Pin n" is pad n of the KiCad footprint named. All SH cables are double-ended, same direction (pin n to pin n), 28 AWG and pre-crimped. The B1 net names follow each table. They were checked pad by pad on the final board.
H1: B2 J5 ↔ B1 J5 (SH-10).
| Pin | Net | Dir | Level / type | Notes |
|---|---|---|---|---|
| 1 | 5V_SYS | B2 → B1 | 4.85 V nominal (5V2 − SS34), ≤ 1.6 A total on pins 1–2 | source B2 |
| 2 | 5V_SYS | B2 → B1 | as pin 1 | |
| 3 | GND | — | ||
| 4 | GND | — | ||
| 5 | USB_DN | ↔ | USB 2.0 FS D−, 90 Ω pair with 6 | ESD on B2 (U5); B1 GPIO19 |
| 6 | USB_DP | ↔ | USB 2.0 FS D+ | B1 GPIO20 |
| 7 | GND | — | separates the USB pair from the UART | |
| 8 | BUS_TX | B1 → B2 | 3.3 V UART, 1 Mbps, 8N1, idle high | B1 GPIO42 → U7 A + Q1 base network |
| 9 | BUS_RX | B2 → B1 | 3.3 V UART | U8 Y → B1 GPIO44; 10 k pull-up on B2 |
| 10 | SERVO_EN | B1 → B2 | 3.3 V CMOS, active high | → U3 EN via 1 k; 100 k pull-down on B2 |
On B1, J5 pins 1-10 carry 5V_SYS, 5V_SYS, GND, GND, USB_DN, USB_DP, GND, BUS_TX, BUS_RX, SERVO_EN, with 22 uF + 100 nF on 5V_SYS at the connector. (U3, U5, U7, U8 and Q1 in the Notes column are B2's parts.)
H2: B2 J6 ↔ B1 J6 (SH-7).
| Pin | Net | Dir | Level / type | Notes |
|---|---|---|---|---|
| 1 | GND | — | ||
| 2 | I2C_SDA | ↔ | 3.3 V open drain, 400 kHz | pull-ups 2.2 k on B1 only |
| 3 | I2C_SCL | B1 → | 3.3 V open drain | |
| 4 | nINT | B2 → B1 | open drain, active low | INA226 ALERT; 10 k pull-up on B1 (GPIO3) |
| 5 | I2S_BCLK | B1 → B2 | 3.3 V, 3.072 MHz (48 kHz × 64) | 33 Ω series at B1 |
| 6 | I2S_WS | B1 → B2 | 3.3 V, 48 kHz | 33 Ω series at B1 |
| 7 | I2S_AMP_SD | B1 → B2 | 3.3 V I2S data | → U9 DIN |
On B1, pins 5 and 6 are the nets I2S_BCLK_AMP and I2S_WS_AMP, after R21 and R22 (33 ohm). R18 and R19 (2.2 k) and R20 (10 k) are the pull-ups.
BROW: B1 J4 ↔ B4 J1 (SH-8).
| Pin | Net | Dir | Level / type | Notes |
|---|---|---|---|---|
| 1 | 3V3 | B1 → B4 | 3.3 V, ≤ 50 mA | source B1 (U2) |
| 2 | GND | — | ||
| 3 | I2C_SDA | ↔ | 3.3 V OD | same bus as H2 (pull-ups on B1) |
| 4 | I2C_SCL | B1 → | ||
| 5 | I2S_BCLK | B1 → B4 | 3.3 V, 3.072 MHz | mic SCK (shared with H2 pin 5; separate 33 Ω resistors at B1 per branch) |
| 6 | I2S_WS | B1 → B4 | 3.3 V | mic WS |
| 7 | I2S_MIC_SD | B4 → B1 | 3.3 V, tri-stated per slot by the mics | B1 GPIO40; 100 k pull-down on B1 |
| 8 | TOUCH | B4 → B1 | analog capacitive | B1 GPIO14 (TOUCH14); keep away from pin 5 in the cable if possible |
On B1, pins 5 and 6 are I2S_BCLK_MIC and I2S_WS_MIC, after R15 and R16 (33 ohm). R17 (100 k) is the I2S_MIC_SD pull-down. The connector has 1 uF + 100 nF on 3V3.
RING_x: B1 J2 (right) / J3 (left) ↔ B3 pads (SH-4 to wires).
| Pin (B1) | B3 pad | Net | Dir | Level |
|---|---|---|---|---|
| 1 | P1 | 5V_LED | B1 → B3 | 5V_SYS through a 0.5 A PTC or ferrite on B1; source B2 via B1 |
| 2 | P2 | LED_DIN | B1 → B3 | 5 V CMOS from U5/U6 (74AHCT1G125), 800 kHz WS2812 protocol |
| 3 | P3 | GND | — | |
| 4 | P4 | GND | — |
On B1, pin 1 is 5V_LED_R (J2, behind F1) or 5V_LED_L (J3, behind F2): one 0.5 A PTC per ring. Pin 2 is RING_R_DATA or RING_L_DATA, the buffer's output through 33 ohm (R11, R13).
CAM: module ↔ B1 J1 (24P FPC; pad n = module pin n, §3.2).
| Pin | Signal | B1 net | Pin | Signal | B1 net |
|---|---|---|---|---|---|
| 1 | NC / STROBE | NC | 13 | XCLK | GPIO15 |
| 2 | AGND | GND | 14 | Y8 (D6) | GPIO17 |
| 3 | SIO_D | GPIO4 (4.7 k to DOVDD) | 15 | DGND | GND |
| 4 | AVDD | 2V8 (U3) | 16 | Y7 (D5) | GPIO18 |
| 5 | SIO_C | GPIO5 (4.7 k to DOVDD) | 17 | PCLK | GPIO13 |
| 6 | RESETB | 10 k to DOVDD + 100 nF | 18 | Y6 (D4) | GPIO12 |
| 7 | VSYNC | GPIO6 | 19 | Y2 (D0) | GPIO11 |
| 8 | PWDN | GPIO46 + 10 k to GND | 20 | Y5 (D3) | GPIO10 |
| 9 | HREF | GPIO7 | 21 | Y3 (D1) | GPIO9 |
| 10 | DVDD | 1V2 or 1V5 (U4) | 22 | Y4 (D2) | GPIO8 |
| 11 | DOVDD | 2V8 (U3) | 23 | Y1 | NC (AF_GND on OV5640-AF modules [XIAO]) |
| 12 | Y9 (D7) | GPIO16 | 24 | Y0 | NC (AF_VCC on OV5640-AF modules) |
On B1, these are the net names:
The binding allocation is Iris spec 4.1. The camera lines match the ESP32-S3-EYE (espressif/esp-bsp
esp32_s3_eye.h). Module pin numbers are those of the KiCad 10 symbol RF_Module:ESP32-S3-WROOM-1.
| GPIO | Module pin | B1 net | Goes to |
|---|---|---|---|
| 0 | 27 | BOOT | SW1 to GND (strap; internal pull-up) |
| 1 | 39 | I2C_SDA | J4.3, J6.2, TP SDA; 2.2 k to 3V3 |
| 2 | 38 | I2C_SCL | J4.4, J6.3, TP SCL; 2.2 k to 3V3 |
| 3 | 15 | nINT | J6.4; 10 k to 3V3 (strap only if the eFuse is burned) |
| 4 | 4 | CAM_SIOD | J1.3 |
| 5 | 5 | CAM_SIOC | J1.5 |
| 6 | 6 | CAM_VSYNC | J1.7 through R9 (0 ohm) |
| 7 | 7 | CAM_HREF | J1.9 through R10 (0 ohm) |
| 8 | 12 | CAM_D2 (Y4) | J1.22 |
| 9 | 17 | CAM_D1 (Y3) | J1.21 |
| 10 | 18 | CAM_D3 (Y5) | J1.20 |
| 11 | 19 | CAM_D0 (Y2) | J1.19 |
| 12 | 20 | CAM_D4 (Y6) | J1.18 |
| 13 | 21 | CAM_PCLK | J1.17 through R8 (0 ohm); TP PCLK |
| 14 | 22 | TOUCH | J4.8 (TOUCH14) |
| 15 | 8 | CAM_XCLK | J1.13 |
| 16 | 9 | CAM_D7 (Y9) | J1.12 |
| 17 | 10 | CAM_D6 (Y8) | J1.14 |
| 18 | 11 | CAM_D5 (Y7) | J1.16 |
| 19 | 13 | USB_DN | J5.5 |
| 20 | 14 | USB_DP | J5.6 |
| 21 | 23 | SERVO_EN | J5.10 |
| 35, 36, 37 | 28, 29, 30 | not connected | octal PSRAM of the N16R8 |
| 38 | 31 | I2S_BCLK | R21 → J6.5, R15 → J4.5 |
| 39 | 32 | I2S_WS | R22 → J6.6, R16 → J4.6 |
| 40 | 33 | I2S_MIC_SD | J4.7; 100 k to GND |
| 41 | 34 | I2S_AMP_SD | J6.7 |
| 42 | 35 | BUS_TX (UART1) | J5.8, TP TX |
| 43 | 37 (TXD0) | U0TXD | TP U0TX |
| 44 | 36 (RXD0) | BUS_RX (UART1 via the matrix) | J5.9, TP RX |
| 45 | 26 | not connected | strap (VDD_SPI) |
| 46 | 16 | CAM_PWDN | J1.8; 10 k to GND (strap, low at reset) |
| 47 | 24 | RING_R_DIN | U5 → J2.2 |
| 48 | 25 | RING_L_DIN | U6 → J3.2 |
| EN | 3 | EN | 10 k to 3V3, 1 uF to GND, SW2 to GND |
| Rail | Source | Feeds | Budget (Iris spec 4.1, 4.4, 6) |
|---|---|---|---|
| 5V_SYS | B2 over H1 pins 1-2 (4.85 V nominal) | U2, both ring buffers' VCC, F1, F2 | ≤ 1.6 A on the harness; B1 logic about 0.40 A peak + rings 0.36 A at full white |
| 3V3 | U2 TLV62569, 3.327 V nominal (0.6 V x (1 + 100k / 22k)) | U1, U3, U4, pull-ups, BROW pin 1 (B4, ≤ 50 mA) | 0.52 A peak (ESP32-S3 TX 355 mA, camera up to 100 mA) |
| 2V8 | U3 ME6211C28 | OV2640 AVDD + DOVDD | about 50 mA |
| CAM_DVDD | U4 ME6211C12 (1.2 V; ME6211C15 for 1.5 V) | OV2640 DVDD | about 50 mA |
| 5V_LED_R / 5V_LED_L | F1 / F2, 1206L050 PTC (0.5 A hold, 1 A trip, 0.15-0.85 ohm) | one iris ring each | 0.18 A per ring at full white, 54 mA at the 30 % firmware cap |
Copper:
currentA, so the routing ladder never narrowed them; on this run it did
not need to narrow anything (classes_routed is empty).Final run: ./run.sh --board boards/iris_cortex, 2026-10-03, KiCad 10.0.6, Freerouting 2.4.1. The
numbers are read from report.json.
| Gate | Result |
|---|---|
| Composition | 12 block instances of 11 new cortex_* blocks: 77 parts, 54 nets, 9 explicit no-connects |
Part binding (parts/lcsc_pinned.json) | 64 of 64 orderable parts bound, 0 unsourced, 0 identity conflicts. 13 DNP items (9 test pads, 4 holes) have nothing to buy. 26 BOM lines; 12 distinct Extended parts, about $36 in JLC loading fees |
ERC (kicad-cli sch erc --severity-all) | 0 errors, 0 warnings |
| Netlist round trip | identical, 54 nets |
| Placement | 77 parts. Connectors, holes, test pads, the module and its B-face neighbours, and the ring and buck cells are locked; the camera passives and LDO satellites are placed by the ladder |
| Routing | 177 → 0 open on rung 1 with fanout. Freerouting left 1 open (CAM_HREF, U1.7 to R10.2); the last-mile router closed it with 4 tracks and no via, and DRC kept it. The no-fanout solve also reached 0 after its last mile. 913 tracks, 101 routing vias, 2221.3 mm: F.Cu 977.3, In2 814.8, B.Cu 429.3. No class narrowed |
| Pours (only after a measured 0 open) | GND on F.Cu, B.Cu and In1, 3V3 on In2. 19 stitching vias (120 vias in all). 0 open after the pour, after stitching and at the end; 0 island-repair vias |
| Silkscreen | 17 of 17 words and 3 of 3 title lines placed. 40 designators seated, 20 hidden, 3 stitching vias displaced |
DRC (--severity-all --schematic-parity) | fresh, 0 errors, 0 warnings, 0 unconnected, 0 parity |
DFM (jlcpcb_4layer) | 0 errors. 1 warning: 208 stock-footprint silk strokes at 0.12 mm, which the fab prints at its 0.15 mm minimum |
| Fab gate | ready, no blockers. 4 copper gerbers; gerber job LayerNumber 4, 1.6 mm. 64 CPL rows (32 top, 32 bottom); the JLC CPL corrected 28 rotations |
| Media | 63 3D frames, the raytraced renders and the design-process video: 1920 x 1080, 139.5 s, 4186 frames (ffprobe) |
Timing: the final full run took 4 min 6 s. The route stage took 57.5 s, the renders 154.7 s and the video 20.1 s.
The same brief routed identically in its last --no-media run before the full run: 913 tracks, 101
vias, 2221.3 mm, DRC 0 / 0 / 0, 0 warnings.
J4 (BROW) is 7.6 mm below the top edge, at x 11.95-22.05. The spec zone was x 16-28 at the top edge.
RF_Module:ESP32-S3-WROOM-1 footprint carries Espressif's antenna keep-out: 15 mm
beyond each side of the module, on every copper layer, banning footprints, pads, tracks, vias
and pours. With the module centred, that covers x 16-64, y 0-6.55. No header fits at the top
edge between it and the H1 hole.The module sits 0.5 mm inside the top edge (its outline spans y 0.50-26.10), not flush.
One PTC per ring. The 5V_LED pin is fed through its own 0.5 A PTC per ring, so the B1 nets are 5V_LED_R and 5V_LED_L. A short in one eye's wires then leaves the other eye lit. The pinout is unchanged.
Additions the spec does not list:
The buffers run from 5V_SYS ahead of the PTCs, so a PTC's drop cannot take them below their 4.5 V minimum.
Test pads are on the F face, in a 3 x 3 grid right of the module's position. Each pad's name is printed beside it. A first layout with a column on B, among the camera lines' vias, left 7 of 9 names unplaced.
SDK notes (not changes):
"pours". The SDK's word is "pour"; the
brief uses "pour", and "pours" would be refused as bad_keepout.footprints ban over x 31-49, y 0-7 would flag the module itself, so the brief
leaves it to the footprint's own rule area.Double-sided SMT. The B face carries:
The F face carries the connectors, the buck, the ring drivers and the test pads. Check JLC's placement preview for the bottom side, especially pin 1 of U1 (top right when seen from F).
Camera FPC orientation.
First power-up check for the camera. With the module inserted, J1 pads 2 (AGND) and 15 (DGND) must read 0 ohm to GND. If they do not, the FPC is reversed or the module uses the AI-Thinker ESP32-CAM numbering: map by signal, never by number.
FPC length. Buy the 120 mm class. The spec budgets about 72 mm plus pan slack, and the 75 mm module is too short.
Image orientation.
DVDD. U4 is fitted for an OV2640 (1.2 V). For an OV3660 / OV5640 module, replace U4 with ME6211C15M5G-N (C53100) before inserting that module.
Rings. Each ring cable is SH-4 at B1 and four 32 AWG wires soldered to B3 pads P1-P4 (5V_LED, LED_DIN, GND, GND). J2 is the right eye, J3 the left. The two are interchangeable, and firmware has a swap flag.
Re-check stock and class at jlcpcb.com. The pinned rows are live lookups from 2026-10-03. The lowest stocks are SM04B-SRSS-TB (C160404) at 7,284 and ME6211C28 (C53099) at 15,900.
Buy the camera module first. Confirm its 24-pin pinout against the CAM table, its contact side and its FPC length (≥ 100 mm overall). Then decide U4's voltage.
Confirm with the mechanism CAD:
Keep the antenna clear. Nothing conductive on the cradle's rear plate over x 16-64, y 0-7 (head Y -24 to +24, Z +13 to +20). The BROW plug and cable pass at the left end of that strip; check RSSI on the first board.
Stackup. The board file carries KiCad's derived 4-layer stackup (gerber job: 1.6 mm, 0.48 mm dielectrics). JLC's real stackup is chosen when ordering. USB and DVP are not impedance-controlled: USB FS and a 20 MHz DVP clock do not need it over these lengths.
USB ESD sits on B2 (U5 there), not here. A cable plugged straight into H1 from anything but B2 has no protection.
Footprint polarity and orientation in the JLC preview:
The CPL was rotation-corrected for 28 parts.
Firmware facts the hardware assumes (spec section 8; not written yet):
No 3D body for J1. KiCad 10.0.6 ships no model for the Jushuo AFC07 footprint, so J1 shows as bare pads in the renders and has no body in the STEP. Use the catalogue drawing for the 2 mm-tall housing.
Facts and URLs only; no datasheet files are stored in this repository.
board.json.bsp/esp32_s3_eye/include/bsp/esp32_s3_eye.h (camera GPIOs), https://github.com/espressif/esp-bsp/tree/master/bsp/esp32_s3_eye;parts/lcsc_pinned.json with that date.SPDX-License-Identifier: CERN-OHL-S-2.0
Copyright 2026 enkhbold470.
This source describes Open Hardware and is licensed under the CERN-OHL-S v2. You may redistribute and modify this source and make products using it under the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt). This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-S v2 for applicable conditions.
Source location: boards/iris_cortex/ in the heypcb-kicad repository, with the cortex_* blocks in
blocks/.
The licence covers this board's brief, its cortex_* blocks and the files the pipeline builds from
them. KiCad's symbols, footprints and 3D models are CC-BY-SA-4.0 with the KiCad library exception. The
TS-1187A body in the renders is heypcb-kicad's generated envelope.
board.json is the brief everything is built from.img/ holds three raytraced renders from the final run: the F face, the B face and an isometric
view.blocks/:
cortex_esp32s3, cortex_buck_tlv62569, cortex_ldo_me6211c28, cortex_ldo_me6211c12;cortex_cam_fpc, cortex_ring_driver;cortex_link_h1, cortex_link_h2, cortex_link_brow;cortex_test_pads, cortex_mount_holes.build/ is regenerated):
report.json;kicad/iris_cortex.kicad_{sch,pcb,pro};fab/: the gerber zip, the BOM (26 lines), the JLC CPL, positions, the
schematic PDF and the STEP;build/iris_cortex/render/;media/design-process.mp4.From the heypcb-kicad repository:
./run.sh --board boards/iris_cortex --no-media # every gate
./run.sh --board boards/iris_cortex # plus the 3D renders and the design-process video| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 100nF | Capacitor_SMD:C_0603_1608Metric | C2, C5, C11, C13, C15, C17, C18, C20, C23, C25 |
| 6 | 1uF | Capacitor_SMD:C_0603_1608Metric | C3, C7, C8, C9, C10, C22 |
| 6 | 33 | Resistor_SMD:R_0603_1608Metric | R11, R13, R15, R16, R21, R22 |
| 4 | 100k | Resistor_SMD:R_0603_1608Metric | R2, R12, R14, R17 |
| 4 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R6, R7, R20 |
| 4 | 10uF | Capacitor_SMD:C_0805_2012Metric | C4, C6, C19, C21 |
| 4 | M2 | MountingHole:MountingHole_2.2mm_M2 | H1, H2, H3, H4 |
| 3 | 0 | Resistor_SMD:R_0603_1608Metric | R8, R9, R10 |
| 3 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C12, C14, C16 |
| 2 | 0.5A | Fuse:Fuse_1206_3216Metric | F1, F2 |
| 2 | 2.2k | Resistor_SMD:R_0603_1608Metric | R18, R19 |
| 2 | 22uF | Capacitor_SMD:C_0805_2012Metric | C1, C24 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric | R4, R5 |
| 2 | 74AHCT1G125 | Package_TO_SOT_SMD:SOT-23-5 | U5, U6 |
| 2 | RING | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J2, J3 |
| 1 | 2.2uH | Inductor_SMD:L_Sunlord_SWPA4030S | L1 |
| 1 | 22k | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 3V3 | TestPoint:TestPoint_Pad_D1.0mm | TP1 |
| 1 | 5V_SYS | TestPoint:TestPoint_Pad_D1.0mm | TP2 |
| 1 | BOOT | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW1 |
| 1 | BROW | Connector_JST:JST_SH_SM08B-SRSS-TB_1x08-1MP_P1.00mm_Horizontal | J4 |
| 1 | BUS_RX | TestPoint:TestPoint_Pad_D1.0mm | TP5 |
| 1 | BUS_TX | TestPoint:TestPoint_Pad_D1.0mm | TP4 |
| 1 | CAM OV2640 | Connector_FFC-FPC:Jushuo_AFC07-S24FCA-00_1x24-1MP_P0.50_Horizontal | J1 |
| 1 | ESP32-S3-WROOM-1-N16R8 | RF_Module:ESP32-S3-WROOM-1 | U1 |
| 1 | GND | TestPoint:TestPoint_Pad_D1.0mm | TP3 |
| 1 | H1 PWR/USB/BUS | Connector_JST:JST_SH_SM10B-SRSS-TB_1x10-1MP_P1.00mm_Horizontal | J5 |
| 1 | H2 SENSE/AUDIO | Connector_JST:JST_SH_SM07B-SRSS-TB_1x07-1MP_P1.00mm_Horizontal | J6 |
| 1 | ME6211C12M5G-N | Package_TO_SOT_SMD:SOT-23-5 | U4 |
| 1 | ME6211C28M5G-N | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | PCLK | TestPoint:TestPoint_Pad_D1.0mm | TP8 |
| 1 | RESET | Button_Switch_SMD:SW_Push_1P1T_XKB_TS-1187A | SW2 |
| 1 | SCL | TestPoint:TestPoint_Pad_D1.0mm | TP7 |
| 1 | SDA | TestPoint:TestPoint_Pad_D1.0mm | TP6 |
| 1 | TLV62569DBVR | Package_TO_SOT_SMD:SOT-23-5 | U2 |
| 1 | U0TXD | TestPoint:TestPoint_Pad_D1.0mm | TP9 |
It measures 80 × 40 mm and has 4 copper layers, 1.6 mm thick.
77 parts, built around the ESP32-S3-WROOM-1-N16R8, TLV62569DBVR-TP, SN74AHCT1G125DBVR(UMW) and ME6211C12M5G-N. 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.
From the HeyPCB/iris-cortex repository on GitHub, at the commit this page was made from: the board is kicad/iris_cortex.kicad_pcb and its schematic kicad/iris_cortex.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the CERN-OHL-S-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

HeyPCB/iris-brainstem
Iris Brainstem: power and servo hub of the Iris robot head. 9 V USB-C PD in, 6 V / 5 A servo rail in stitched copper zones (measured), 5 V rail, half-duplex servo bus with ten ports, speaker amp.


Guilleloma/Furby-GPT
This project transforms a 1998 Furby into an interactive and advanced desktop assistant using a Raspberry Pi W. It incorporates OpenAI and Whisper for natural language processing, primarily relying on Google Cloud Text…


ameesme/little-camera
A small black-and-white camera that posts to its own tiny blog, and everything around it.

PHS-SMCS/falcon-core
Lightest ESP32-based blimp controller with the works; 9-DoF, ToF altimetry, motor drivers, and Wi-Fi enabled camera streaming, all on a single 300mAh LiPo. >1hr of battery life.

ldcyes/OpenDuck
已完成可编辑原理图、真实四层 PCB 和本地库。阶梯板面积 4510 mm²,比原 65×60 + 32×30 mm 两板总面积 4860 mm² 少 350 mm²(7.20%)。原 TDK 模块本体、四个安装孔和原 TDK 器件位置保留,回生电容采用原料号卧装,J1 因实际拔插通道冲突改为同系列 BM08 顶插。当前为工程候选,未制造,未完成热、回生瞬态、低电量或行走验收。

Deco025/rtl8367-switch
Five-port gigabit unmanaged Ethernet switch based on the Realtek RTL8367RB - 4-layer KiCad 10 design with fabrication outputs