Parametric OpenSCAD pipe-clamp + TS35 DIN-rail section for the
M5Stack CoreS3 on a vertical 1-1/2" Schedule-40 PVC pipe. Sibling
to hydro-tapco-mount — same pipe, same
clamp pattern, designed to share the rig with the camera mount.
The CoreS3 has a female TS35 clip on its back (35 mm × 7.5 mm per IEC 60715). This part presents a printed male TS35 rail section that the device clips onto. The rail runs horizontally — perpendicular to the pipe, the standard DIN-rail orientation — so gravity seats the device's spring-clip on the lower flange. Slide the device on from either end of the rail. Reposition height by loosening the clamp bolts and sliding the whole assembly up or down the pipe.
The plain clamp half can optionally carry a Seeed Grove DHT20 temperature/humidity sensor on an extended bolt ear — see DHT20 sensor mount below.
| File | Re-render with | Notes |
|---|---|---|
cores3-mount.scad |
— | Source. Set mode at the top. |
cores3-mount_rail.stl |
mode = "half_a" (the rail half) |
Print one |
cores3-mount_clamp.stl |
mode = "half_b" (the plain half) |
Print one |
cores3-mount_clamp_DHT20.stl |
mode = "half_b" + SENSOR_ENABLE = true |
Clamp half with the DHT20 pad. Print this instead of the plain clamp half. |
- 2 × M4 socket-cap bolts, 16 mm long (clamp bolts — one per side)
- 2 × M4 hex nuts (captive, one in each of Half A's bolt ears, hidden behind the rail once installed)
- A piece of 1-1/2" Schedule-40 PVC pipe (nominal OD 48.26 mm)
- An M5Stack CoreS3
Optional — DHT20 sensor mount (when SENSOR_ENABLE = true):
- 1 × Seeed Grove DHT20 temperature/humidity board
- 3 × M2 screws (length ≈ board thickness + pad thickness + nut)
- 3 × M2 hex nuts (captive in the pad's back-face pockets)
| Mode | Renders |
|---|---|
"half_a" |
Rail half — print one; rail-flange side down, supports around the screw-hole area. |
"half_b" |
Plain half — print one. |
"assembly" |
Both halves on a transparent dummy pipe. |
"exploded" |
Both halves separated with dummy bolts and nuts. |
Render (F6), export STL.
Half A (rail half): prints rail-flange side down — the flat rail face on the bed. The flange overhangs land directly on the build plate, so they need no support, but the bolt-ear / screw-hole area now overhangs the bed: add supports around the screw holes.
Half B (plain half): prints with the bore axis vertical — it stands as a half-tube on the bed, body and ears extruding as a constant cross-section per layer, no supports needed.
- Material: PETG. Better fatigue tolerance for the captive-nut clamp force, and humidity-tolerant.
- Layer height: 0.2 mm.
- Infill: 20 % gyroid or grid.
- Perimeters: 3.
- Supports: around Half A's screw-hole area only; none for Half B.
Half B (the plain clamp half) can carry a Seeed Grove DHT20
temp/humidity board on a flat pad that extends one bolt ear. Turn
it on with SENSOR_ENABLE = true near the top of the SCAD; with it
false the clamp renders exactly as stock.
How it's laid out:
- The board bolts flat against the ear's outer (back) face and is mounted vertically — its long axis runs along the pipe so it stands up alongside the clamp rather than cantilevering far radially.
- Three M2 through-holes match the Grove footprint: a pair on
the connector edge
SENSOR_PAIR_DXapart (20 mm), plus a single holeSENSOR_PAIR_TO_SINGLEaway (30 mm). M2 nuts drop into captive hex pockets on the pad's inner face, so you only turn the screw. - The holes sit outboard of the ear tip (
SENSOR_HOLE_INSET_X) so the board clears the M4 clamp bolt — the bolt-head counterbore stays open through the pad, leaving hex-key access beside the board. Tighten the clamp bolts before fitting the sensor. - The pad sits flush with one clamp end and the board overhangs
the other; that flush edge is what keeps Half B printing
support-free. Print with the flush end on the bed
(
SENSOR_EXTEND_DIR = -1, the default, needs no re-orientation;+1flips which end overhangs and wants a slicer flip).
The sensor dimensions are placeholders — measure your board and
adjust SENSOR_PAIR_DX, SENSOR_PAIR_TO_SINGLE, SENSOR_HOLE_DIA,
SENSOR_NUT_FLATS/SENSOR_NUT_DEPTH, and SENSOR_HOLE_INSET_X.
Built-in asserts catch a pad that's too thin for the nut or an
inner hole that creeps back over the bolt head. Keep the pad a plain
rectangle (no Y-varying fillets) or the no-support print breaks.
In a real DIN-rail install, the rail's flanges sit on a
backpanel and the device's clip hooks reach in past the flange
edges from outside the rail. To reproduce that here, the
printed support plate is exactly the width of the rail's HAT
TOP (27 mm) along the pipe axis — not the width of the flanges
(35 mm). The flanges overhang the plate by ~4 mm above and
below, leaving open air for the hooks to wrap around. If you
change RAIL_HAT_W or PLATE_W in the SCAD, keep them equal.
Run a fit-test of both halves at 0.3 mm layer / 0 % infill / 2 perimeters first. Wrap them around an actual offcut of the pipe and dry-fit the CoreS3 onto the rail:
- Device clip won't engage / binds going on → increase
RAIL_GAP(try 0.3 mm, then 0.4 mm). - Device wobbles or slides off when bumped → reduce
RAIL_GAP(try 0.1 mm). - Pipe still spins under modest hand torque → reduce
PIPE_ODby 0.3 mm. - Pipe-clamp halves bottom out before gripping → increase
CLAMP_GAP. - Captive nut spins in its hex pocket → reduce
NUT_FLATSby 0.1 mm. - DHT20 won't sit / screws miss the holes → re-measure the
board and correct
SENSOR_PAIR_DX/SENSOR_PAIR_TO_SINGLE; for tight screws bumpSENSOR_HOLE_DIA. M2 nut spins → reduceSENSOR_NUT_FLATSby 0.1 mm.
- Drop one M4 hex nut into each of the two pockets on the outer faces of Half A's bolt ears (the rail side). They tuck behind the rail and stay captive.
- Stand the pipe vertical. Hold Half A against one side of the pipe (with the rail facing the direction you want the device to point) and Half B against the opposite side so their bolt ears line up.
- Drop an M4 bolt through each of Half B's counterbores (the back side, away from the device), across the gap, and into the captive nuts on Half A.
- Tighten both bolts evenly with a hex key — alternate sides a few turns at a time so the halves close on the pipe square.
- Slide the CoreS3 onto the rail from either end; gravity seats its clip on the lower flange.
- If using the DHT20 mount: seat the three M2 nuts in the pad's back-face pockets, lay the board on the outer face, and drive the M2 screws from the board side. Do this after the clamp bolts are tight — the bolt head stays accessible beside the board, but it's easiest to reach with the sensor off.
- Up / down the pipe: loosen both clamp bolts 1–2 turns, slide the assembly up or down, retighten. The CoreS3 can stay clipped on the rail through this — or lift it off first.
- Aim direction: loosen, rotate the clamp around the pipe axis, retighten. The CoreS3 rotates with the clamp.
- Remove the device: slide it off either end of the rail.
- Remove the clamp: fully remove both bolts, separate the two halves, lift off the pipe.
Both hydro-tapco-mount and hydro-cores3-mount clamp to the
same 1.5" pipe, so they can sit on the same vertical run a few
inches apart. With both clamps rotated to the same direction,
the camera and the dashboard face the same way and you can see
both from one viewpoint.