
OSO BOOK B1
joeycastillo/The-Open-Book
For details on how to build, test and use Open Book, I've made documentation available here.

This is the generated RevA.1 hardware draft for moving the CoffeeRoast electronics onto a PCB. The current board has been updated with the agreed robustness optimizations and has zero KiCad error-level DRC violations…
CoffeeRoast Control RevA is an open-source printed circuit board by smicbee, from the smicbee/CoffeeRoast repository on GitHub. It is a 2-layer board of 160 × 100 mm with 129 parts on 53 nets, routed with 556 tracks and 60 vias.
It is built around the ESP32-S3-WROOM-1-N8. Its parts include 10 resistors, 7 capacitors, 4 ICs, 3 diodes and 3 connectors. It belongs with the ESP32 boards of this library.
This is the generated RevA.1 hardware draft for moving the CoffeeRoast electronics onto a PCB. The current board has been updated with the agreed robustness optimizations and has zero KiCad error-level DRC violations, but it still needs manual engineering review before fabrication.
CoffeeRoast-Control-RevA.kicad_pcb — KiCad board draft with real on-board USB-C footprint and autorouted/manual-cleanup tracks.CoffeeRoast-Control-RevA.kicad_sch — vollständiger, editierbarer KiCad-Schaltplan mit Funktionsblöcken für Versorgung, Lüfter/SSR, ESP32, MAX6675, USB und Testzugänge; die benannten Netze entsprechen dem gerouteten PCB.tools/generate_full_schematic.py — reproduzierbarer Generator für den Schaltplanentwurf; die native .kicad_sch-Datei wurde mit KiCad 9 konvertiert und geprüft.render/schematic/CoffeeRoast-Control-RevA.pdf und .svg — exportierte Schaltplanansichten; render/schematic/erc.json enthält den aktuellen ERC-Bericht.docs/netlist.csv — tabellarische Referenz der beabsichtigten elektrischen Verbindungen.docs/bom.csv — Stückliste des aktuellen PCB-Entwurfs.docs/esp32_debug_pads.csv — ESP32-S3 TPESP1-40 tiny probe pad mapping.docs/esp32_solder_pads.csv — larger labeled bottom-side PADESP1-40 solder pad mapping for attaching wires later.docs/routing_notes.md — routing/DRC status and fabrication caveats.docs/reva1_optimizations.md — RevA.1 robustness changes and what was deliberately left for RevB.tools/apply_reva1_optimizations.py — idempotent pcbnew script that applies the RevA.1 PCB additions.production/partial-smd-pcba/ — generated Gerber/drill + partial SMD assembly BOM/CPL package for first prototype ordering.tools/prepare_partial_pcba_package.py — regenerates the partial-SMD PCBA handoff package.symbols/ and footprints.pretty/ — local ESP32-S3-WROOM-1 and USB-C library files copied from KiCad upstream.| Function | ESP32-S3-WROOM-1 pin | GPIO | Firmware variable |
|---|---|---|---|
| Heater/SSR PWM | 39 | GPIO1 | relayPin |
| Fan PWM | 38 | GPIO2 | fanPin |
| MAX6675 DO/SO | 19 | GPIO11 | thermoDO |
| MAX6675 CS | 20 | GPIO12 | thermoCS |
| MAX6675 CLK/SCK | 21 | GPIO13 | thermoCLK |
| USB D- | 13 | native USB D- | serial/flash |
| USB D+ | 14 | native USB D+ | serial/flash |
| BOOT | 27 | GPIO0 | flash mode |
| EN/RESET | 3 | EN | reset |
All ESP32-S3-WROOM-1 side pins 1-40 are exposed twice: tiny local probe pads named TPESP1 through TPESP40 around U1, and larger labeled bottom-side solder pads named PADESP1 through PADESP40 routed outward for attaching wires later. The mappings are in docs/esp32_debug_pads.csv and docs/esp32_solder_pads.csv. These include the spare GPIOs plus already-used signals such as USB D+/D-, MAX6675 SPI, BOOT/EN, fan PWM, heater/SSR PWM, 3V3, and GND.
230VAC inlet in enclosure
+--> certified 230VAC -> 24VDC / 3A PSU
+--> J1 on this PCB
+--> C4 input bulk + D2 24V TVS protection
+--> F1 24V-side fuse placeholder
+--> J2 24V fan via Q1 low-side MOSFET + D1/D3 fan clamp
+--> U4 24V -> 5V buck module
+--> SSR input driver supply
+--> U3 3.3V switching regulator selection
+--> ESP32-S3-WROOM-1 + MAX6675
230VAC heater line: external SSR module only, not on this PCB.This board now loads in KiCad 9 and has been routed/checked headlessly. KiCad error-level DRC is clean, but before ordering boards:
| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | FIDUCIAL_GLOBAL_1MM | FID1, FID2, FID3, FID4, FID5, FID6 | |
| 4 | GND | PADESP1, PADESP40, TPESP1, TPESP40 | |
| 2 | 100R | R1, R3 | |
| 2 | 100k | R2, R4 | |
| 2 | 3V3 | PADESP2, TPESP2 | |
| 2 | EN | PADESP3, TPESP3 | |
| 2 | IO10 | PADESP18, TPESP18 | |
| 2 | IO14 | PADESP22, TPESP22 | |
| 2 | IO15 | PADESP8, TPESP8 | |
| 2 | IO16 | PADESP9, TPESP9 | |
| 2 | IO17 | PADESP10, TPESP10 | |
| 2 | IO18 | PADESP11, TPESP11 | |
| 2 | IO21 | PADESP23, TPESP23 | |
| 2 | IO3 | PADESP15, TPESP15 | |
| 2 | IO35 | PADESP28, TPESP28 | |
| 2 | IO36 | PADESP29, TPESP29 | |
| 2 | IO37 | PADESP30, TPESP30 | |
| 2 | IO38 | PADESP31, TPESP31 | |
| 2 | IO39 | PADESP32, TPESP32 | |
| 2 | IO4 | PADESP4, TPESP4 | |
| 2 | IO40 | PADESP33, TPESP33 | |
| 2 | IO41 | PADESP34, TPESP34 | |
| 2 | IO42 | PADESP35, TPESP35 | |
| 2 | IO45 | PADESP26, TPESP26 | |
| 2 | IO46 | PADESP16, TPESP16 | |
| 2 | IO47 | PADESP24, TPESP24 | |
| 2 | IO48 | PADESP25, TPESP25 | |
| 2 | IO5 | PADESP5, TPESP5 | |
| 2 | IO6 | PADESP6, TPESP6 | |
| 2 | IO7 | PADESP7, TPESP7 | |
| 2 | IO8 | PADESP12, TPESP12 | |
| 2 | IO9 | PADESP17, TPESP17 | |
| 1 | +24V_FUSED_TEST | TP24V | |
| 1 | +3V3_TEST | TP3V3 | |
| 1 | +5V_TEST | TP5V | |
| 1 | 100nF_MAX6675 | C3 | |
| 1 | 100nF_U1_DECOUPLING_0603 | C6 | |
| 1 | 100nF_U4_OUTPUT_DECOUPLING_0603 | C7 | |
| 1 | 10k_BOOT_PULLUP | R6 | |
| 1 | 10k_EN_PULLUP | R5 | |
| 1 | 10uF_3V3 | C2 | |
| 1 | 10uF_5V | C1 | |
| 1 | 1nF_C0G_THERMO_DIFF_FILTER_DNP_IF_NOISY | C5 | |
| 1 | 220uF_35V_INPUT_BULK | C4 | |
| 1 | 24V_IN_FROM_230V_PSU_3A | J1 | |
| 1 | 24V_TO_5V_BUCK_MODULE_>=1A_LOW_NOISE | U4 | |
| 1 | 27R_USB_DN | R7 | |
| 1 | 27R_USB_DP | R8 | |
| 1 | 2N7002_SSR_DRIVER | Q2 | |
| 1 | 3V3_SWITCHING_REGULATOR_>=600mA_5V_IN_REPLACES_AMS1117 | U3 | |
| 1 | 5k1_CC1_RD | R10 | |
| 1 | 5k1_CC2_RD | R11 | |
| 1 | BOOT | SW2 | |
| 1 | BOOT_TWEEZER_PADS | TPBOOT1 | |
| 1 | ESP32-S3-WROOM-1 | ESP32-S3-WROOM-1 | U1 |
| 1 | ESP32_GPIO_BREAKOUT_ROW | ESP32_GPIO_BREAKOUT_ROW | JGPIO1 |
| 1 | FAN_24V_PWM_3A | J2 | |
| 1 | GND_TEST | TPGND | |
| 1 | IO0 | PADESP27 | |
| 1 | IO0/BOOT | TPESP27 | |
| 1 | IO1 | PADESP39 | |
| 1 | IO1/SSR | TPESP39 | |
| 1 | IO11 | PADESP19 | |
| 1 | IO11/MAXDO | TPESP19 | |
| 1 | IO12 | PADESP20 | |
| 1 | IO12/MAXCS | TPESP20 | |
| 1 | IO13 | PADESP21 | |
| 1 | IO13/MAXCLK | TPESP21 | |
| 1 | IO2 | PADESP38 | |
| 1 | IO2/FAN | TPESP38 | |
| 1 | IRLB8721_OR_3V3_LOGIC_NMOS_RDS_ON_LOW | Q1 | |
| 1 | K_TYPE_THERMOCOUPLE | J4 | |
| 1 | MAX6675_SOIC8_3V3 | U2 | |
| 1 | RESET_EN | SW1 | |
| 1 | RESET_TWEEZER_PADS | TPRESET1 | |
| 1 | RXD0 | PADESP36 | |
| 1 | RXD0/IO44 | TPESP36 | |
| 1 | SB560_FLYBACK | D1 | |
| 1 | SMBJ33A_24V_INPUT_TVS | D2 | |
| 1 | SMBJ33A_FAN_TVS | D3 |
The 118 most common of 129 parts.

joeycastillo/The-Open-Book
For details on how to build, test and use Open Book, I've made documentation available here.

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

bitaxeorg/bitaxeGamma
Bitaxe based on the BM1370 from the S21 Pro



hhuysqt/esp32s3-keyboard
USB/BLE keyboard driver based on ESP32S3-WROOM-1

katbinaris/nanofoc_devkit
Compact All-In-One BLDC Controler featuiring ESP32-S3, TMC6300 and Magalpha sensors. Small 35x35mm footprint.

Hack-a-Day/2025-Communicator_Badge
The 2025 Hackaday Supercon RF Communicator Badge
It measures 160 × 100 mm and has 2 copper layers, 1.6 mm thick.
129 parts, built around the ESP32-S3-WROOM-1-N8. 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 smicbee/CoffeeRoast repository on GitHub, at the commit this page was made from: the board is KiCAD/CoffeeRoast-Control-RevA/CoffeeRoast-Control-RevA.kicad_pcb and its schematic KiCAD/CoffeeRoast-Control-RevA/CoffeeRoast-Control-RevA.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask smicbee before reusing the design.