
OM-16LED
OpenModbus/OM-16LED
A compact industrial-grade 16-channel Modbus RTU LED driver.

A compact industrial-grade 64-channel Modbus RTU output module.
OM-64DO is an open-source printed circuit board by OpenModbus, from the OpenModbus/OM-64DO repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 163 × 72 mm with 231 parts on 303 nets, routed with 1,801 tracks and 536 vias.
It is built around the STM32G031F8P6, R-78E3.3-0.5 and THVD1450DRBR, with the TBD62083AFNG, SMBJ45A and CD123D-B140LR among its other parts. Its parts include 75 resistors, 72 diodes, 38 capacitors, 15 ICs and 6 connectors. It belongs with the home automation and IoT boards and the STM32 boards of this library.

A compact industrial-grade 64-channel Modbus RTU output module featuring low-side drivers, per-channel LEDs, wide input voltage, DIN-rail support, and full configuration via Modbus holding registers. Designed for automation, distributed I/O, and custom control applications.

The Open Modbus OM-64DO is a 64-channel low-side output expansion module intended for industrial automation, machine control, and distributed I/O networks using Modbus RTU over RS-485.
It switches DC loads such as solenoids, relays, indicator lamps, locks, and alarms up to 48 VDC.
The module combines an STM32G031 microcontroller, four MCP23S17 SPI expanders, and eight TBD62083 Darlington driver arrays.
This architecture enables reliable, flexible, and scalable output control with built-in protection and per-channel LED indication.
The full schematic and BOM are available at:
Check the latest release for more!
Ideal for:
The STM32G031F8P6 MCU handles Modbus RTU processing, configuration storage, SPI communication, and output refresh logic.
Four MCP23S17 SPI-based expanders provide the 64 output control signals in groups of 16.
The TBD62083 Darlington arrays switch the actual loads.
Their key characteristics include:
A robust THVD1450 transceiver provides differential RS-485 communication with:
The board accepts 7–28 VDC and includes a high-efficiency R-78E3.3-0.5 regulator for its 3.3 V logic domain.
Each output activates when its Modbus coil value is 1, causing the driver to sink current to ground.
When the coil value is 0, the channel turns off, leaving the load unpowered.
A dedicated LED mirrors the state of each output channel.
Coils map directly to output channels.
Addressing begins at 0x00.
| Coil Address (Hex) | Function |
|---|---|
| 0 (0x00) | OUTPUT 1 |
| 1 (0x01) | OUTPUT 2 |
| 2 (0x02) | OUTPUT 3 |
| 3 (0x03) | OUTPUT 4 |
| 4 (0x04) | OUTPUT 5 |
| … | … |
| 63 (0x3F) | OUTPUT 64 |
Configuration registers start at 0x00 and are stored in non-volatile memory.
| Register Address (Hex) | Name | Description | Allowed Values | Default |
|---|---|---|---|---|
| 0 (0x00) | Slave Address | Modbus device ID | 1–247 | 1 |
| 1 (0x01) | Baud Rate Code | Serial speed selector: 0=1200, 1=2400, 2=4800, 3=9600, 4=19200, 5=38400, 6=57600, 7=115200, 8=230400, 9=460800, 10=921600 | 0–10 | 3 |
| 2 (0x02) | Parity | Communication parity | 0=None, 1=Even, 2=Odd | 0 |
| 3 (0x03) | Data Bits | Serial data width | 5–9 (typ. 8) | 8 |
| 4 (0x04) | Stop Bits | Serial stop bits | 1–2 | 1 |
Below are typical Modbus RTU frames for controlling and configuring the OM-64DO.
Function: Write Single Coil (0x05)
Coil address: 0x0000
Value: ON → 0xFF00
Frame: 01 05 00 00 FF 00 8C 3A
Function: Write Multiple Coils (0x0F)
Start address: 0x0004
Quantity: 0x0008 (8 coils)
Data: FF (all eight bits ON)
Frame: 01 0F 00 04 00 08 01 FF 4F 15
Function: Write Multiple Coils (0x0F)
Start address: 0x0000
Quantity: 0x0040 (64 coils)
Data: FF FF FF FF FF FF FF FF
Frame: 01 0F 00 00 00 40 08 FF FF FF FF FF FF FF FF AA 20
Function: Write Multiple Coils (0x0F)
Start address: 0x0000
Quantity: 0x0040
Data: 00 00 00 00 00 00 00 00
Frame: 01 0F 00 00 00 40 08 00 00 00 00 00 00 00 00 EB A4
Function: Read Coils (0x01)
Start address: 0x0000
Quantity: 0x0040
Frame: 01 01 00 00 00 40 3D FA
Function: Write Single Register (0x06)
Register: 0x0000 (Slave Address)
Value: 0x0005
Frame: 01 06 00 00 00 05 49 C9
Function: Write Single Register (0x06)
Register: 0x0001 (Baud Rate Code)
Value: 0x0007 → 115200 baud
Frame: 01 06 00 01 00 07 99 C8
The OM-64DO uses low-side (open-collector) switching. That means the module connects the load to ground when ON, and the load must be powered from your external power supply.
The 64 outputs are grouped into four banks of 16 (Bank A–D). This allows one board to drive devices powered from different voltages simultaneously.
Examples:
Each output contains a protected Darlington transistor that sinks current:
Load +V ─────── Load ─────── OUTx (SINK)
│
└── GND (OM-64DO)⚠️ Important Grounding Requirement: All load power supplies must share a common ground with the OM-64DO. This is required for the low-side drivers and internal logic to reference the same electrical 0 V.
The example below shows how to drive 24 V and 12 V relays at the same time using separate banks.
This wiring approach can be extended to all four banks, each with its own voltage.
For questions, feedback, or technical assistance regarding the Open Modbus OM-64DO, the following support channels are available:
For general inquiries, firmware questions, or troubleshooting: contact@sszczep.dev
Issue tracker, source code, hardware design files, and community contributions: https://github.com/OpenModbus/OM-64DO
Share projects, ask for help, or suggest features: https://github.com/orgs/OpenModbus/discussions
Submit issues directly via GitHub Issues: https://github.com/OpenModbus/OM-64DO/issues
| Qty | Value | Footprint | References |
|---|---|---|---|
| 65 | RED | LED_SMD:LED_0603_1608Metric | D102, D201, D202, D203, D204, D205, D206, D207, D208, D209, D210, D211, D212, D213, D214, D215 +49 |
| 64 | 3K3 | Resistor_SMD:R_0603_1608Metric | R201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216 +48 |
| 19 | 0.1u | Capacitor_SMD:C_0603_1608Metric | C103, C105, C106, C201, C204, C206, C208, C301, C304, C306, C308, C401, C404, C406, C408, C501 +3 |
| 8 | 100K | Project_Library:R_Array_Convex_8x0602_EXB2HV | RN202, RN204, RN302, RN304, RN402, RN404, RN502, RN504 |
| 8 | 1u | Capacitor_SMD:C_0603_1608Metric | C205, C207, C305, C307, C405, C407, C505, C507 |
| 8 | 47R | Project_Library:R_Array_Convex_8x0602_EXB2HV | RN201, RN203, RN301, RN303, RN401, RN403, RN501, RN503 |
| 8 | TBD62083AFNG | Package_SO:SSOP-18_4.4x6.5mm_P0.65mm | U201, U203, U301, U303, U401, U403, U501, U503 |
| 6 | 10K | Resistor_SMD:R_0603_1608Metric | R101, R102, R217, R317, R417, R517 |
| 5 | 2.2u | Capacitor_SMD:C_0603_1608Metric | C104, C203, C303, C403, C503 |
| 4 | 100u | Capacitor_SMD:CP_Elec_8x10 | C202, C302, C402, C502 |
| 4 | 15EDGVC-3.5-20P | Project_Library:TerminalBlock_DEGSON_15EDGVC-3.5-20P_No_SilkScreen | J201, J301, J401, J501 |
| 4 | 33 | Resistor_SMD:R_0603_1608Metric | R218, R318, R418, R518 |
| 4 | MCP23S17T-E/SS | Package_SO:SSOP-28_5.3x10.2mm_P0.65mm | U202, U302, U402, U502 |
| 4 | SMBJ45A | Diode_SMD:D_SMB | D217, D317, D417, D517 |
| 2 | 10u | Capacitor_SMD:C_1206_3216Metric | C101, C102 |
| 1 | 0.5A | Fuse:Fuse_1206_3216Metric | F101 |
| 1 | 02x03 1.27 | Connector_PinHeader_1.27mm:PinHeader_2x03_P1.27mm_Vertical | J102 |
| 1 | 15EDGVC-3.5-4P | Project_Library:TerminalBlock_DEGSON_15EDGVC-3.5-4P_No_SilkScreen | J101 |
| 1 | 470 | Resistor_SMD:R_0603_1608Metric | R103 |
| 1 | CD123D-B140LR | Diode_SMD:D_SOD-123 | D103 |
| 1 | CS | TestPoint:TestPoint_Pad_D1.0mm | TP104 |
| 1 | DIR | TestPoint:TestPoint_Pad_D1.0mm | TP107 |
| 1 | LOGO | Project_Library:OpenModbus | G*** |
| 1 | MISO | TestPoint:TestPoint_Pad_D1.0mm | TP102 |
| 1 | MOSI | TestPoint:TestPoint_Pad_D1.0mm | TP101 |
| 1 | R-78E3.3-0.5 | Converter_DCDC:Converter_DCDC_RECOM_R-78E-0.5_THT | U101 |
| 1 | RX | TestPoint:TestPoint_Pad_D1.0mm | TP106 |
| 1 | SCK | TestPoint:TestPoint_Pad_D1.0mm | TP103 |
| 1 | SM712-02HTG | Package_TO_SOT_SMD:SOT-23 | D101 |
| 1 | SMAJ28A | Diode_SMD:D_SMA | D104 |
| 1 | STM32G031F8P6 | Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm | U103 |
| 1 | THVD1450DRBR | Package_SON:VSON-8-1EP_3x3mm_P0.65mm_EP1.6x2.4mm | U102 |
| 1 | TX | TestPoint:TestPoint_Pad_D1.0mm | TP105 |
It measures 163 × 72 mm and has 2 copper layers, 1.6 mm thick.
231 parts, built around the STM32G031F8P6, R-78E3.3-0.5, THVD1450DRBR and TBD62083AFNG. 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 OpenModbus/OM-64DO repository on GitHub, at the commit this page was made from: the board is kicad/OM-64DO.kicad_pcb and its schematic kicad/OM-64DO.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
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).

OpenModbus/OM-16LED
A compact industrial-grade 16-channel Modbus RTU LED driver.

google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards


anshchawla521/DIY_T12_iron
This repository conatins all the files for the DIY soldering iron which is compatible with hakko 936 style station and is meant to be used as the replacement PCB for HAKKO 936 style clones.


Celnardur/rfc_tackle_sensor
Open a git bash terminal in the directory of your choosing and call the following command:


qsbird/smart-apo
Smart Apo and underwater sensor Rev.A engineering prototype