
Expanders
koko69420/HomeBus
Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol

Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol
Base node is an open-source printed circuit board by koko69420, from the koko69420/HomeBus repository on GitHub. It is a 2-layer board of 60 × 60 mm with 34 parts on 47 nets, routed with 528 tracks and 40 vias.
It is built around the CH32X033F8P6, MAX491EPD and 74HC165D, with the SMBJ26A and WS2812B among its other parts. Its parts include 7 connectors, 6 resistors, 5 capacitors, 4 ICs and 4 diodes. It belongs with the home automation and IoT boards of this library.
The HomeBus Base Node is the primary in-wall actuator and sensor module in the HomeBus distributed automation network. Designed to fit into standard residential switch flush boxes behind wall plates, it interfaces physical toggle switches and rotary encoders with the HomeBus RS-422 serial bus while driving external relay modules to switch lights, appliances, and inductive loads.
| Front View (Component Side) | Back View (Connector Side) |
|---|---|
![]() | ![]() |

flowchart LR
subgraph Power ["Power Subsystem"]
BUS_IN["24V DC Bus Rail"] --> BUCK["MP1584EN Buck Converter\n(24V -> 5V DC @ 3A)"]
BUCK --> VDD["5V Logic Rail"]
end
subgraph BusInterface ["RS-422 Interface"]
RS422["XY2500 6-Pin Bus Header\n(24V, GND, TX±, RX±)"]
TVS["SM712 TVS Array\n(-7V to +12V Protection)"]
XCVR["MAX491 Transceiver\n(Full-Duplex RS-422)"]
RS422 <--> TVS <--> XCVR
end
subgraph Processing ["Core MCU"]
MCU["WCH CH32X033F8P6\n(32-bit QingKe RISC-V @ 48 MHz)"]
end
subgraph Inputs ["Input Subsystem"]
DIP["8-Bit DIP Switch\n(Hardware Node ID)"]
WALL["External Wall Switches /\nRotary Encoders (JST-PH)"]
SR["74HC165D Shift Register\n(8-bit PISO Shift Register)"]
DIP --> SR
WALL --> SR
end| Subsystem | Component | Package | Function / Rationale |
|---|---|---|---|
| Microcontroller | WCH CH32X033F8P6 | TSSOP-20 | QingKe 32-bit RISC-V V4C core @ 48 MHz, 62 KB Flash, 20 KB SRAM. Handles RS-422 protocol stack, switch debouncing, and relay actuation. |
| Transceiver | Maxim MAX491CSD / MAX491ESD | SOP-14 | High-speed, full-duplex RS-422/RS-485 differential transceiver. Allows simultaneous transmit and receive with no collision backoff. |
| Input Multiplexer | NXP / TI 74HC165D | SOP-16 | 8-bit Parallel-In Serial-Out (PISO) shift register. Samples the 8-bit DIP switch and wall inputs using only 3 MCU pins (PL_, CP, Q7). |
| Power Converter | Monolithic Power MP1584EN | Modular Module | 3A high-frequency step-down switching buck regulator module converting centralized 24V bus power to regulated 5V system logic. |
| Surge Protection | ProTek SM712 / PSM712 | SOT-23 | Asymmetrical bidirectional TVS diode array (-7V to +12V) specifically engineered for RS-422 lines against ESD, EFT, and power transients. |
| Status Indicator | Xinglight XL-1010RGBC (WS2812B-1010) | SMD-1010 (1.0x1.0mm) | Ultra-compact single-wire addressable RGB LED for status indication, network link health, and commissioning feedback. |
| Hardware ID | 8-Position SPST DIP Switch | 2.54mm Pitch Slide | Configures physical Node ID (1–255) for commissioning, telemetry, and OTA management. |
The Base Node assigns the 20 pins of the CH32X033F8P6 as follows, differentiating between Development mode (SWD debug available) and Production mode (SWD pins repurposed for actuator GPIOs):
| Pin # | MCU Pin | Production Function | Development Function | Net / Description |
|---|---|---|---|---|
| 1 | PA0 / PC3 | GPIOC 3 | Boot Switch | Actuator Output 3 in Production; Bootloader entry trigger in Development |
| 2 | PA1 / PC4 | GPIOC 4 | GPIOC 4 | Actuator Output 4 / Relay drive line |
| 3 | PA2 / PC2 | GPIOC 2 | GPIOC 2 | Actuator Output 2 / Relay drive line |
| 4 | NRST | RST | RST | Hardware Reset line (active low, with pull-up) |
| 5 | PB0 / PC0 | HC165 Q7 | HC165 Q7 | Shift Register Serial Data Out (MISO stream to MCU) |
| 6 | PB1 | Neopixel | Neopixel | High-speed single-wire NRZ serial data stream to WS2812B LED |
| 7 | VSS | GND | GND | System Ground (0V reference) |
| 8 | PB2 / PC6 | GPIOC 6 | SWDIO | Actuator Output 6 in Production; WCH SWD Debug Data in Development |
| 9 | VDD | VDD | VDD | Logic Supply Rail (+5V DC from MP1584EN) |
| 10 | PB3 / PC8 | GPIOC 8 | SWD RX | Actuator Output 8 in Production; Debug UART RX in Development |
| 11 | PB6 | I2C SDA | I2C SDA | I2C Serial Data line for auxiliary sensor daughterboards |
| 12 | PB7 | I2C SCL | I2C SCL | I2C Serial Clock line for auxiliary sensor daughterboards |
| 13 | PB4 / PC5 | GPIOC 5 | GPIOC 5 | Actuator Output 5 / Relay drive line |
| 14 | PB5 | HC165 PL_ | HC165 PL_ | 74HC165 Asynchronous Parallel Load (active low) |
| 15 | PB8 | HC165 CP | HC165 CP | 74HC165 Shift Register Clock Pulse |
| 16 | PB10 | MAX491 DI | MAX491 DI | RS-422 Driver Input (MCU UART TX to RS-422 differential bus) |
| 17 | PB11 | MAX491 RO | MAX491 RO | RS-422 Receiver Output (RS-422 differential bus to MCU UART RX) |
| 18 | PB9 / PC7 | GPIOC 7 | SWCLK | Actuator Output 7 in Production; WCH SWD Clock in Development |
| 19 | PA3 / PC1 | GPIOC 1 | GPIOC 1 | Actuator Output 1 / Relay drive line |
| 20 | PA4 / PC9 | GPIOC 9 | SWD TX | Actuator Output 9 in Production; Debug UART TX in Development |
base_node (v1.0): Initial prototype layout. Used orthogonal 45° routing and tested basic connectivity between the CH32X033 and MAX491.base_node-rounded (v1.1): Experimental PCB layout with circular/curved track fillets using KiCad round-tracks plugin for aesthetic evaluation and high-speed trace continuity.base_node_clad (v1.2): Added continuous solid copper pour cladding across top and bottom layers, significantly reducing ground impedance and improving EMI containment in high-noise AC environments.base_node_clad_v2 (v2.0 - Production):
Basenode_gerber/.Basenode_gerber/base_node.zip.base_node_clad_v2-F_Cu.pdfbase_node_clad_v2-B_Cu.pdfbase_node_clad_v2-Edge_Cuts.pdf| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100nF | HomeBus:C_0603_1608Metric | C1, C3, C5, C7 |
| 3 | MountingHole_2.2mm_M2 | MountingHole:MountingHole_2.2mm_M2 | Mount1, Mount2, Mount3 |
| 2 | 10KΩ | Resistor_THT:R_Array_SIP9 | RN1, RN2 |
| 2 | 120Ω | HomeBus:R_0805_2012Metric | R5, R6 |
| 2 | 4.7kΩ | HomeBus:R_0805_2012Metric | R7, R8 |
| 2 | SM712_SOT23 | Package_TO_SOT_SMD:SOT-23 | D1, D3 |
| 1 | 10KΩ | Resistor_SMD:R_0603_1608Metric | R4 |
| 1 | 10uF | HomeBus:C_0603_1608Metric | C2 |
| 1 | 24vdc | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J5 |
| 1 | 330Ω | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | 74HC165 | HomeBus:SOIC-16_3.9x9.9mm_P1.27mm | U3 |
| 1 | CH32X033F8P6 | HomeBus:TSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP2.15x3.35mm | U1 |
| 1 | Encoder 1 | HomeBus:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical | J6 |
| 1 | Encoder 2 | HomeBus:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical | J7 |
| 1 | Expantion Connector | HomeBus:IDC-Header_2x10_P2.54mm_Horizontal | J3 |
| 1 | HomeBus_LOGO | HomeBus:HomeBus_LOGO | Lg1 |
| 1 | I2C | HomeBus:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical | J4 |
| 1 | IO Interface | HomeBus:JST_PH_B10B-PH-K_1x10_P2.00mm_Vertical | J1 |
| 1 | MAX491E | HomeBus:SOIC-14_3.9x8.7mm_P1.27mm | U2 |
| 1 | MP1584EN_Module | HomeBus:MP1584 Module | U4 |
| 1 | OSHW-Logo_5.7x6mm_SilkScreen | Symbol:OSHW-Logo_5.7x6mm_SilkScreen | Lg2 |
| 1 | RS-422 Connector | HomeBus:PhoenixContact_MC_1,5_6-G-5.08_1x06_P5.08mm_Horizontal | J2 |
| 1 | SMBJ26A | Diode_SMD:D_SMB | D4 |
| 1 | SW_DIP_x08 | HomeBus:SW_DIP_SPSTx08_Slide_6.7x21.88mm_W7.62mm_P2.54mm_LowProfile | SW1 |
| 1 | WS2812B | HomeBus:XINGLIGHT-XL-1010RGBC-WS2812B | D2 |
It measures 60 × 60 mm and has 2 copper layers, 1.6 mm thick.
34 parts, built around the CH32X033F8P6, MAX491EPD, 74HC165D and SMBJ26A. 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 koko69420/HomeBus repository on GitHub, at the commit this page was made from: the board is Hardware/base_node/base_node.kicad_pcb and its schematic Hardware/Expanders/Expanders.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 koko69420 before reusing the design.

koko69420/HomeBus
Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol

koko69420/HomeBus
Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol

koko69420/HomeBus
Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol

koko69420/HomeBus
Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol

koko69420/HomeBus
Hard wired home automation, based on a RSICV MCU and RS-422 communication protocol


skumlos/bkm-10rlternative
Project aiming to replicate the BKM-10R/11R remote for Sony professional CRT monitors.

GadgetReboot/GR_ISO_Board
Isolation breakout board with a 5V isolated DC-DC converter, optocouplers, Relay, and more.

luftaquila/pointify
DIY retro analog gauges for real-time system and Claude usage monitoring


rgoulter/keyboard-labs
Repo with my PCB designs and keyboard firmware

petnica-rac-seminari/BCD-0o27-Tetris
The BalcCon Cyberdeck 0o27 (BCD-0o27) comes with a development framework that makes it easier to add functionality to the cyberdeck.

SomethingFourier/FPGA-Musical-Synth
A musical synthesizer that generates and outputs I2S audio with an FPGA