Skip to the content
PCBKitNew board
2 layers163 × 72 mmOM-64DO, the printed circuit board in 3D

A compact industrial-grade 64-channel Modbus RTU output module.

Size
163 × 72 mm
Copper layers
2
Thickness
1.6 mm
Parts
231
Nets
303
Pads
1,016
Tracks, vias
1,801, 536
Pours
9
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
7 Dec 2025
Updated
6 Apr 2026

Overview

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.

Main components

8

README

README.md

Open Modbus OM-64DO

Modbus RTU MCU STM32G031 64 Channel Outputs Input Voltage 7-28V DC Load Voltage Up to 48V DC DIN-Rail UM72S Profile License GNU GPL v3

PCB Render

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.

Exploded PCB Render

1. Product Overview

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.

📦 Hardware Files

The full schematic and BOM are available at:

Check the latest release for more!

2. Key Features

  • 64 open-collector low-side outputs
  • Up to 500 mA per output, 2 A max per driver package
  • 5–48 VDC recommended load voltage (50 V absolute maximum)
  • Wide supply input: 7–28 VDC
  • RS-485 Modbus RTU communication (THVD1450 transceiver)
  • Fully configurable serial parameters
  • Per-channel LED indicators
  • DEGSON 15EDG pluggable screw terminals
  • DIN-rail mount using UM72S profile
  • Compact PCB (163 × 72 mm)

3. Applications

Ideal for:

  • PLC expansion
  • Building automation
  • Access control
  • Alarm and signaling systems
  • Relay switching
  • Industrial prototyping

4. Hardware Architecture

Microcontroller

The STM32G031F8P6 MCU handles Modbus RTU processing, configuration storage, SPI communication, and output refresh logic.

I/O Expanders

Four MCP23S17 SPI-based expanders provide the 64 output control signals in groups of 16.

Output Drivers

The TBD62083 Darlington arrays switch the actual loads.
Their key characteristics include:

  • 8 channels per IC
  • 500 mA per channel
  • 2 A total per IC
  • Integrated flyback diodes
  • LED indication per channel

RS-485 Communication

A robust THVD1450 transceiver provides differential RS-485 communication with:

  • Fail-safe features
  • High ESD immunity
  • Suitable for long cable runs

Power

The board accepts 7–28 VDC and includes a high-efficiency R-78E3.3-0.5 regulator for its 3.3 V logic domain.

5. Electrical Specifications

Supply

  • 7–28 VDC input
  • Internal regulated 3.3 V logic
  • Low power MCU operation

Outputs

  • 64 open-collector low-side channels
  • 5–48 VDC recommended load
  • 50 VDC absolute maximum
  • 500 mA max per output
  • 2 A max per driver IC
  • Built-in flyback protection
  • LED indicator on each output

Communication

  • RS-485, 2-wire
  • Modbus RTU protocol
  • Default settings: 9600 baud, 8N1, address 1
  • All communication parameters can be reconfigured via holding registers

6. Mechanical Information

  • PCB: 163 × 72 mm
  • DIN-rail enclosure compatibility: UM72S profile
  • DEGSON 15EDG pluggable screw terminals
  • Mounting suitable for industrial control cabinets

7. Functional Overview

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.

8. Modbus Interface

Supported Function Codes

  • 0x01 — Read Coils
  • 0x05 — Write Single Coil
  • 0x0F — Write Multiple Coils
  • 0x03 — Read Holding Registers
  • 0x06 — Write Single Register
  • 0x10 — Write Multiple Registers

Coils (Outputs 1–64)

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

Holding Registers

Configuration registers start at 0x00 and are stored in non-volatile memory.

Register Address (Hex)NameDescriptionAllowed ValuesDefault
0 (0x00)Slave AddressModbus device ID1–2471
1 (0x01)Baud Rate CodeSerial speed selector: 0=1200, 1=2400, 2=4800, 3=9600, 4=19200, 5=38400, 6=57600, 7=115200, 8=230400, 9=460800, 10=9216000–103
2 (0x02)ParityCommunication parity0=None, 1=Even, 2=Odd0
3 (0x03)Data BitsSerial data width5–9 (typ. 8)8
4 (0x04)Stop BitsSerial stop bits1–21

Example Modbus Commands

Below are typical Modbus RTU frames for controlling and configuring the OM-64DO.

Turn ON Output 1

Function: Write Single Coil (0x05)
Coil address: 0x0000
Value: ON → 0xFF00
Frame: 01 05 00 00 FF 00 8C 3A

Turn ON Outputs 5–12

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

Turn ON All Outputs (1–64)

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

Turn OFF All Outputs

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

Read All Outputs

Function: Read Coils (0x01)
Start address: 0x0000
Quantity: 0x0040
Frame: 01 01 00 00 00 40 3D FA

Set Device Address

Function: Write Single Register (0x06)
Register: 0x0000 (Slave Address)
Value: 0x0005
Frame: 01 06 00 00 00 05 49 C9

Set Baud Rate

Function: Write Single Register (0x06)
Register: 0x0001 (Baud Rate Code)
Value: 0x0007 → 115200 baud
Frame: 01 06 00 01 00 07 99 C8

9. Wiring

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:

  • Bank A → 12 V devices
  • Bank B → 24 V relays
  • Bank C → 48 V solenoids
  • Bank D → 5 V indicators

Low-Side Output Principle

Each output contains a protected Darlington transistor that sinks current:

text
Load +V  ─────── Load ─────── OUTx (SINK)
                                    │
                                    └── GND (OM-64DO)

Recommended Wiring Steps

  • Connect the load voltage (5–48 VDC) to the Vx terminal of the bank.
  • Connect the output pin (OUTx) to the negative side of the load.
  • Tie power supply GND to OM-64DO GND.
  • Ensure the supply can support the total current of that bank.

⚠️ 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.

Wiring Example

The example below shows how to drive 24 V and 12 V relays at the same time using separate banks.

  • Bank A (VA) → 24 V relays
  • Bank B (VB) → 12 V relays
  • Both supplies share a common ground
  • Loads return their negative side to the selected OUTx channel
Wiring example

This wiring approach can be extended to all four banks, each with its own voltage.

10. Safety Notes

  • Do not exceed 50 VDC load voltage
  • Ensure load currents stay within limits
  • For inductive loads, external suppression can further improve reliability
  • Maintain proper RS-485 termination and shielding

11. Contact & Support

For questions, feedback, or technical assistance regarding the Open Modbus OM-64DO, the following support channels are available:

📧 Email Support

For general inquiries, firmware questions, or troubleshooting: contact@sszczep.dev

🛠 GitHub Repository

Issue tracker, source code, hardware design files, and community contributions: https://github.com/OpenModbus/OM-64DO

💬 Open Modbus Discussions

Share projects, ask for help, or suggest features: https://github.com/orgs/OpenModbus/discussions

📝 Bug Reports & Feature Requests

Submit issues directly via GitHub Issues: https://github.com/OpenModbus/OM-64DO/issues

Parts

231
QtyValueFootprintReferences
65REDLED_SMD:LED_0603_1608MetricD102, D201, D202, D203, D204, D205, D206, D207, D208, D209, D210, D211, D212, D213, D214, D215 +49
643K3Resistor_SMD:R_0603_1608MetricR201, R202, R203, R204, R205, R206, R207, R208, R209, R210, R211, R212, R213, R214, R215, R216 +48
190.1uCapacitor_SMD:C_0603_1608MetricC103, C105, C106, C201, C204, C206, C208, C301, C304, C306, C308, C401, C404, C406, C408, C501 +3
8100KProject_Library:R_Array_Convex_8x0602_EXB2HVRN202, RN204, RN302, RN304, RN402, RN404, RN502, RN504
81uCapacitor_SMD:C_0603_1608MetricC205, C207, C305, C307, C405, C407, C505, C507
847RProject_Library:R_Array_Convex_8x0602_EXB2HVRN201, RN203, RN301, RN303, RN401, RN403, RN501, RN503
8TBD62083AFNGPackage_SO:SSOP-18_4.4x6.5mm_P0.65mmU201, U203, U301, U303, U401, U403, U501, U503
610KResistor_SMD:R_0603_1608MetricR101, R102, R217, R317, R417, R517
52.2uCapacitor_SMD:C_0603_1608MetricC104, C203, C303, C403, C503
4100uCapacitor_SMD:CP_Elec_8x10C202, C302, C402, C502
415EDGVC-3.5-20PProject_Library:TerminalBlock_DEGSON_15EDGVC-3.5-20P_No_SilkScreenJ201, J301, J401, J501
433Resistor_SMD:R_0603_1608MetricR218, R318, R418, R518
4MCP23S17T-E/SSPackage_SO:SSOP-28_5.3x10.2mm_P0.65mmU202, U302, U402, U502
4SMBJ45ADiode_SMD:D_SMBD217, D317, D417, D517
210uCapacitor_SMD:C_1206_3216MetricC101, C102
10.5AFuse:Fuse_1206_3216MetricF101
102x03 1.27Connector_PinHeader_1.27mm:PinHeader_2x03_P1.27mm_VerticalJ102
115EDGVC-3.5-4PProject_Library:TerminalBlock_DEGSON_15EDGVC-3.5-4P_No_SilkScreenJ101
1470Resistor_SMD:R_0603_1608MetricR103
1CD123D-B140LRDiode_SMD:D_SOD-123D103
1CSTestPoint:TestPoint_Pad_D1.0mmTP104
1DIRTestPoint:TestPoint_Pad_D1.0mmTP107
1LOGOProject_Library:OpenModbusG***
1MISOTestPoint:TestPoint_Pad_D1.0mmTP102
1MOSITestPoint:TestPoint_Pad_D1.0mmTP101
1R-78E3.3-0.5Converter_DCDC:Converter_DCDC_RECOM_R-78E-0.5_THTU101
1RXTestPoint:TestPoint_Pad_D1.0mmTP106
1SCKTestPoint:TestPoint_Pad_D1.0mmTP103
1SM712-02HTGPackage_TO_SOT_SMD:SOT-23D101
1SMAJ28ADiode_SMD:D_SMAD104
1STM32G031F8P6Package_SO:TSSOP-20_4.4x6.5mm_P0.65mmU103
1THVD1450DRBRPackage_SON:VSON-8-1EP_3x3mm_P0.65mm_EP1.6x2.4mmU102
1TXTestPoint:TestPoint_Pad_D1.0mmTP105

Questions

How big is the OM-64DO PCB?

It measures 163 × 72 mm and has 2 copper layers, 1.6 mm thick.

What parts does the OM-64DO use?

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.

Where can I download the OM-64DO KiCad files?

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.

Can I use the OM-64DO 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).

Similar boards

  • 2 layers100 × 72 mmOM-16LED, the printed circuit board in 3D

    OM-16LED

    OpenModbus/OM-16LED

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

    100 parts3GPL-3.0
  • 2 layers98 × 71 mmMozc dial, the printed circuit board in 3D

    Mozc dial

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    112 parts3kApache-2.0
  • 2 layers189 × 92.3 mmThe Macruwu 2.0, the printed circuit board in 3D

    The Macruwu 2.0

    SirBramble/The-Macruwu-2.0

    The Macro universal word-typing unit

    91 parts1
  • 2 layers97 × 67 mmSoldering iron 936A + t12 compatible, the printed circuit board in 3D

    Soldering iron 936A + t12 compatible

    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.

    103 parts
  • 2 layers149.6 × 65 mmSolar, the printed circuit board in 3D

    Solar

    DinosaurPotato534/Project-Albatross

    birb

    201 parts
  • 4 layers47 × 59.7 mmTackle sensor hardware, the printed circuit board in 3D

    Tackle sensor hardware

    Celnardur/rfc_tackle_sensor

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

    79 parts3MIT
  • 2 layers14.4 × 24.9 mmHvoltmeter, the printed circuit board in 3D

    Hvoltmeter

    Maniak003/HV-voltmeter

    High voltage (to 3kV) voltmeter

    35 parts3
  • 4 layers12 × 35 mmSmart apo common revA2, the printed circuit board in 3D

    Smart apo common revA2

    qsbird/smart-apo

    Smart Apo and underwater sensor Rev.A engineering prototype

    43 partsWTFPL