Skip to the content
PCBKitNew board
2 layers22 × 36 mmDebug adapter, the printed circuit board in 3D

Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

Size
22 × 36 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
23
Pads
44
Tracks, vias
65, 6
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
14 Mar 2026
Updated
7 Nov 2026

Overview

Debug adapter is an open-source printed circuit board by Th3Link, from the Th3Link/homeautomation repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 22 × 36 mm with 11 parts on 23 nets, routed with 65 tracks and 6 vias.

It is built around the BC847. Its parts include 3 resistors, 2 transistors, 1 IC and 1 connector. It belongs with the home automation and IoT and interfaces and adapters boards of this library.

Main components

1

README

README.md

homeautomation

Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway. This repository holds the hardware (KiCad), mechanics (3D-printable enclosures), and firmware for the whole system.

Start here: docs/index.md — the full documentation index (requirements, architecture decisions, protocol specs), also built into every crate's cargo doc output and published to GitHub Pages.

Software

The firmware is Rust (#![no_std], embassy async, esp-hal), organized as one Cargo workspace under software/:

  • common-core / common-hardware — CAN wire-format types and ESP32 hardware-support helpers shared by both firmware lines.
  • gateway-core / gateway-hardware — the CAN↔MQTT bridge: web config UI, /control.json RPC, self- and CAN-bus OTA update, over wired Ethernet (DHCPv4 + SLAAC, no WiFi).
  • cancomponents-core / cancomponents-hardware — the node firmware living on the bus: relays, rollershutters, buttons, lights.
  • tools/mqtt-log-reader — a small Python tool for reading back the gateway's MQTT log/debug topics.
  • sim/ — ./sim up: the unchanged gateway and node firmware in QEMU, several gateways with their nodes on virtual CAN buses; press buttons, set what the sensors measure, watch relays and frames, in a TUI, from Python scripts or in pytest.
  • legacy/ — the original C++/ESP-IDF implementation, kept for reference. No longer built by CI.

Building

The *-core crates are hardware-independent and build/test on any machine with stable Rust:

bash
cargo test -p gateway-core -p cancomponents-core -p common-core

The *-hardware crates target Xtensa (ESP32) and need Espressif's Rust toolchain fork, installed via espup:

bash
cargo install espup
espup install
source "$HOME/export-esp.sh"   # needed once per new shell

Then, from a *-hardware crate directory (e.g. software/gateway-hardware/):

bash
cargo run --release

cargo run flashes over USB serial and opens a monitor, via espflash (configured as each crate's custom runner in its own .cargo/config.toml).

Hardware

Relais

Disclaimer: if you put mains voltage on a relais board, make sure you know what you are doing. These components are experimental and you are in charge of your own actions. Be safe — if you're unsure, get an expert or leave it.

Three PCBs, one shared firmware, to switch power on and off:

  • Solid-state relais (SSR) — mains voltage only (~230V @ 50-60Hz), up to 1A per relay, six relais sharing one 1A fuse. Be careful with capacitive/inductive loads; handles small rollershutters, heating actuators, and electro-magnetic contactors fine.
  • Regular relais — up to 16A each, no on-board fuse (protect your own circuits). No arc-quenching chamber, so an electro-magnetic contactor is a better choice for heavy inductive loads (motors, frequency drives).
  • Rollershutter — two cascaded relais per channel (power, then up/down), with software interlocking so up and down are never active at once.

All three use the same firmware and the same ESP32 pinning, and each has one extension port for up to 4 additional relay or sensor boards.

Lightswitch, sensors, CAN header/hub, UART adapter

Additional boards in hardware/ — see each board's own KiCad project for details; written documentation for these is still a work in progress.

CAN bus and MQTT protocol

See docs/protocol-can.md for the byte-level CAN wire format shared by every component, and software/gateway-core/docs/protocol-mqtt.md for the gateway's MQTT topic scheme. (Extension-board channel/button numbering conventions used by the node firmware — e.g. which CAN NO/button-id ranges map to which extension address — are documented at the node firmware level; docs/protocol-can.md covers the CAN frame format itself.)

CI

  • CI — cargo fmt / cargo clippy for every crate, cargo nextest with coverage and an MSRV check for the *-core crates.
  • Docs — cargo doc for every crate, published to GitHub Pages.
  • Security audit — cargo-audit against the RustSec advisory database, on every dependency change and once daily.
  • Renovate — automated dependency-update PRs, once daily.

software/legacy/ (the original C++/ESP-IDF code) is no longer built by CI — see its own README.md for the ESP-IDF build steps if you need to reproduce it.

License

GNU General Public License v3.0 (or later) — see LICENSE.

This is meant to be freely buildable, flashable, and modifiable hardware and firmware. GPLv3 was chosen deliberately: its copyleft means anything built on this stays open, and its Section 6 "Installation Information" requirement means anyone who conveys a modified version as part of a physical product also has to provide what's needed to install your own modified firmware on it — nobody gets to lock you out of hardware you own. All schematics, layouts, mechanics, tools, and software are provided so you can fix things yourself rather than throwing them away.

Contribution

Feel free to report issues or open a pull request.

Parts

11
QtyValueFootprintReferences
310KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R3
2BC847Package_TO_SOT_SMD:SOT-23Q1, Q2
2SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1, JP3
2SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP2, JP4
1RS232-Debugawesome:RS232-DebugU2
1debug6-MicroMatch2X03awesome:02x03MicroMatchJ1

Questions

How big is the Debug adapter PCB?

It measures 22 × 36 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Debug adapter use?

11 parts, built around the BC847. 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.

Where can I download the Debug adapter KiCad files?

From the Th3Link/homeautomation repository on GitHub, at the commit this page was made from: the board is hardware/debug_adapter/debug_adapter.kicad_pcb and its schematic hardware/canheader/canHeader.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Debug adapter design in my own project?

Its repository publishes it under the GPL-3.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).

More from Th3Link/homeautomation

8
  • 2 layers112 × 90 mmSsr, the printed circuit board in 3D

    Ssr

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    111 partsGPL-3.0
  • 2 layers188 × 97 mmRelais, the printed circuit board in 3D

    Relais

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    101 partsGPL-3.0
  • 2 layers48 × 49 mmSwitch, the printed circuit board in 3D

    Switch

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    67 partsGPL-3.0
  • 4 layers75 × 51 mmMqtt gateway, the printed circuit board in 3D

    Mqtt gateway

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    64 partsGPL-3.0
  • 2 layers80 × 86 mmPwm adapter, the printed circuit board in 3D

    Pwm adapter

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    60 partsGPL-3.0
  • 2 layers48 × 49 mmSensors, the printed circuit board in 3D

    Sensors

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    58 partsGPL-3.0
  • 2 layers126.5 × 42 mmCanhubstar, the printed circuit board in 3D

    Canhubstar

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    17 partsGPL-3.0
  • 2 layers61 × 32 mmCanHeader, the printed circuit board in 3D

    CanHeader

    Th3Link/homeautomation

    Components for a CAN-bus home-automation system: relay/rollershutter/ light/button/sensor nodes on a shared CAN bus, bridged to MQTT (and from there to openHAB or Home Assistant) by a gateway.

    12 partsGPL-3.0

Similar boards

  • 2 layers271.8 × 114.3 mmArdumower mega shield svn, the printed circuit board in 3D

    Ardumower mega shield svn

    Ardumower/ardumower

    Develop an open source robotic lawn mower (HW+SW reference platform)

    426 parts282
  • 2 layers130 × 80 mmSmu main 1, the printed circuit board in 3D

    Smu main 1

    jaromir-sukuba/J-SMU

    DIY source-measure unit

    210 parts244
  • 2 layers58 × 110 mmVco core, the printed circuit board in 3D

    Vco core

    shmoergh/moduleur

    Fully analog DIY-friendly modular synth

    146 parts222
  • 4 layers124.6 × 68.7 mmOssc board, the printed circuit board in 3D

    Ossc board

    marqs85/ossc_pcb

    ossc pcb design files

    265 parts163
  • 2 layers200 × 100 mmPolykit x monosynth, the printed circuit board in 3D

    Polykit x monosynth

    polykit/polykit-x-monosynth

    The Polykit X1 is a DIY semi-modular, analog, patchable synthesizer

    167 parts94
  • 2 layers156.6 × 125.2 mmAutoFeeder, the printed circuit board in 3D

    AutoFeeder

    ErichStyger/McuOpenPnP_Machine

    Repository for the McuOnEclipse OpenPnP machine

    58 parts69
  • 2 layers45.2 × 36.6 mmKaffeeInterface v1, the printed circuit board in 3D

    KaffeeInterface v1

    misteu/RPiCoffee

    Modding / hacking of a coffee machine (DeLonghi ECAM 22.110.B Magnifica S) for IoT capabilities

    50 parts64BSD-3-Clause
  • 4 layers43.8 × 30.2 mmS VHS ZX Spectrum Rev. D, the printed circuit board in 3D

    S VHS ZX Spectrum Rev. D

    redhawk668/ZX-Spectrum-S-Video

    S-Video Modification PCB for the ZX Spectrum

    17 parts47GPL-3.0