Skip to the content
2 layers38 × 65 mmSpe sink, the printed circuit board in 3D

Prototype project to build an underwater sensor node, powered by and communicating with the surface via Single Pair Ethernet (10BASE-T1L + 802.3cg)

Size
38 × 65 mm
Copper layers
2
Thickness
0.8 mm
Parts
99
Nets
123
Pads
401
Tracks, vias
784, 86
Pours
14
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
31 Jul 2023
Updated
2 Sep 2023

Overview

Spe sink is an open-source printed circuit board by Scottapotamas, from the Scottapotamas/spe-marine-node repository on GitHub, published under the MIT licence. It is a 2-layer board of 38 × 65 mm with 99 parts on 123 nets, routed with 784 tracks and 86 vias.

It is built around the TLVM23625RDNR, AP2112K-3.3 and AP7375-33Y, with the AT24C02C-SSHM-T, TPS26625DRC and 2N7002P among its other parts. Its parts include 36 resistors, 32 capacitors, 9 ICs, 7 diodes and 3 inductors.

Main components

8

README

README.md

Underwater Sensor Node with Single Pair Ethernet

Prototype project to build a underwater sensor node, powered by and communicating with the surface via Single Pair Ethernet (10BASE-T1L + 802.3cg Type E Class 10-12).

test-mounted

A more detailed write-up can be read on Electric UI's blog.

Mechanical

test-jetty

Housing

The body of the sensor node is a 2″ acrylic tube (~58mm OD), with a pair of aluminium end-caps. This provides a working volume constrained by the 50 mm internal diameter and ~118 mm maximum gap between caps.

mech-side-view

The top cap/bulkhead has 4×M10 threaded holes for accessories as part of BlueRobotic's hardware ecosystem. The assembled prototype is fitted with:

  • 4.5mm Wetlink penetrator for the tether cable
  • 10m rated pressure sensor
  • White indicator LED
  • Pressure relief/test valve

Whilst this prototype won't see properly deep water, this tube arrangement should be capable of 200m operation, and far deeper if an aluminium sleeve is used.

CAD models and assemblies are in /mechanical/tube/. Off-the-shelf parts are in /mechanical/tube/cots/.

Internal brackets

A pair of 3D printed board mounts use the 4×M3 internal mounting holes in the bulkheads.

mech-pcb-mounts

CAD models and STL files are in /mechanical/tube/.

Mounting

The tube itself doesn't have any features for mounting, so a pair of custom tube clamps were printed with the general goal of providing generic strap or wire mounting points.

Files are in /mechanical/mount/.

Electronics

Compatibility with the Sparkfun MicroMod ecosystem has been maintained where possible - building off of Sparkfun's ADIN1110 function board for bring-up and early software tests.

PCB's were designed with KiCAD 7. Project files, gerbers and schematic PDF's are in /electronics/.

A small collection of calculator spreadsheets were made to help during the design process - these are in /docs and use Open Office .ods format.

Version 1.0 boards do have some minor issues which were tweaked during bench testing, so I'd recommend reviewing things thorough before copying anything into your designs.

Backplane

Acting as the MicroMod 'carrier', providing the processor and function board connections, as well as regulation, I2C headers, and breakout pads for spare/conflicted IO. It also serves as the mounting interface for sensor payloads and custom hardware.

render-backplane-overview

It's a 46×100 mm 1.6 mm 2-layer board with pretty relaxed fabrication requirements.

PD and PSE Function Boards

Both boards implement the ADIN1110 SPE transceiver in a similar manner to Sparkfun's function board, but exist as two variants which improve over the dev-kit by adding:

  • Circuitry to act as a Class 10-12 PoDL power supply aka PSE (pictured below on left).

  • VID circuitry to signal compliance as a Class 10-12 PoDL powered device aka PD (pictured on right).

    render-fn-boards

These boards only provide detection, not classification via SCCP, and as such runs in 'fast-start mode'.

The PCB's are A×B mm, 0.8mm thick, 2-layer boards which can be manufactured with commodity fabs. I just used the raw straight PCB edge-connector without issues, but for best practice and/or frequent insertion cycles the edge-connector should be bevelled.

The blog post describes PoDL circuit behaviour and integration in more detail.

Sensors

The project was designed without assuming any specific sensors would be used, but I used these I2C sensors:

Firmware

I used an ESP32 MicroMod processor board along with the Arduino toolchain. As such, there are external dependencies on the ESP32 Arduino core, electricui-embedded, and Sparkfun packages for their ESP32 boards, LSM6DS0, SHTC3 and ADIN1110 libraries.

I also depend on my own MS5837 library (external to this repo) for working with the pressure sensor.

The /firmware folder has some of the test-sketches written during testing:

  • spe-pse-io - Bench-test PoDL PSE behaviour with a simple state-machine
  • lsm6ds0-fifo-test - Configures and reads IMU samples periodically from the buffer
  • led-io-test - Rough test using Pololu's APA102 library to check the 2×24 LED rings
  • spe-eui-bridge - Transparent proxy of electricui-embedded packets with ADIN1110 raw buffers to serial ports.

These sketches weren't written to act as examples or as reference material, and should be treated accordingly.

The main firmware is actually rather straightforward, running a superloop which runs each sub-system at a defined rate. Sub-systems never block, and are generally only responsible for their own behaviour.

TODO: Cleanup and merge branches/sources into this repo

User Interface

TODO: Cleanup and merge sources into this repo

The user interface is built with Electric UI, and can be built and run by invoking arc start from /interface.

It handles visualisation of data streaming off the sensor node, and provides additional statistics and logging.

ui-screenshot

TODO: Write part 2 post on data processing and visualisation

Additional Notes

If you're planning on replicating this project, or part of it, some additional points of interest:

  • I'm happy to answer questions or help with design changes to suit your ocean research project.
    • I'm also generally open to consulting work!
  • Firmware is pretty specific to my own tooling and relies on external libraries for sensors and the Arduino ESP32 core.
  • Read over BlueRobotics's guides for Wetlink penetrator use, enclosure assembly, pressure testing.
    • Definitely do remember to lubricate o-rings and the tube bulkheads as you slide them into the cylinder. It's very difficult to get them out dry...
  • The tube as designed and pictured is positively buoyant and might need additional ballast weight depending on your application and safety requirements around handling.

Its also worth mentioning that the entire detailed conceptualisation, design, ordering, assembly, testing and writeup occurred in August 2023. There were many late nights, and as a result some design choices were made with simplicity or time-frame in mind.

Parts

99
QtyValueFootprintReferences
8100n_X7R_1005MApplidyne_Capacitor:CAPC1005X60NC4, C6, C8, C12, C14, C16, C19, C20
6SOLDER-LINK-2-TINYApplidyne_Link:SJ1005-2NSL2, SL3, SL4, SL5, SL6, SL7
410n_X7R_1005MApplidyne_Capacitor:CAPC1005X60NC13, C15, C17, C32
310K0_1005MApplidyne_Resistor:RESC1005X40NR3, R6, R30
310u_X7R_2012MApplidyne_Capacitor:CAPC2012X110NC2, C18, C21
31K00_1608MApplidyne_Resistor:RESC1608X50NR16, R21, R28
210K2_1608MApplidyne_Resistor:RESC1608X50NR20, R23
21K5_1005MApplidyne_Resistor:RESC1005X40NR10, R14
21n_X7R_3216M_2kVApplidyne_Capacitor:CAPC3216X135NC29, C30
21u_X5R_1005MApplidyne_Capacitor:CAPC1005X60NC7, C27
2220n_X7R_1608MApplidyne_Capacitor:CAPC1608X90NC22, C24
222p_X7R_1608MApplidyne_Capacitor:CAPC1608X90NC10, C11
222u_X5R_2012MApplidyne_Capacitor:CAPC2012X110NC5, C26
2470K_1005MApplidyne_Resistor:RESC1005X40NR2, R4
249R9_1005MApplidyne_Resistor:RESC1005X40NR22, R24
24K7_QUAD_ARRAY_1608MApplidyne_Resistor:R_Array_Concave_4x1608MR13, R19
25K1_1005MApplidyne_Resistor:RESC1005X40NR18, R25
10R_1005MApplidyne_Resistor:RESC1005X40NR5
1100K_1005MApplidyne_Resistor:RESC1005X40NR12
1100R_1608MApplidyne_Resistor:RESC1608X50NR26
1100n_X7R_1608MApplidyne_Capacitor:CAPC1608X90NC23
110K0_1608MApplidyne_Resistor:RESC1608X50NR11
110u_X5R_2012M_50VApplidyne_Capacitor:CAPC2012X110NC31
113K_1005MApplidyne_Resistor:RESC1005X40NR34
115K_1005MApplidyne_Resistor:RESC1005X40NR31
11M_1005MApplidyne_Resistor:RESC1005X40NR1
11M_1608MApplidyne_Resistor:RESC1608X50NR29
11n_X7R_1005MApplidyne_Capacitor:CAPC1005X60NC28
120K0_1608MApplidyne_Resistor:RESC1608X50NR8
122R_1608MApplidyne_Resistor:RESC1608X50NR9
126K1_1005MApplidyne_Resistor:RESC1005X40NR32
12K40_1608MApplidyne_Resistor:RESC1608X50NR17
12N7002PApplidyne_SOT:SOT95P240X110-3L16NQ1
1330p_X7R_1005MApplidyne_Capacitor:CAPC1005X60NC3
136K_1005MApplidyne_Resistor:RESC1005X40NR36
140K2_1005MApplidyne_Resistor:RESC1005X40NR33
1470n_X5R_1005MApplidyne_Capacitor:CAPC1005X60NC9
1470n_X7R_2012M_100VApplidyne_Capacitor:CAPC2012X110NC25
14K7_1608MApplidyne_Resistor:RESC1608X50NR15
156n_X7R_1608MApplidyne_Capacitor:CAPC1608X90NC1
1680K_1005MApplidyne_Resistor:RESC1005X40NR35
19K09_1608MApplidyne_Resistor:RESC1608X50NR7
1ADIN1110Applidyne_QFN:QFN50P600X600X100-40T350X350NU4
1AP2112K-3.3Applidyne_SOT:SOT95P280X145-5L30NU6
1AP7375-33Applidyne_SOT:SOT95P240X110-3L16NU1
1AT24C02C-SSHMApplidyne_SOIC:SOIC127P600X330-8L2NIC1
1ATL431LIBApplidyne_SOT:SOT95P240X110-3L16NU3
1B240Q-13-FApplidyne_SOD:SODFL5436X262ND6
1CD-HD2006LApplidyne_Device:CD-HD2x(L)D4
1COMM_MODE_1000uH_800mA_0.3RApplidyne_Inductor:WE-SL2L3
1CONN_01X02Applidyne_Connector_Wurth:61300211121P2
1CONN_01X05_RAApplidyne_Connector:CUI_TBL009-254-03J1
1COUPLED_47uH_1500mA_340mOhmApplidyne_Inductor:WE-MCRI-1040L2
1D1213AApplidyne_SOT:SOT95P240X110-3L16ND7
1INA186A3Applidyne_SOT:SOT23-8P65_280X145L45X30NU5
1LED_BLUE_1608MApplidyne_LED:LEDC1608X80L40ND3
1LED_GREEN_1608MApplidyne_LED:LEDC1608X80L40ND1
1LED_RED_1608MApplidyne_LED:LEDC1608X80L40ND5
1LED_YELLOW_1608MApplidyne_LED:LEDC1608X80L40ND2
1MCP65R41TApplidyne_SOT:SOT95P240X110-6L16NU2
1MICROMOD_FUNCTION_BOARD_EDGEApplidyne_Connector:M.2-MICROMOD-FN-CARD-EDGEX2
1PROBE_PADApplidyne_Test:TP200TEST1
1R01_3216MApplidyne_Resistor:RESC3216X60NR27
1RH100-25.000-13-F-0715Applidyne_Crystal:OSCCC320X250X60L90X100NX1
1TLVM23625RDNRApplidyne_QFN:QFN50P450X350X200-11-FCMOD11U7
1TPS26625Applidyne_SON:SON50P300X300X90-11T240X165N_RELIEFU8
1WE-STST_74930000Applidyne_Inductor:WE-STSTL1

More from Scottapotamas/spe-marine-node

3
  • 2 layers38 × 65 mmSpe source, the printed circuit board in 3D

    Spe source

    Scottapotamas/spe-marine-node

    Prototype project to build an underwater sensor node, powered by and communicating with the surface via Single Pair Ethernet (10BASE-T1L + 802.3cg)

    99 parts34MIT
  • 2 layers46 × 100 mmBackplane, the printed circuit board in 3D

    Backplane

    Scottapotamas/spe-marine-node

    Prototype project to build an underwater sensor node, powered by and communicating with the surface via Single Pair Ethernet (10BASE-T1L + 802.3cg)

    65 parts34MIT
  • 2 layers45 × 45 mmInterior lighting, the printed circuit board in 3D

    Interior lighting

    Scottapotamas/spe-marine-node

    Prototype project to build an underwater sensor node, powered by and communicating with the surface via Single Pair Ethernet (10BASE-T1L + 802.3cg)

    46 parts34MIT

Similar boards

  • 2 layersPsu5v, the printed circuit board in 3D

    Psu5v

    zPirroZ3007/psu5v

    Simple power supply PCB design.

    6 parts
  • 2 layers40 × 40 mmCurcuitV4, the printed circuit board in 3D

    CurcuitV4

    banbatakumi/BLDC

    97 parts1
  • 4 layers70 × 70 mmController, the printed circuit board in 3D

    Controller

    aaron02/TEAM5_DOUG

    86 parts
  • 4 layers100 × 62 mmBreakout adc, the printed circuit board in 3D

    Breakout adc

    pbozeman/vanilla-ice40

    Hardware design and verilog sample files for Lattice ICE40 development boards and expansion boards.

    109 parts6MIT
  • 2 layersC test, the printed circuit board in 3D

    C test

    McbeEringi/pcb-stuff

    18 parts2MIT
  • 2 layers30.5 × 12.7 mmEeprom board, the printed circuit board in 3D

    Eeprom board

    iynehz/i2cpy

    Python I2C library supporting multiple driver implementations

    8 parts9MIT
  • 4 layers128 × 55 mmCluster2HDMI, the printed circuit board in 3D

    Cluster2HDMI

    vkar9898/Cluster2HDMI

    A project dedicated to utilising a 7 inch LCD panel as a standalone monitor via a HDMI-parallel RGB converter and a Pico 2 fitted on a custom PCB

    96 parts2MIT
  • 2 layers229.6 × 198.8 mmMiddle, the printed circuit board in 3D

    Middle

    atelier-lyon/Epiled_slaves

    130 parts

Questions

How big is the Spe sink PCB?

It measures 38 × 65 mm and has 2 copper layers, 0.8 mm thick.

What parts does the Spe sink use?

99 parts, built around the TLVM23625RDNR, AP2112K-3.3, AP7375-33Y and AT24C02C-SSHM-T. 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 Spe sink KiCad files?

From the Scottapotamas/spe-marine-node repository on GitHub, at the commit this page was made from: the board is electronics/spe-sink/spe-sink.kicad_pcb and its schematic electronics/backplane/backplane.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Spe sink design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).