Skip to the content
PCBKitNew board
2 layers134.6 × 91.4 mmBoathub, the printed circuit board in 3D

A BoatHub remote sailboat monitor based on ESP32 DevKit microcontroller hardware and KiCad board layout

Size
134.6 × 91.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
58
Nets
74
Pads
192
Tracks, vias
248, 18
Pours
6
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
20 Sep 2026
Updated
25 Oct 2026

Overview

Boathub is an open-source printed circuit board by behringer24, from the behringer24/boathub repository on GitHub. It is a 2-layer board of 134.6 × 91.4 mm with 58 parts on 74 nets, routed with 248 tracks and 18 vias.

It is built around the R-78K5.0-1.0, 1.5KE20A and BC337. Its parts include 22 resistors, 13 connectors, 12 capacitors, 3 diodes and 2 ICs. It belongs with the home automation and IoT boards and the ESP32 boards of this library.

Main components

3

README

README.md

ESP32 BoatHub

Boat monitoring, SeaTalk1 gateway, track logger and NMEA2000 groundwork, built around an ESP32-S3 N16R8.

A permanently powered ESP32 system monitors the boat in the marina, provides its own on-board Wi-Fi, pushes measurements over an outbound TLS connection to a self-hosted Docker server, and is later extended into a gateway for SeaTalk1, autopilot control, track logging and NMEA2000.

Based on the project guide v0.1 of 2026-09-13 (PDF, German).

What it does, in the order it is built

Scope
v1Base monitoring: temperatures, humidity, air pressure, battery, optional bilge level, on-board Wi-Fi, marina Wi-Fi, server uplink
v2Read SeaTalk1: log, depth, compass, GPS, autopilot status
v2.5Store GPS tracks locally and sync them as a digital logbook
v2BWrite SeaTalk1: local autopilot control - only after RX runs reliably
v3NMEA2000 over TWAI/CAN
v4Android tablet or phone running OpenCPN as a plotter

Software scope in detail: docs/ROADMAP.md. Build order: docs/design/README.md.

Architecture (target)

text
Sensors (1-Wire / I2C / 4-20 mA)
        |
     ESP32-S3 N16R8  ──SoftAP──>  BOOT-NETZ (Pixel, tablet, OpenCPN)
        |   |
        |   └──STA──> marina Wi-Fi ──TLS──> self-hosted Docker server
        |                                     ├── Mosquitto (MQTT)
   SeaTalk1 (stage 2)                         ├── Backend/API
   NMEA2000 (stage 3)                         ├── PostgreSQL + PostGIS
                                              └── Grafana / web dashboard

The ESP opens the internet connection outbound. No inbound ports are needed in the marina network, and the board does not route between its two networks - BOOT-NETZ reaches the board, not the internet.

The two networks share one radio. In AP+STA mode the SoftAP is forced onto whatever channel the station connects to, so when the marina access point changes channel - many do so automatically - every device on BOOT-NETZ is disconnected. This is normal behaviour, not a fault: clients have to tolerate reconnects, and no local UI may treat a dropped socket as anything unusual.

Hardware at a glance

  • Controller: 1 x ESP32-S3 N16R8 DevKitC-1 (third-party module). It sits on the bundled screw-terminal carrier for the bench build and in a socket on the main board once installed - A-001, B-002. Ships with an onboard PCB antenna; the bundled external antenna needs a solder rework to activate
  • Temperature: 3 x DS18B20 (engine bay, bilge water, fridge), each on its own 1-Wire GPIO
  • Cabin climate: SHT31-D (I2C, address 0x44)
  • Barometer and battery bay: BME680 (I2C, address 0x76) on a short cable in the battery bay - air pressure for the weather trend, and the bay's air temperature and humidity. Its gas heater stays off - A-010
  • Analog: 2 x ADS1115 on the shared I2C bus, 0x48 and 0x49. The second is socketed and may stay empty until its channels are specified
  • Attitude and motion: LSM6DSOX IMU on the I2C bus at 0x6A, with its interrupt on GPIO2 - heel and pitch under sail, impacts at the berth
  • Battery: 100 kΩ / 10 kΩ divider (factor 11.0) into ADS1115 A0, tapped upstream of the reverse-polarity diode, calibrated against a multimeter
  • Bilge level (optional): hydrostatic 0-1 m probe, 4-20 mA, 100 Ω burden into ADS1115 A1
  • Power: 12 V house supply → 2 A fuse → TVS 1.5KE20A → 1N5822 → DC/DC 9-36 V to 5 V

The TVS sits ahead of the Schottky diode, and the battery tap ahead of both - see docs/design/B-001-power-supply.md for why the order matters.

Full parts list with prices and sources: docs/MATERIAL.md

Pin assignment

GPIOFunction todayLater / note
2IMU interruptimpact detection, A-009
4DS18B20 engine baydedicated 1-Wire bus
5DS18B20 bilge waterdedicated 1-Wire bus
6DS18B20 fridgededicated 1-Wire bus
7spareoptional water tank DS18B20
8I2C SDASHT31, BME680, both ADS1115, IMU
9I2C SCLSHT31, BME680, both ADS1115, IMU
15reservedSeaTalk RX (stage 2)
16reservedSeaTalk TX (stage 2)
17reservedTWAI TX (stage 3)
18reservedTWAI RX (stage 3)
21spareoptional local buzzer - through a transistor, 20-30 mA exceeds the GPIO limit
43/44debug UARTkeep free for servicing
48onboard WS2812 RGB LEDDevKit-internal, confirmed on the delivered board - do not reuse

Avoided: strapping pins GPIO0/3/45/46, USB pins GPIO19/20, and GPIO33-37 on the N16R8 (octal PSRAM). Always cross-check the silkscreen of the delivered DevKit board before soldering.

Safety rules

  • 12 V is not harmless. A boat battery can deliver very high short-circuit currents. Every new feed gets its own fuse close to the source.
  • Never feed 5 V into 3V3. USB and the 5V pin may supply the DevKit at the same time: each feeds it through a diode of its own, so the higher one carries the load and neither drives the other. On the main board USB and the 12 V side can therefore be connected together, and the DevKit stays in its socket to be flashed or debugged - as long as the DevKit's IN-OUT and USB-OTG solder pads stay open.
  • SeaTalk TX stays disabled until RX runs reliably and the output stage has been tested separately on the bench. After a reset or a lost connection the transmit path is passive.
  • No autopilot commands from the internet. Control lives on the local on-board Wi-Fi only; the server receives telemetry.
  • No Wi-Fi or server passwords in source code. Configuration lives in NVS/Preferences.
  • Sensor and network faults are decoupled. A broken probe, a silent broker or a marina access point that vanishes may cost its own reading or its own connection, and nothing else. The watchdog is there for what gets past that.
  • The boat is permanently on shore power in the marina, so the BoatHub runs continuously. On the 2 x 100 Ah AGM bank (~100 Ah usable, no solar or wind) it would still draw 40-60 Ah per month on its own, so a low-voltage backstop stays mandatory for the case shore power fails and stays failed - the remaining capacity belongs to the bilge pump.
  • The shore-power-loss alarm is gated on at least 6 hours of prior charging, so it stays quiet underway where running on the battery is normal. See docs/design/B-001-power-supply.md.
  • Alarms are judged on the board and acknowledged only at the box, with the BOOT button. The server stores and shows the events; nothing it sends can silence or clear an alarm. See docs/design/A-012-alarm-and-threshold-logic.md.

Repository layout

text
board/                  PlatformIO firmware project - ESP32-S3 N16R8, see board/platformio.ini
hardware/
├── main-board/         KiCad project, see docs/design/B-002-main-board.md
│   └── fab/<rev>/      what was actually sent to the fabricator, one directory per revision
└── case/               parametric FreeCAD model of a printed enclosure, run rather than
                        drawn, see hardware/case/README.md
server/                 MQTT broker in Docker, see server/README.md
docs/
├── ROADMAP.md          planned software functionality, board and server
├── CHANGELOG.md        software change log
├── MATERIAL.md         bill of materials and tools
├── operating-card.html two printable pages for on board: LED, buttons, settings, cable colours
├── design/             build guide and one document per feature (+ TEMPLATE.md)
│   ├── A-NNN-*.md      phase A: the bench build on USB power
│   ├── B-NNN-*.md      phase B: 12 V supply, protection, the main board
│   └── D-NNN-*.md      phase D: SeaTalk1
├── reference/          source documents (project guide PDF)

Where to start

Read docs/design/A-001-devkit-and-carrier.md to identify the board and its carrier, then build along docs/design/A-002-bench-setup-usb.md.

Phase A runs entirely on USB power - no 12 V anywhere. The 12 V supply is built only once the whole sensor and network stack has run 24 hours on USB without intervention, so that a brownout later can be blamed on the converter rather than on the firmware. The full build order is in docs/design/README.md.

Once it is installed, print docs/operating-card.html from a browser and keep it with the box: what the LED and the two buttons mean, what every setting on the configuration page does, and the cable colours.

Parts

58
QtyValueFootprintReferences
10100nF / 50VCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C4, C6, C7, C8, C9, C10, C11, C12
81K 0,1%Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR9, R15, R16, R17, R18, R19, R20, R21
4MountingHole_PadMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4
3100Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR2, R4, R6
32KResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR1, R3, R5
21.5KE20ADiode_THT:D_DO-201AE_P15.24mm_HorizontalD1, D3
210KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR11, R13
1100Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR14
1100 0.1%Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR22
1100 uF / 35V, 105°CCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC3
1100K 0,1%Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR7
110K 0,1%Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR8
11KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR12
11N5822Diode_THT:D_DO-201AD_P15.24mm_HorizontalD2
14,7KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR10
1470 uF / 16V, 105°CCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC5
1BC337Package_TO_SOT_THT:TO-92_InlineQ1
1Conn_01x08_Socket (ADS breakout)Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ1
1Conn_01x10_Socket (ADS1115 1)Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ6
1Conn_01x10_Socket (ADS1115 2)Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ10
1ESP32-S3-N16R8-DevKit_01x22_Socket_RightConnector_PinSocket_2.54mm:PinSocket_1x22_P2.54mm_VerticalJ11
1ESP32-S3-N16R8-DevKit_01x22_Socket_leftConnector_PinSocket_2.54mm:PinSocket_1x22_P2.54mm_VerticalJ7
1Jumper_2_Open (ST_GND to GND, Connect if TX)TestPoint:TestPoint_2Pads_Pitch2.54mm_Drill0.8mmJP2
1PC817Package_DIP:DIP-4_W7.62mmU1
1R-78K5.0-1.0Converter_DCDC:Converter_DCDC_RECOM_R-78E-0.5_THTU2
1Screw_Terminal_01x02 (12V Boat Battery)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01602HBWC_1x02_P5.08mm_HorizontalJ9
1Screw_Terminal_01x02 (Bilge depth sensor)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01602HBWC_1x02_P5.08mm_HorizontalJ12
1Screw_Terminal_01x04 (DS18B Bilge)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01604HBWC_1x04_P5.08mm_HorizontalJ15
1Screw_Terminal_01x04 (DS18B Engine)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01604HBWC_1x04_P5.08mm_HorizontalJ16
1Screw_Terminal_01x04 (DS18B Fridge)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01604HBWC_1x04_P5.08mm_HorizontalJ14
1Screw_Terminal_01x04 (SHT3X)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01604HBWC_1x04_P5.08mm_HorizontalJ2
1Screw_Terminal_01x04 (Seatalk)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01604HBWC_1x04_P5.08mm_HorizontalJ17
1Screw_Terminal_01x06 (ABX00101 LSM6DSOXTR)TerminalBlock_MetzConnect:TerminalBlock_MetzConnect_Type101_RT01606HBWC_1x06_P5.08mm_HorizontalJ4

Questions

How big is the Boathub PCB?

It measures 134.6 × 91.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Boathub use?

58 parts, built around the R-78K5.0-1.0, 1.5KE20A and BC337. 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 Boathub KiCad files?

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

Can I use the Boathub design in my own project?

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

Similar boards

  • 4 layers75 × 55 mmTemplate, the printed circuit board in 3D

    Template

    Exocet-Polytechnique/exo-template-pcb

    74 partsGPL-3.0
  • 6 layers200 × 170 mmMicrowave Beamer, the printed circuit board in 3D

    Microwave Beamer

    levisawatz/Microwave_beam_kicad

    474 parts
  • 2 layers41.9 × 53.9 mmReadoutPCB, the printed circuit board in 3D

    ReadoutPCB

    ryanhulke/nuclear-fusor

    Open-source hardware, embedded software, and control panel software for nuclear fusor operation.

    20 parts21MIT
  • 2 layers50 × 25 mmMbus master, the printed circuit board in 3D

    Mbus master

    roarfred/AmsToMqttBridge

    Minimalistic system to read AMS/HAN data from electrical meter

    50 parts223
  • 2 layers118 × 103.5 mmEV Charger2, the printed circuit board in 3D

    EV Charger2

    fotherja/EV_Charger

    Arduino Uno Code for EV Charger

    62 parts167MIT
  • 2 layers28.7 × 81.3 mmLine sensor mini wide, the printed circuit board in 3D

    Line sensor mini wide

    ukmars/ukmarsbot

    A simple beginners multi purpose robot platform

    37 parts138MIT
  • 2 layersLM80C R6, the printed circuit board in 3D

    LM80C R6

    leomil72/LM80C

    A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO

    153 parts123GPL-3.0
  • 2 layers121 × 68 mmFreeds sanchez, the printed circuit board in 3D

    Freeds sanchez

    pablozg/freeds

    Derivador de energía solar excedente creado por Pablo Zerón, Diseño PCB por Amcalo, Tester original por Aeizoon, Wiki por Zoilo Mora

    42 parts108