Skip to the content
2 layers150 × 48 mmSSR5A, the printed circuit board in 3D

10 channel mains switch

Size
150 × 48 mm
Copper layers
2
Thickness
1.6 mm
Parts
66
Nets
63
Pads
230
Tracks, vias
288, 145
Pours
11
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
31 Jul 2026
Updated
6 Nov 2026

Overview

SSR5A is an open-source printed circuit board by burgrp, from the burgrp/bleriot-SSR5A repository on GitHub. It is a 2-layer board of 150 × 48 mm with 66 parts on 63 nets, routed with 288 tracks and 145 vias.

It is built around the HLK-PM03, PAN2110P0AA and BTA08S-600CW(KTP), with the WS2812B among its other parts. Its parts include 27 resistors, 12 diodes, 8 ICs, 7 capacitors and 5 connectors.

Main components

4

README

README.md

BleRiot SSR5A

SSR5A is a mains-powered five-channel BleRiot switch intended primarily for zone thermo-electric actuators in hydronic heating systems. Each independently controlled output switches mains line through a zero-cross optotriac and triac.

alt SSR5A PCB

The board combines a PY32F030 microcontroller, PAN2110 radio, five output channels, a WS2812B status LED, and an isolated 3.3 V mains power supply. The outputs are on/off switches; they are not phase-angle dimmers.

Connections

Connector numbering follows the KiCad schematic.

ConnectorPin 1Pin 2Pin 3
IN1Line (L)Neutral (N)Protective earth (PE)
J1Channel 1 switched lineNeutralProtective earth
J2Channel 2 switched lineNeutralProtective earth
J3Channel 3 switched lineNeutralProtective earth
J4Channel 4 switched lineNeutralProtective earth
J5Channel 5 switched lineNeutralProtective earth

Each channel uses a MOC306x zero-cross optotriac and BTA08S-600CW triac. Its on-board indicator LED follows the output directly.

BleRiot Registers

An enabled channel is exposed as a writable boolean register:

TagRegister
1ssr.channel.1
2ssr.channel.2
3ssr.channel.3
4ssr.channel.4
5ssr.channel.5

Each channel has inventory-as-code configuration in fw/cmd/dev/main.go:

  • Disabled omits the register and holds the physical output off.
  • Inverted reverses the logical-to-physical output mapping.
  • Default selects the logical value applied after power-on and RF link loss.

Disabled takes precedence over inversion and the default. At startup, firmware first biases every active-low triac control inactive, then applies the configured defaults.

The node considers the BleRiot link offline after five seconds without a valid packet. On the online-to-offline transition, it immediately restores every channel to its configured logical Default and reapplies the corresponding physical output level. This fail-safe also honors Inverted; for example, an inverted channel with Default: false is physically energized while offline. Choose defaults for the required safe state of the installation.

Stavová LED na PA6 zobrazuje spojení a logický stav kanálů. Od firmware fw/v1.1.4 používá stejné oranžové barvy jako CPG:

StavIndikace LED (RGB)
Online, všechny povolené kanály mají hodnotu falseStálá oranžová 0xA05000
Online, alespoň jeden povolený kanál má hodnotu trueStálá zelená 0x104010 (beze změny)
OfflineBlikající oranžová 0xFF3000, 200 ms svítí a 800 ms nesvítí

Aktivita se řídí logickou hodnotou registru bez ohledu na inverzi výstupu; zakázané kanály zelenou indikaci neaktivují. Offline indikace má přednost. Změna barev je ověřená testy a sestavením, nikoliv na fyzické LED.

The RF-loss behavior has been verified on hardware: channel 1 was commanded on, the hub was stopped, and its active-low MCU output returned inactive after the five-second link timeout. After reconnecting, all five registers reported their configured false defaults.

Hardware And Firmware

FunctionMCU pin
Channel 1PA11
Channel 2PA12
Channel 3PA15
Channel 4PB3
Channel 5PB4
WS2812B dataPA6
PAN2110 CSNPA4
PAN2110 SCKPA5
PAN2110 dataPA7

The importable ssr5a firmware exports Run and targets the py32f030x8 profile. Its device type owns the scheduler-none build policy and 100 kHz attach-mode pyOCD settings. The local inventory bridges the radio node to a Registry server. The SWD connector carries SWDIO, ground, and SWCLK but no reset or target-voltage connection.

Repository Layout

  • board/ contains the KiCad schematic, PCB, BOM, and fabrication outputs.
  • fw/ contains the importable TinyGo firmware, tests, and build profile.
  • fw/spec/ contains configuration, the config-dependent register table, chip, and firmware manifest.
  • fw/cmd/dev/ contains the local inventory and BleRiot CLI.
  • fw-orig/ contains the original MicroPython firmware for reference.
  • sub/hw-kicad/ is the shared KiCad library submodule.

Initialize the shared hardware library after cloning:

sh
git submodule update --init --recursive

Build And Test

The firmware requires Go, TinyGo with Puya target support, GNU Arm Embedded binutils, and pyOCD with the Puya CMSIS pack.

sh
go -C fw test ./...
go -C fw run ./cmd/dev node gen --name ssr
go -C fw run ./cmd/dev node build --name ssr --disassembly
go -C fw run ./cmd/dev node build --name ssr --flash --rtt

With a Registry server running, start the local hub:

sh
go -C fw run ./cmd/dev hub --registry http://localhost:8080 --diagnostics rf

Safety

This design connects directly to hazardous mains voltage. Assembly, installation, testing, and enclosure work must be performed by suitably qualified people using applicable electrical codes and safe isolation practices. Independently verify protection, creepage and clearance, protective earth continuity, enclosure construction, triac thermal limits, and actuator ratings before deployment.

Do not wire mains or an actuator from this README alone. Verify the assembled board against the schematic, PCB, and actuator manufacturer's documentation.

Parts

66
QtyValueFootprintReferences
15680RResistor_SMD:R_0805_2012MetricR5, R6, R7, R10, R11, R12, R15, R16, R17, R20, R21, R22, R25, R26, R27
6330RResistor_SMD:R_0805_2012MetricR3, R8, R13, R18, R23, R28
6LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD2, D4, D6, D8, D10, D13
5270RResistor_SMD:R_0805_2012MetricR4, R9, R14, R19, R24
5BTA08S-600CWPackage_TO_SOT_SMD:TO-252-2D3, D5, D7, D9, D11
5MOC306XMSPackage_DIP:SMDIP-4_W7.62mmU4, U5, U6, U7, U8
4100nCapacitor_SMD:C_0805_2012MetricC2, C4, C5, C7
21uCapacitor_SMD:C_0805_2012MetricC1, C3
2MountingHoleMountingHole:MountingHole_3.7mm_Pad_ViaH1, H2
11Connector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_HorizontalJ1
110kResistor_SMD:R_0805_2012MetricR1
116MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
12Connector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_HorizontalJ2
13Connector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_HorizontalJ3
14Connector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_HorizontalJ4
147uCapacitor_SMD:C_0805_2012MetricC6
15Connector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_HorizontalJ5
1Antenna_ShieldRF_Antenna:Texas_SWRA117D_2.4GHz_RightA1
1B72650M251K72Resistor_SMD:R_1210_3225MetricRV1
1HLK-PM03Drake:HLK-PM01U2
1MAINSConnector_Phoenix_MSTB:PhoenixContact_MSTBA_2,5_3-G_1x03_P5.00mm_HorizontalIN1
1PAN2110P0AAPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1PY32F030K1xTxPackage_QFP:LQFP-32_7x7mm_P0.8mmU3
1SWDDrake:SWDX1
1WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD12

Similar boards

  • 2 layers60 × 62 mmCPG, the printed circuit board in 3D

    CPG

    burgrp/bleriot-CPG

    CPG is a mains-powered BleRiot node for controlling a circulation pump and a motorized 3-way or 4-way valve in floor-heating and radiator-heating circuits.

    39 parts
  • 2 layers40 × 42 mmBleriot rs485, the printed circuit board in 3D

    Bleriot rs485

    burgrp/bleriot-rs485

    DIN rail mounted RS485 to WiFi bridge

    21 parts1
  • 2 layers314 × 27 mmBleriot REG6, the printed circuit board in 3D

    Bleriot REG6

    burgrp/bleriot-REG6

    REG6 is a six-channel solid-state-relay controller built around a PY32F030 and PAN2110. This repository contains the KiCad hardware and a standalone TinyGo/BleRiot module under fw/ that exposes one integer percentage…

    85 parts
  • 2 layers77 × 51 mmAt32f455-bob, the printed circuit board in 3D

    At32f455-bob

    burgrp/hw-at32f455-bob

    66 parts
  • 4 layers68 × 19 mmBob, the printed circuit board in 3D

    Bob

    burgrp/bleriot

    BleRiot is a compact request/response protocol for reading and writing named integer registers on low-power RF nodes. A Linux hub polls the nodes and bridges their registers to an external Registry service.

    25 parts
  • 2 layers55 × 22 mmBleriot sense, the printed circuit board in 3D

    Bleriot sense

    burgrp/bleriot-sense

    BleRiot Sense is a compact single-sensor BleRiot node built around a PY32F003L16S6TU microcontroller and a PAN2110 long-range 2.4 GHz radio. Its sensor input is configured at assembly time for one of four uses:

    19 parts
  • 2 layers50 × 35 mmFan switch, the printed circuit board in 3D

    Fan switch

    burgrp/hw-fan-switch

    12V DC Fan switch based on ESP8266

    23 parts

Questions

How big is the SSR5A PCB?

It measures 150 × 48 mm and has 2 copper layers, 1.6 mm thick.

What parts does the SSR5A use?

66 parts, built around the HLK-PM03, PAN2110P0AA, BTA08S-600CW(KTP) and WS2812B. 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 SSR5A KiCad files?

From the burgrp/bleriot-SSR5A repository on GitHub, at the commit this page was made from: the board is board/SSR5A.kicad_pcb and its schematic board/SSR5A.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the SSR5A design in my own project?

Its repository states no licence, so its author keeps all rights: ask burgrp before reusing the design.