
JBC Multitool
Tropaion/JBC_Multitool
A slot extension device for JBC soldering stations with only one soldering iron terminal

An open-source OpenTherm heating controller PCB
Placed is an open-source printed circuit board by Zepheus, from the Zepheus/opentherm_heating_controller repository on GitHub. It is a 2-layer board of 160 × 95 mm with 99 parts on 72 nets.
It is built around the ESP32-C6-WROOM-1-N8, LDL1117S33R and USBLC6-2SC6, with the 1N4148WS, AO3400A and RT314005 among its other parts. Its parts include 32 resistors, 20 diodes, 11 connectors, 10 capacitors and 8 switches. It belongs with the home automation and IoT boards and the ESP32 and RISC-V boards of this library.
ESP32-C6 heating controller for a UK wiring centre, built for Home Assistant and ESPHome. Board revision v1.0

Andiron is an isolated I/O board for a domestic heating system. It sits in the wiring centre, switches the zone valves and boiler demand through four volt-free changeover relays, and talks to the boiler over OpenTherm. All the logic (schedules, thermostats, weather compensation) lives in Home Assistant. The board was designed around an ESPHome firmware, which will be written and published once the first boards are in hand.
| MCU | ESP32-C6-WROOM-1 (WiFi 6, BLE), USB-C power and programming |
| Boiler | OpenTherm master (opto-isolated, fused against a 230 V miswire) |
| Outputs | 4 × volt-free changeover relays (CH1–CH4), NC / COM / NO terminals, 250 VAC 3 A, each channel isolated from the others |
| Sensors | 2 × 1-Wire probe terminals (flow, outdoor), 2 × Qwiic I²C (one for the OLED, on a cable), 8-pin spare GPIO header |
| Board | 160 × 95 mm, 2 layers, wall-hanging with all cables from below or the left, 6.4 mm isolation around every relay channel, JLCPCB assembly |
Mains voltage. The relay contacts can switch 230 V. Do not build or install it unless you are competent to work on mains wiring, and read the safety notes in
docs/design.mdfirst. Status: v1.0 passes ERC, DRC and the spacing checks, but no board has been built or tested yet.
| Top | Bottom |
|---|---|
![]() | ![]() |
![]() | ![]() |
The 3D views use stand-in models for the ESP32-C6 module (ESP32-S3-WROOM-1, same body) and the USB-C receptacle (GCT USB4105, same footprint).
The full BOM with LCSC part numbers and cost estimates is in
docs/BOM.md; the JLCPCB upload file is
docs/bom/andiron-bom-jlc.csv. At LCSC prices
from October 2026, components came to roughly $16 per board, or about $24 per
board for a run of five once Extended-part loading fees are included. The four
relays are $7.60 of that. PCB,
assembly and shipping come on top, from the JLCPCB quote.
| Tool | Used for |
|---|---|
| KiCad 10 | schematic, layout, DRC, renders (kicad-cli) |
| Konnect MCP server (0.13, KiCad 10 plugin) | lets Claude Code read and edit the KiCad project, search the JLCPCB parts database |
| Freerouting 2.x + Java | autorouting |
| easyeda2kicad | importing JLC/LCSC symbols, footprints and 3D models into lib/ |
| Python 3 | the scripts in tools/ |
konnect on your PATH (or point
.mcp.json at it).download_jlcpcb_database); tools/bom.py reads the same file for prices.docs/requirements.md and
docs/design.md for what the board does and why.The layout is generated, not drawn by hand: part positions live in
tools/layout/place.py, shared dimensions (relay row, terminals, isolation
zones, slots, antenna keep-out) in tools/layout/geometry.py, and hand-laid
copper in tools/route/prep_board.py. Edit those and rerun the pipeline rather
than moving tracks in the PCB editor.
KPY=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3
$KPY -I tools/sync_netlist.py "$PWD" tools/route/placed.kicad_pcb # after a schematic change
$KPY -I tools/layout/place.py tools/route/placed.kicad_pcb # after a placement change
tools/route/run_pipeline.sh "$PWD" 40 # route, pour, silkscreen, DRC, sanity (close the PCB editor first)
python3 tools/bom.py # docs/BOM.md and docs/bom/andiron-bom-jlc.csv
tools/render.sh # docs/images/| Path | What |
|---|---|
heating-controller.kicad_pro / .kicad_sch / .kicad_pcb | KiCad 10 project (root sheet plus power_mcu, opentherm, relays) |
heating-controller.kicad_dru | custom DRC rules: mains isolation, clearances, track widths |
.konnect/project.json | design rules in prose, read by Konnect during layout |
lib/ | project symbols, footprints and 3D models (from JLC/EasyEDA) |
docs/requirements.md | numbered requirements (what) |
docs/design.md | decisions, safety framing, GPIO map, layout, open questions (why) |
docs/layout-notes.md | what worked and what did not in placement and routing |
docs/BOM.md, docs/bom/ | bill of materials and JLCPCB upload file |
tools/ | routing pipeline, BOM, renders, 3D model sync, checks; see tools/README.md |
Open questions that must be answered before ordering are at the end of
docs/design.md; the boiler model code is the main one.
Open hardware. The board design and documentation are licensed under the
CERN Open Hardware Licence v2, Permissive, the
hardware counterpart of MIT; the scripts in tools/ are under the
MIT License. See LICENSE.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 1N4148WS | Diode_SMD:D_SOD-323 | D101, D102, D103, D104, D201, D202, D203, D204 |
| 6 | 10k | Resistor_SMD:R_0603_1608Metric | R4, R5, R6, R7, R9, R11 |
| 6 | 1k | Resistor_SMD:R_0603_1608Metric | R8, R10, R113, R123, R133, R143 |
| 5 | 100 | Resistor_SMD:R_0603_1608Metric | R111, R121, R131, R141, R203 |
| 4 | 100k | Resistor_SMD:R_0603_1608Metric | R112, R122, R132, R142 |
| 4 | 100nF | Capacitor_SMD:C_0603_1608Metric | C5, C7, C9, C10 |
| 4 | AO3400A | Package_TO_SOT_SMD:SOT-23 | Q101, Q102, Q103, Q104 |
| 4 | MountingHole_3.2mm_M3 | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 4 | RT314005 | jlc:RELAY-TH_RT314005_HF115F-PINS | K101, K102, K103, K104 |
| 3 | 4.7k | Resistor_SMD:R_0603_1608Metric | R12, R13, R14 |
| 3 | Fiducial_1mm_Mask3mm | Fiducial:Fiducial_1mm_Mask3mm | FID1, FID2, FID3 |
| 2 | 10uF | Capacitor_SMD:C_0805_2012Metric | C3, C4 |
| 2 | 330 | Resistor_SMD:R_0603_1608Metric | R15, R204 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | SMF5.0A | Diode_SMD:D_SOD-123F | D1, D2 |
| 1 | 1.5k | Resistor_SMD:R_0603_1608Metric | R205 |
| 1 | 15V BZT52C15 | Diode_SMD:D_SOD-123 | D206 |
| 1 | 1A 250V fast | Fuse:Fuse_Littelfuse-NANO2-451_453 | F201 |
| 1 | 1M | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 1nF | Capacitor_SMD:C_0603_1608Metric | C1 |
| 1 | 1uF | Capacitor_SMD:C_0603_1608Metric | C8 |
| 1 | 220 | Resistor_SMD:R_0603_1608Metric | R202 |
| 1 | 22uF | Capacitor_SMD:C_0805_2012Metric | C6 |
| 1 | 330 | Resistor_SMD:R_1206_3216Metric | R201 |
| 1 | 470uF/16V | Capacitor_SMD:CP_Elec_8x10 | C2 |
| 1 | 4V3 BZT52C4V3 | Diode_SMD:D_SOD-123 | D207 |
| 1 | 4V7 BZT52C4V7 | Diode_SMD:D_SOD-123 | D205 |
| 1 | BOOT | jlc:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5 | SW2 |
| 1 | BTN1 | jlc:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5 | SW3 |
| 1 | BTN2 | jlc:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5 | SW4 |
| 1 | CH1 NC/COM/NO | jlc:CONN-TH_3P-P5.00_WJ128V-5.0-3P | J111 |
| 1 | CH2 NC/COM/NO | jlc:CONN-TH_3P-P5.00_WJ128V-5.0-3P | J112 |
| 1 | CH3 NC/COM/NO | jlc:CONN-TH_3P-P5.00_WJ128V-5.0-3P | J113 |
| 1 | CH4 NC/COM/NO | jlc:CONN-TH_3P-P5.00_WJ128V-5.0-3P | J114 |
| 1 | ESP32-C6-WROOM-1-N8 | jlc:WIRELM-SMD_ESP32-C6-WROOM-1 | U1 |
| 1 | FLOW | jlc:CONN-TH_3P-P3.50_KF350-3.5-3P | J3 |
| 1 | K1 | LED_SMD:LED_0603_1608Metric | LED101 |
| 1 | K2 | LED_SMD:LED_0603_1608Metric | LED102 |
| 1 | K3 | LED_SMD:LED_0603_1608Metric | LED103 |
| 1 | K4 | LED_SMD:LED_0603_1608Metric | LED104 |
| 1 | LDL1117S33R | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | LTV-817S (RX) | jlc:OPTO-SMD-4_L4.6-W6.5-P2.54-LS10.3-BL | U202 |
| 1 | LTV-817S (TX) | jlc:OPTO-SMD-4_L4.6-W6.5-P2.54-LS10.3-BL | U201 |
| 1 | OLED (Qwiic) GND/3V3/SDA/SCL | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J5 |
| 1 | OT (24V max) | jlc:CONN-TH_P3.50_KF350-3.5-2P | J201 |
| 1 | OT_ACT | LED_SMD:LED_0603_1608Metric | LED2 |
| 1 | OUTDOOR | jlc:CONN-TH_3P-P3.50_KF350-3.5-3P | J4 |
| 1 | QWIIC | Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J6 |
| 1 | RESET | jlc:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5 | SW1 |
| 1 | S8550 | Package_TO_SOT_SMD:SOT-23 | Q201 |
| 1 | SMAJ24A | Diode_SMD:D_SMA | D208 |
| 1 | SPARE GPIO | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J7 |
| 1 | STATUS | LED_SMD:LED_0603_1608Metric | LED1 |
| 1 | USB-C 16P | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U3 |

Tropaion/JBC_Multitool
A slot extension device for JBC soldering stations with only one soldering iron terminal

olerast67/emotion-keychain
Брелок с OLED-экраном и анимированными эмоциями

Plastal-Bot-Builders/RoboCoreDocumentation
RoboCore is a classroom robot kit and coding platform, designed and built in Zambia by Plastal-Bot Builders (Lusaka).

JonaWe/ummon
ummon (from German Umgebungsmonitor, "environment monitor") is an ESP32-C6 based environmental sensor board with USB-C power.

jeji/orange_juice
A orange pi zero shield board for 3D printer with klipper features

jeji/orange_juice_2
For Orange Pi zero 2 with klipper and more advance feature

xmyoot/esp32-media-carrier
ESP32 multimedia carrier board with 7–24 V DC buck regulator, 3.2 W Class-D I2S audio amp, WS2812 LED ring driver, and SPI TFT display header

rjsc/BECom
BECom - Battery Emulator Companion - Open Source Hardware, designed to run dalathegreat/Battery-Emulator
It measures 160 × 95 mm and has 2 copper layers, 1.6 mm thick.
99 parts, built around the ESP32-C6-WROOM-1-N8, LDL1117S33R, USBLC6-2SC6 and 1N4148WS. 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 Zepheus/opentherm_heating_controller repository on GitHub, at the commit this page was made from: the board is tools/route/placed.kicad_pcb and its schematic heating-controller.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 Zepheus before reusing the design.