Skip to the content
2 layers110 × 46 mmInput board, the printed circuit board in 3D

Universal 16-channel analog marine gateway for boats with legacy VDO sensors. Connects analog instruments to MQTT and Signal K without sensor replacement. ESP32-based, open source, modular mini-board system.

Size
110 × 46 mm
Copper layers
2
Thickness
1.6 mm
Parts
70
Nets
52
Pads
184
Tracks, vias
254, 15
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
19 May 2026
Updated
24 Oct 2026

Overview

Input board is an open-source printed circuit board by bigbrainlabs, from the bigbrainlabs/BoatOpenIO repository on GitHub. It is a 2-layer board of 110 × 46 mm with 70 parts on 52 nets, routed with 254 tracks and 15 vias.

Its parts include 32 resistors, 16 diodes and 1 connector. It belongs with the sensors and measurement and home automation and IoT boards and the ESP32 boards of this library.

README

README.md

BoatOpenIO

GitHub Sponsors Patreon

Universal Marine IO System – Open Source, modular, fully configurable

"Plug in, configure, done."

BoatOpenIO is an open hardware platform for sensor integration on boats. Each of the 16 sensor terminals can be freely assigned to any of the up to 16 input channels via software. Pluggable mini-boards handle signal conditioning — no soldering, no rewiring.

Part of the Logbook Without Posing series – Volume 3.


📚 Support the project

This project is 100% open source and free. The complete story – every idea, mistake, detour and solution – is documented in the book series "Logbook Without Posing".

If you find this project useful and want to support it: buying the books is the best way.

"Found this useful? Grab a book — or the whole series. You'll be supporting further development."

👉 Logbook Without Posing on Amazon

Note: The ready-made board set is no longer sold on Tindie. Due to the new EU regulation on shipping abroad, the effort is no longer proportionate for me as a private individual. The Gerber files in this repo remain free to download.

The boards can be purchased directly from PCBWay — I've set them up there as projects, so there's nothing to upload yourself: 👉 BoatOpenIO projects on PCBWay

🏭 Boards sponsored by PCBWay

PCBWay

PCBWay sponsors the board manufacturing for BoatOpenIO, the sensor gateway of this ecosystem — thank you!

👉 Order the boards directly: PCBWay project page


⚠️ Safety Warning

Always verify which mini-board is plugged into which channel before applying power.

Connecting 12V directly to a pull-up channel (instead of through a voltage divider) will destroy the MUX, all ADS1115 and the ESP32 through I2C chain reaction.

The input board includes protection circuitry (3.3V) on all 16 signal inputs — but correct mini-board assignment is still essential.


Concept

Commercial marine IO systems cost hundreds of euros and are closed black boxes.

BoatOpenIO costs a fraction of that — and anyone can adapt, extend, and improve it.

text
Sensor → Mini-Board → JST 3-Pin → PCB → Zener Protection → MUX → ADS1115 → ESP32 → MQTT → BoatOS

Who Is This For?

If your boat was built before 2000, this project was built for you.

Boats from that era came with analog VDO sensors — oil pressure, oil temperature, coolant temperature, tank level, RPM. These sensors are robust, time-tested, and still doing their job perfectly. The problem: no modern system speaks their language.

NMEA 2000 gateways that bridge analog signals to modern boat networks exist — but they cost 300–500€, are closed proprietary boxes, and give you zero insight or control over what happens inside.

BoatOpenIO is an open analog marine gateway.

Plug in your existing VDO sensors. Get clean MQTT output. Forward to Signal K or BoatOS. Done — without replacing a single sensor, without rewiring, without a black box.

text
VDO sensor → BoatOpenIO → MQTT → Signal K / BoatOS → modern dashboard

Built for boats built before 2000 that will sail for another 20 years — and deserve a modern dashboard without a full refit.


Hardware – v2 PCB

Four separate boards, connected via IDC ribbon cables: input board, main board, ESP32 adapter board, and VCC distributor. Gerber files ready to order in hardware/v2/*/gerber/.

The bare v2 board set: input board, main board, ESP32 adapter board and VCC distributor

🛒 Ordering the boards: All four boards are set up as projects on PCBWay and can be purchased there directly: PCBWay project page — or upload the Gerbers to a PCB fab of your choice. Bare PCBs, components per the parts list below.

text
Input Board ──20-pin ribbon──> Main Board <──16-pin ribbon── ESP32 Adapter Board
                                    │
                               3-pin JST
                                    │
                               VCC Board

Populated and wired v2 assembly with breakouts and ribbon cables

Main Board Components

ComponentDescriptionSocketed
ESP32-DEVKITC-32D-F (38-pin)Microcontroller, WiFi, I2C, MUX control – on its own adapter board✅
CD74HC4067 Breakout16:1 analog multiplexer✅
ADS1115 Breakout (1×)16-bit ADC✅
MPU6050 Breakout (GY-521)6-DOF IMU, tilt/impact detection✅
AMS1117-3.3 Breakout5V → 3.3V regulator✅

Everything socketed — no component soldered directly. Faulty ESP32? Swap the adapter board. Done.

The ESP32 sits on its own dedicated adapter board. The first adapter board is designed for the 38-pin ESP32 DevKitC-32D — swappable and ready for future ESP32 variants.

Protection Circuit (Input Board)

Every one of the 16 signal inputs has a hardware protection circuit, directly on the input board:

text
Sensor → Screw terminal → R_Pack08 (resistor network) → SP0503BAHTG (Zener array, 3.3V) → MUX signal

2× Bourns 4116R-1-102LF (R_Pack08, DIL-16, isolated) + 6× SP0503BAHTG (SOT-143, 3 channels each).

⚠️ Pull-up voltage is 3.3V — the ADS1115 VDD is at 3.3V; higher voltages on the inputs risk component damage.

Running without the protection circuit (not recommended)

If the Bourns or Zener components are unavailable and you want to get the board running first, the resistor networks can be bypassed — but understand what you are giving up.

How to bypass the Bourns 4116R-1-102LF:
The DIL-16 package contains 8 isolated resistors. Each resistor connects a pin on the left row to the opposing pin on the right row:

text
Pin 1  ──[R]──  Pin 16
Pin 2  ──[R]──  Pin 15
Pin 3  ──[R]──  Pin 14
  ...             ...
Pin 8  ──[R]──  Pin 9

To bypass: solder a short jumper wire across each pair (8 bridges per chip, 16 total for both R_Pack08). The signal then passes through without series resistance. The SP0503BAHTG Zener pads can simply be left empty.

🔴 Without this protection, all 16 inputs are exposed. A wrong mini-board, a wiring mistake, or any brief overvoltage can destroy the MUX, ADS1115, and ESP32 in a chain reaction — all three at once. Only bypass for bench tests with known, clean signals. Fit the real parts before installing on the boat.

Input Board – Connectors

text
16× screw terminal 5.08mm   → raw sensor signal
20-pin IDC header            → connection to main board (SIG1–16 + GND)

VCC Board – Connectors

The VCC board distributes power to the mini-boards via JST connectors. It connects to the main board via a 3-pin JST cable (5V, 3.3V, GND).

text
7× JST 2-pin (3.3V)         → VCC rail for passive/ESP01 mini-boards
3× JST 2-pin (5V)           → VCC rail for Arduino Nano mini-boards
3-pin JST                   → connection to main board (5V · 3.3V · GND)

I2C Address

Only 1× ADS1115 fitted (the MUX routes all 16 channels onto a single signal line) → fixed address 0x48.

GPIO Assignment (ESP32, via 16-pin main board ↔ adapter board connector)

GPIOFunction
GPIO21I2C SDA
GPIO22I2C SCL
GPIO14MUX S0
GPIO27MUX S1
GPIO26MUX S2
GPIO25MUX S3
GPIO4 / 5 / 13 / 16 / 17 / 18 / 19 / 23OUT1–OUT8 (prepared for output channels)

Output Channels (prepared)

The main board already has a 10-pin header prepared for 8 signal output channels (+5V/GND) — e.g. for heaters, pumps, horns via relay or MOSFET mini-boards. Works on the same plug-in principle as the inputs.

Compatible ESP32 Modules (first adapter board)

The footprint fits all modules in the 38-pin DevKitC layout: ESP32-WROOM-32 / -32D / -32E / -32U / -32UE, as well as ESP32-SOLO-1.

⚠️ ESP32-WROVER is NOT compatible — GPIO16/17 are internally reserved for PSRAM on WROVER and therefore blocked for output channels.


Mini-Boards (pluggable)

TypeCodeUse case
Voltage dividerVT12V VDO sensors → 3.3V
Pull-downPDDigital sensors, switches
Pull-upPUOpen-collector outputs
Schmitt triggerSTMagnetic pickup sensors, 50Hz generators
Pulse boardISPRPM, flow (Arduino Nano / ESP01)
OptocouplerOPTGalvanic isolation (W-terminal RPM)
Direct / jumperDIR3.3V signals directly
GND collectorGNDMultiple sensor ground loops → single reference

MotorCombo — everything on one board

The MotorCombo taps the most common engine sensors directly, so you don't have to plug in six separate mini-boards:

ChannelConditioning
Battery 1 + 2Voltage divider
Oil pressurePull-up
TemperaturePull-up
TankPull-up
RPMOptocoupler + ESP-01

MotorCombo THT — through-hole, hand-solderable. Gerbers and documentation are in the repo. Resistor values are deliberately left open so everyone can fit what matches their own VDO senders — which is also why there is no pre-assembled SMD variant: with the values depending on the senders, a fixed pre-populated board makes no sense.

Design and submit your own mini-boards — pull requests welcome!


Multiplexer Logic

The CD74HC4067 routes one of 16 inputs onto the shared ADS pin A0 via a 4-bit address (S3–S0). Address and chip input follow the datasheet: 0000 → C0 … 1111 → C15.

Rev.1 note — channels are mirrored in software. On the Rev.1 board the channel wiring is reversed (terminal 1 sits on the input that address 1111 selects, terminal 16 on 0000). The firmware compensates in software (MUX_MIRROR): terminal N → address 16 − N. The terminal numbering you see is therefore correct. A later board revision straightens the wiring, then the mirror is switched off (MUX_MIRROR 0).

TerminalAddress S3 S2 S1 S0CD74HC4067 input
11111C15
21110C14
………
160000C0

Software Configuration

json
{
  "kanaele": [
    {"klemme": 1, "sensor": "battery1",     "einheit": "V",   "faktor": 4.7, "offset": 0, "aktiv": true,  "topic": ""},
    {"klemme": 2, "sensor": "oil_temp",     "einheit": "°C",  "faktor": 1.0, "offset": 0, "aktiv": true,  "topic": "vessels/self/propulsion/engine/oilTemperature"},
    {"klemme": 3, "sensor": "oil_pressure", "einheit": "bar", "faktor": 1.0, "offset": 0, "aktiv": true,  "topic": "vessels/self/propulsion/engine/oilPressure"},
    {"klemme": 4, "sensor": "tank",         "einheit": "%",   "faktor": 1.0, "offset": 0, "aktiv": true,  "topic": ""},
    {"klemme": 5, "sensor": "rpm",          "einheit": "rpm", "faktor": 1.0, "offset": 0, "aktiv": false, "topic": ""}
  ]
}

All 16 channels are routed via the MUX (CD74HC4067) to a single ADS1115 @ 0x48 on pin A0. No ads or pin fields needed — the channel number (klemme) maps directly to the MUX select lines.

topic — optional. If empty (""), the firmware publishes to boat/io/<sensor> (default). Set a custom topic for Signal K compatibility or any other MQTT schema. The "SK" button in the web UI auto-fills the correct Signal K path for common sensor names.


MQTT Topics

text
boat/io/battery1          → 12.43
boat/io/oil_temp          → 87
boat/io/oil_pressure      → 3.2
boat/io/tank              → 48
boat/io/rpm               → 1450
boat/io/pitch             → 1.2        (configurable)
boat/io/roll              → -0.5       (configurable)
boat/alarm/impact_g       → 2.40       (impact base configurable)
boat/alarm/impact_severity → KRITISCH  (LEICHT / MITTEL / STARK / KRITISCH)
boat/alarm/impact_active  → true
boatopenio/status         → online

Channel topics are set per channel (topic field / web UI). Pitch, roll and the impact base topic are editable under WiFi & MQTT in the web UI (defaults boat/io/pitch, boat/io/roll, boat/alarm/impact; the impact base gets _g / _severity / _active appended). In test mode the impact alarms are redirected to boat/test/alarm/impact_* so demo impacts never trigger real dashboards.


Firmware Features

FeatureDescription
Web UIConfiguration at 192.168.4.1, bilingual DE/EN
WiFiManagerAP on first start for WiFi setup
MQTTPublish all sensor values, LWT, auth support
OTAOver-the-air firmware updates
mDNSReachable as boatopenio.local
Impact DetectionMPU6050 G-force monitoring with severity levels
WatchdogAutomatic restart on firmware hang
LittleFSPersistent configuration storage

Supported Sensors

SensorTypeMini-Board
VDO temperature (NTC)ResistanceVT
VDO oil pressureLinear resistanceVT
VDO tank senderPotentiometerVT
Battery voltage 12VVoltage dividerVT (10k/2.2k)
RPM (W-terminal)Pulse/ACOPT + ISP
RPM (magnetic pickup)AC signalST + ISP
Fuel flowPulseISP
Bilge sensorDigitalPD
Door/hatch contactDigitalPD
DS18B20 temperatureDigital 1-Wirecustom board

Bill of Materials – PCB Kit

👉 Complete parts list on Amazon

Note: Items 7, 8, 13, and 14 are from the same set — one purchase covers all. Same applies to 12 and 15.

#ComponentNotesSource
1ESP32 DevKitC-32D (38-pin)Main controllerAmazon
2CD74HC4067 Breakout16:1 MUXAmazon
3ADS1115 Breakout (1×)16-bit ADCAmazon
4MPU6050 Breakout (GY-521)IMUAmazon
5AMS1117-3.3 BreakoutVoltage regulatorAmazon
6Female header assortmentSockets for all breakoutsAmazon
7Pin header 2×10 (20-pin)Main board ↔ input boardAmazon
8Pin header 2×08 (16-pin)Main board ↔ ESP32 adapter boardAmazon
9Screw terminals 5.08mm16× sensor inputsAmazon
10Bourns 4116R-1-102LF (2×)Resistor network DIL-16ConradAmazon
11SP0503BAHTG (6×)Zener array SOT-143Amazon
12JST 2-pin connectorVCC railsAmazon
13Pin header 2×10 (20-pin)Input board sideAmazon
14Pin header 2×08 (16-pin)ESP32 adapter board sideAmazon
15JST 2-pin connector (10×)VCC distributionAmazon
16Ribbon cable + IDC 20-pinMain board ↔ input boardAmazon
17Ribbon cable + IDC 16-pinMain board ↔ ESP32 adapter boardAmazon
18Pin socket 2×05 (10-pin)SIG-OUT prep on main board—
19JST 3-pin connectorVCC board ↔ main boardAmazon
20PCB set (4 boards)Order the Gerbers in hardware/v2/ yourselfPCBWay

Amazon: faster delivery. AliExpress links to follow.

Item 10 comes from Conrad, not Amazon: the same Bourns part is around €1.30 there versus roughly €10. For the 2 pieces needed that saves nearly €18. The Amazon link beside it is just the fallback source.

Item 20 is the bare boards only. Items 1–19 are the components you still need.


Directory Structure

text
BoatOpenIO/
├── README.md                          ← English (this file)
├── README_de.md                       ← German version
├── LICENSE                            ← GPL-3.0
├── boatopenio_final_architektur.svg   ← system architecture diagram
├── firmware_src/
│   ├── firmware_src.ino               ← main firmware
│   ├── webui.h                        ← web UI & captive portal
│   └── data/
│       └── config.json                ← default channel config
├── hardware/
│   ├── boatopenio-gehaeuse-draufsicht.svg  ← housing top-view
│   ├── mini-boards/                   ← mini-board designs
│   └── v2/                            ← KiCad PCB project (4 boards)
│       ├── main-board/
│       │   └── gerber/main-board.zip
│       ├── input-board/
│       │   └── gerber/input-board.zip
│       ├── esp32-adapter-board/
│       │   └── gerber/esp32-adapter-board.zip
│       └── vcc-board/
│           └── gerber/vcc-board.zip
├── images/                            ← build photos
└── docs/

Roadmap

What's done, what's planned, what's on the backlog — see ROADMAP.md.


Integration with BoatOS

BoatOpenIO sends all values via MQTT. BoatOS auto-discovers all topics and displays them in the dashboard. No manual configuration needed.

➡️ github.com/bigbrainlabs/BoatOS


License

GNU General Public License v3.0 (GPL-3.0)

Free to use, modify, distribute — derivative works must also be GPL-3.0. See LICENSE.

Exception: the community enclosure designs in hardware/enclosures/ are licensed CC BY-SA 4.0 — the better fit for CAD work. Submitting a design means licensing it that way; see the enclosure README.


Part of the Series

Logbook Without Posing — authentic DIY projects around boating.

"Build it yourself and you know what's in it — and what it cost."

📖 Book series on Amazon · 🔧 BoatOS · ⚡ BoatOpenIO

Parts

70
QtyValueFootprintReferences
161MResistor_SMD:R_0805_2012MetricR17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31, R32
161kResistor_SMD:R_0805_2012MetricR1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16
16Conn_01x03_PinConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalCH01, CH02, CH03, CH04, CH05, CH06, CH07, CH08, CH09, CH10, CH11, CH12, CH13, CH14, CH15, CH16
16D_ZenerPCM_Diode_SMD_AKL:D_SOD-123_ZenerD1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3B11, B12, B13, B14
1Conn_02x10_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_VerticalB_SIGIN
1Screw_Terminal_01x16TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-3-16-5.08_1x16_P5.08mm_HorizontalJ27

More from bigbrainlabs/BoatOpenIO

6
  • 2 layers171.5 × 185.5 mmBoardopenio, the printed circuit board in 3D

    Boardopenio

    bigbrainlabs/BoatOpenIO

    Universal 16-channel analog marine gateway for boats with legacy VDO sensors. Connects analog instruments to MQTT and Signal K without sensor replacement. ESP32-based, open source, modular mini-board system.

    68 parts13
  • 2 layers113.8 × 145.1 mmBoatOpenIO v2, the printed circuit board in 3D

    BoatOpenIO v2

    bigbrainlabs/BoatOpenIO

    Universal 16-channel analog marine gateway for boats with legacy VDO sensors. Connects analog instruments to MQTT and Signal K without sensor replacement. ESP32-based, open source, modular mini-board system.

    65 parts13
  • 2 layers95 × 55 mmMotorCombo THT, the printed circuit board in 3D

    MotorCombo THT

    bigbrainlabs/BoatOpenIO

    Universal 16-channel analog marine gateway for boats with legacy VDO sensors. Connects analog instruments to MQTT and Signal K without sensor replacement. ESP32-based, open source, modular mini-board system.

    44 parts13
  • 2 layers90 × 60 mmBoatOpenIO, the printed circuit board in 3D

    BoatOpenIO

    bigbrainlabs/BoatOpenIO

    Universal 16-channel analog marine gateway for boats with legacy VDO sensors. Connects analog instruments to MQTT and Signal K without sensor replacement. ESP32-based, open source, modular mini-board system.

    15 parts13
  • 2 layers20 × 80 mmVcc board, the printed circuit board in 3D

    Vcc board

    bigbrainlabs/BoatOpenIO

    Universal 16-channel analog marine gateway for boats with legacy VDO sensors. Connects analog instruments to MQTT and Signal K without sensor replacement. ESP32-based, open source, modular mini-board system.

    13 parts13
  • 2 layers80 × 30 mmEsp32-adapter board, the printed circuit board in 3D

    Esp32-adapter board

    bigbrainlabs/BoatOpenIO

    Universal 16-channel analog marine gateway for boats with legacy VDO sensors. Connects analog instruments to MQTT and Signal K without sensor replacement. ESP32-based, open source, modular mini-board system.

    6 parts13

Similar boards

  • 2 layers61.8 × 73.2 mmBrain board STM32F407, the printed circuit board in 3D

    Brain board STM32F407

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    70 parts1.2k
  • 2 layers47.3 × 52.8 mmFinalv1, the printed circuit board in 3D

    Finalv1

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    70 parts915
  • 2 layers74.3 × 52.8 mmBq3060, the printed circuit board in 3D

    Bq3060

    iam4722202468/ThinkpadBattery

    Open source Thinkpad T420 battery design

    70 parts304MIT
  • 2 layers141 × 88 mmErgoSNM Keyboard Right Prototype 1, the printed circuit board in 3D

    ErgoSNM Keyboard Right Prototype 1

    siderakb/ergo-snm-keyboard

    ErgoSNM is a split ergonomic keyboard integrated with trackball, wireless is in beta

    70 parts172CERN-OHL-P-2.0
  • 2 layers90 × 100 mmAlu, the printed circuit board in 3D

    Alu

    imihajlow/ccpu

    A 8-bit computer made of 74xx series logic gates and memory ICs.

    70 parts145
  • 2 layers90 × 140 mmDrumkid, the printed circuit board in 3D

    Drumkid

    mattybrad/drumkid

    Version 4 was the first successful working design, with full code, schematics, Gerbers, etc available on GitHub.

    70 parts137
  • 2 layers152.5 × 117.5 mmKeytartouch, the printed circuit board in 3D

    Keytartouch

    cnlohr/cnhardware

    My dumping grounds for all my kicad projects and random hardware bringup.

    70 parts114

Questions

How big is the Input board PCB?

It measures 110 × 46 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Input board use?

70 parts. 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 Input board KiCad files?

From the bigbrainlabs/BoatOpenIO repository on GitHub, at the commit this page was made from: the board is hardware/v2/input-board/input-board.kicad_pcb and its schematic hardware/mini-boards/MotorCombo_THT/MotorCombo_THT.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Input board design in my own project?

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