
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)

Prototype project to build an underwater sensor node, powered by and communicating with the surface via Single Pair Ethernet (10BASE-T1L + 802.3cg)
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.
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).

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

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.

The top cap/bulkhead has 4×M10 threaded holes for accessories as part of BlueRobotic's hardware ecosystem. The assembled prototype is fitted with:
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/.
A pair of 3D printed board mounts use the 4×M3 internal mounting holes in the bulkheads.

CAD models and STL files are in /mechanical/tube/.
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/.
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.
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.

It's a 46×100 mm 1.6 mm 2-layer board with pretty relaxed fabrication requirements.
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).

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.
The project was designed without assuming any specific sensors would be used, but I used these I2C sensors:
SHTC3 via Sparkfun SEN-16467LSM6DSO via Sparkfun SEN-18020MS5837 via BlueRobotics Bar02I 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-machinelsm6ds0-fifo-test - Configures and reads IMU samples periodically from the bufferled-io-test - Rough test using Pololu's APA102 library to check the 2×24 LED ringsspe-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
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.

TODO: Write part 2 post on data processing and visualisation
If you're planning on replicating this project, or part of it, some additional points of interest:
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.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100n_X7R_1005M | Applidyne_Capacitor:CAPC1005X60N | C4, C6, C8, C12, C14, C16, C19, C20 |
| 6 | SOLDER-LINK-2-TINY | Applidyne_Link:SJ1005-2N | SL2, SL3, SL4, SL5, SL6, SL7 |
| 4 | 10n_X7R_1005M | Applidyne_Capacitor:CAPC1005X60N | C13, C15, C17, C32 |
| 3 | 10K0_1005M | Applidyne_Resistor:RESC1005X40N | R3, R6, R30 |
| 3 | 10u_X7R_2012M | Applidyne_Capacitor:CAPC2012X110N | C2, C18, C21 |
| 3 | 1K00_1608M | Applidyne_Resistor:RESC1608X50N | R16, R21, R28 |
| 2 | 10K2_1608M | Applidyne_Resistor:RESC1608X50N | R20, R23 |
| 2 | 1K5_1005M | Applidyne_Resistor:RESC1005X40N | R10, R14 |
| 2 | 1n_X7R_3216M_2kV | Applidyne_Capacitor:CAPC3216X135N | C29, C30 |
| 2 | 1u_X5R_1005M | Applidyne_Capacitor:CAPC1005X60N | C7, C27 |
| 2 | 220n_X7R_1608M | Applidyne_Capacitor:CAPC1608X90N | C22, C24 |
| 2 | 22p_X7R_1608M | Applidyne_Capacitor:CAPC1608X90N | C10, C11 |
| 2 | 22u_X5R_2012M | Applidyne_Capacitor:CAPC2012X110N | C5, C26 |
| 2 | 470K_1005M | Applidyne_Resistor:RESC1005X40N | R2, R4 |
| 2 | 49R9_1005M | Applidyne_Resistor:RESC1005X40N | R22, R24 |
| 2 | 4K7_QUAD_ARRAY_1608M | Applidyne_Resistor:R_Array_Concave_4x1608M | R13, R19 |
| 2 | 5K1_1005M | Applidyne_Resistor:RESC1005X40N | R18, R25 |
| 1 | 0R_1005M | Applidyne_Resistor:RESC1005X40N | R5 |
| 1 | 100K_1005M | Applidyne_Resistor:RESC1005X40N | R12 |
| 1 | 100R_1608M | Applidyne_Resistor:RESC1608X50N | R26 |
| 1 | 100n_X7R_1608M | Applidyne_Capacitor:CAPC1608X90N | C23 |
| 1 | 10K0_1608M | Applidyne_Resistor:RESC1608X50N | R11 |
| 1 | 10u_X5R_2012M_50V | Applidyne_Capacitor:CAPC2012X110N | C31 |
| 1 | 13K_1005M | Applidyne_Resistor:RESC1005X40N | R34 |
| 1 | 15K_1005M | Applidyne_Resistor:RESC1005X40N | R31 |
| 1 | 1M_1005M | Applidyne_Resistor:RESC1005X40N | R1 |
| 1 | 1M_1608M | Applidyne_Resistor:RESC1608X50N | R29 |
| 1 | 1n_X7R_1005M | Applidyne_Capacitor:CAPC1005X60N | C28 |
| 1 | 20K0_1608M | Applidyne_Resistor:RESC1608X50N | R8 |
| 1 | 22R_1608M | Applidyne_Resistor:RESC1608X50N | R9 |
| 1 | 26K1_1005M | Applidyne_Resistor:RESC1005X40N | R32 |
| 1 | 2K40_1608M | Applidyne_Resistor:RESC1608X50N | R17 |
| 1 | 2N7002P | Applidyne_SOT:SOT95P240X110-3L16N | Q1 |
| 1 | 330p_X7R_1005M | Applidyne_Capacitor:CAPC1005X60N | C3 |
| 1 | 36K_1005M | Applidyne_Resistor:RESC1005X40N | R36 |
| 1 | 40K2_1005M | Applidyne_Resistor:RESC1005X40N | R33 |
| 1 | 470n_X5R_1005M | Applidyne_Capacitor:CAPC1005X60N | C9 |
| 1 | 470n_X7R_2012M_100V | Applidyne_Capacitor:CAPC2012X110N | C25 |
| 1 | 4K7_1608M | Applidyne_Resistor:RESC1608X50N | R15 |
| 1 | 56n_X7R_1608M | Applidyne_Capacitor:CAPC1608X90N | C1 |
| 1 | 680K_1005M | Applidyne_Resistor:RESC1005X40N | R35 |
| 1 | 9K09_1608M | Applidyne_Resistor:RESC1608X50N | R7 |
| 1 | ADIN1110 | Applidyne_QFN:QFN50P600X600X100-40T350X350N | U4 |
| 1 | AP2112K-3.3 | Applidyne_SOT:SOT95P280X145-5L30N | U6 |
| 1 | AP7375-33 | Applidyne_SOT:SOT95P240X110-3L16N | U1 |
| 1 | AT24C02C-SSHM | Applidyne_SOIC:SOIC127P600X330-8L2N | IC1 |
| 1 | ATL431LIB | Applidyne_SOT:SOT95P240X110-3L16N | U3 |
| 1 | B240Q-13-F | Applidyne_SOD:SODFL5436X262N | D6 |
| 1 | CD-HD2006L | Applidyne_Device:CD-HD2x(L) | D4 |
| 1 | COMM_MODE_1000uH_800mA_0.3R | Applidyne_Inductor:WE-SL2 | L3 |
| 1 | CONN_01X02 | Applidyne_Connector_Wurth:61300211121 | P2 |
| 1 | CONN_01X05_RA | Applidyne_Connector:CUI_TBL009-254-03 | J1 |
| 1 | COUPLED_47uH_1500mA_340mOhm | Applidyne_Inductor:WE-MCRI-1040 | L2 |
| 1 | D1213A | Applidyne_SOT:SOT95P240X110-3L16N | D7 |
| 1 | INA186A3 | Applidyne_SOT:SOT23-8P65_280X145L45X30N | U5 |
| 1 | LED_BLUE_1608M | Applidyne_LED:LEDC1608X80L40N | D3 |
| 1 | LED_GREEN_1608M | Applidyne_LED:LEDC1608X80L40N | D1 |
| 1 | LED_RED_1608M | Applidyne_LED:LEDC1608X80L40N | D5 |
| 1 | LED_YELLOW_1608M | Applidyne_LED:LEDC1608X80L40N | D2 |
| 1 | MCP65R41T | Applidyne_SOT:SOT95P240X110-6L16N | U2 |
| 1 | MICROMOD_FUNCTION_BOARD_EDGE | Applidyne_Connector:M.2-MICROMOD-FN-CARD-EDGE | X2 |
| 1 | PROBE_PAD | Applidyne_Test:TP200 | TEST1 |
| 1 | R01_3216M | Applidyne_Resistor:RESC3216X60N | R27 |
| 1 | RH100-25.000-13-F-0715 | Applidyne_Crystal:OSCCC320X250X60L90X100N | X1 |
| 1 | TLVM23625RDNR | Applidyne_QFN:QFN50P450X350X200-11-FCMOD11 | U7 |
| 1 | TPS26625 | Applidyne_SON:SON50P300X300X90-11T240X165N_RELIEF | U8 |
| 1 | WE-STST_74930000 | Applidyne_Inductor:WE-STST | L1 |

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)

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)

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)




pbozeman/vanilla-ice40
Hardware design and verilog sample files for Lattice ICE40 development boards and expansion boards.



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

It measures 38 × 65 mm and has 2 copper layers, 0.8 mm thick.
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.
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.
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).