A water based tide clock
Specifications
Tide clocks are generally built from a quartz clock mechanism with an approximate period of 6h and 12 minutes (in France). So they are not very accurate nor fancy ...
I wanted to build a "real tide clock" that is a device showing the sea level... with water !
The principle is rather simple and gives the basic specifications set of this project:
- you just have to empty one bucket to fill another one at the exact cycle of the tides
- to be "nice" one of the buckets must be fully hidden...
- the pumps needed to fill/empty the buckets must be silent and tiny enough for the mechanism to be fully hidden
- the device should be "artistic" (ie not ugly !)
- And finally all this must be "smart" and connected to internet to follow the exact cycles of the tides at your local place and time
Tides in France and in the world
In metropolitan France, the tidal cycle consists of two high tides and two low tides each day, with an interval of approximately six hours and twelve minutes between each event.
The daily rhythm
- Exact duration: This complete cycle lasts 24 hours and 50 minutes.
- Shift: Tide times shift by about 50 minutes each day.
- Alternation: The sea rises for nearly 6 hours (flood tide) and then falls for nearly 6 hours (ebb tide).
Amplitude and coefficients
- Tidal range (the difference in height between high and low tide) varies according to the phases of the moon and the sun
- Spring tides: During the new moon and full moon, the forces combine. Tides are stronger (high coefficients).
- Neap tides: During the first and last quarters, the forces counteract each other. Tides are weaker.
- Equinoxes: The year's largest tides occur around the spring and autumn equinoxes due to the optimal alignment of the celestial bodies.
Here is a daily cycle for Biarritz in France september 21rst 2026. It is provided by the French government institute SHOM (Service hydrographique et océanographique de la Marine)


This "almost sinusoïdal" behavior is typical for France but not strictly identical for other countries (eg USA)
Tides main diffrences between France and USA:
Because both France and the United States have extensive coastlines bordering different bodies of water, comparing their tides depends on the specific region. However, there are key differences in tidal range (height), tidal cycles (frequency), and localized phenomena.
Tidal Amplitude (Height Differences)
France:
- The Atlantic & English Channel: Northern and western France experience some of the largest tidal ranges in the world.
- During spring tides, water levels here can shift by as much as 12 to 14 meters (39 to 46 feet) between high and low tide.
- The Mediterranean Coast: 30 to 40 cm (1 foot) due to the enclosed nature of the basin.
United States:
- East Coast & Gulf Coast: Most of the US Atlantic coast experiences modest tides (typically 1 to 2 meters / 3 to 6 feet). The Gulf Coast has extremely small tides, often less than 0.6 meters (2 feet).
- Exceptions (Northeast & Alaska): The US does have spots with massive tides. Northern Maine (near the Bay of Fundy) experiences ranges of 4 to 6 meters (13 to 20 feet), and parts of Alaska (like Anchorage's Cook Inlet) see tides exceeding 9 meters (30 feet).
Frequency and Timing (Tidal Cycles)
France:
- The entire Atlantic and English Channel coasts follow a semi-diurnal tide pattern
- exactly two high tides and two low tides of roughly equal height every lunar day (about 24 hours and 50 minutes).
United States: The US features three distinct tidal patterns depending on the coast:
- Semi-diurnal: Common along the East Coast (two equal high/low tides per day).
- Mixed Semi-diurnal: Standard along the Pacific Coast (California, Oregon, Washington) and Alaska. This means two high tides and two low tides daily, but they differ significantly in height (e.g., one very high tide and one modest high tide).
- Diurnal: Common in the Gulf of Mexico, where there is only one high tide and one low tide per day.
Reporting Systems & Measurement Units
France:
- Tides are officially quantified using a unitless standard called the Tidal Coefficient (coefficient de marée), ranging from 20 (weakest neap tide) to 120 (strongest spring tide). Fishermen, sailors, and beachgoers rely on this number alongside harbor tide tables. Measurements are recorded in meters.
United States:
- Tides are measured strictly in feet relative to local vertical datums like MLLW (Mean Lower Low Water). There is no official single-number coefficient system like the French model; users consult height charts directly.
Consequently, this project will demonstrate how to build the tide clock for any French harbor. It will have to be slightly adapted for any other harbor in the world, but it will be an easy adaptation (only API to access tide values will be to be changed)
Furthermore we have seen that using "sinusoïdal tide curve" (ie a genuine clock mechanism) will give very poor results. This why we need to reach "real tide data" every day !
Mechanical design
I chose to depict the tides around a rock upon which, for aesthetic effect, cabins have been built.
I found a picture of this design on Pinterest Wood life Drift Wood:
The original design was based on driftwood. Exquisite craftsmanship allowed for the addition of three cabins perched above the wood.
A ladder provides access to the cabins and should also serve as a scale for measuring the tide.

The wooden base will be transformed into rock and will be placed inside a glass bell jar, allowing the water to rise and fall around it.

Using IA, this picture was easily transformed into 3D model, and this allowed to fine tune the dimensions (explainations will come later)

This model was hollowed, allowing to use the rock as the water tank

A cylindrical base will close the glass jar and seal the bottom of the tank

We will see later how the pumps and electonics are hidden into the base.
But we first have to print the house!
3d printing the 3d model
Using FDM printer would give very poor results... So two options were open to me:
- resin
- SLS
resin printing would have given the best details, but the model needs quite a lot of supports

This is the reason why I prefered SLS powder printing
Selective Laser Sintering (SLS)
SLS 3D printing is an industrial additive manufacturing process that uses a high-powered laser to fuse polymer powder into strong, functional solid parts.
How SLS Printing Works
- Preheating: The printer heats a bed of fine polymer powder (usually nylon) to a temperature just below its melting point.
- Sintering: A high-powered laser traces a digital CAD model's cross-section, selectively fusing the powder particles together.
- Layering: The build platform lowers, a roller spreads a fresh layer of powder, and the laser repeats the process.

Here are the main advantages of SLS 3D printing:
No Support Structures Required
- Because the part is constantly surrounded and supported by unsintered powder during printing, SLS requires zero support structures.
- Allows complete geometric freedom (overhangs, deep channels, hollow interiors).
- Enables printing fully assembled interlocking parts and moving mechanisms in a single build.
- Saves time during post-processing by eliminating manual support removal.
High Production Throughput & Part Packing
- Without the need for support structures, parts can be nested closely together in 3D space throughout the entire build volume (known as 3D nesting). You can print dozens or hundreds of parts in a single build cycle, making SLS highly scalable for small to medium production runs.
Superior Mechanical Properties & Isotropy
- SLS parts offer high tensile strength, impact resistance, and durability. Because the laser melts layers together homogeneously, parts exhibit nearly isotropic mechanical behavior—meaning their strength is almost identical across the X, Y, and Z axes, unlike FDM printing, which suffers from weak layer bonding along the Z-axis.
Industrial-Grade Engineering Materials
- SLS primarily uses high-performance thermoplastics, most notably Polyamide (Nylon 11 and Nylon 12). These polymers offer excellent chemical resistance, heat tolerance, and structural integrity suitable for end-use functional prototypes and production components.
High Accuracy and Detail Precision
- SLS lasers achieve sharp edge definition and fine feature resolution. This allows for tight tolerances, making it well-suited for complex mechanical assemblies and precise enclosures.
PCBWay SLS service

PCBWay is well-known for high-quality PCB manufacturing. However, they also offer a wide range of prototyping services, such as CNC machining and 3D printing.
For my tide clock, I was able to test their impressive SLS manufacturing service.

Ordering is very simple, you just have to select the right options (3d printing / Nylon / SLS) and upload the .3mf file. Then the order goes into the Request For Quotation process and you will enter into contact with your Sales Representative to evaluate technical feasibility.
All this lasts less than one day, which is great !

When order is placed, wait a few days and you will get your part!
Work in progress: stay tuned
Electronics
Schematics
Electronics schematics is fairly simple:
- an ESP32 Wemos lolin32 lite is the heart of the system
- two DRV8825 stepper drivers will take care of the water pumps
- a MT3608 DCDC stepup converter will increase 5V to 8V needed by the drivers

PCB
PCB can be bought at PCBWay directly from this project page


The PCB was kindly sponsored by PCBWay and is as usual of excellent quality.
When order is placed, wait a few days and you will get your part!
Work in progress: stay tuned

and if you are new to PCBWay please use this affiliated link : https://pcbway.com/g/o35z4O
soldering is easy but special care is needed for power supply and steppers drivers.
- Before connecting the drivers, be sure to tune the stepup converter to 8.1V (not more). This value is the minimal voltage for the drivers to work
- And before connecting the pumps be sure to tune the drivers' current to the minimal value. These tiny motors allow only 150 mA so you must tune the current value delivered by the polulu board.It's easy to do. Just disconnect the motors and follow this procedure:
- you'll have to measure 0.075V voltage between the pot and ground.
- Repeat his procedure for the two drivers. Then you can connect the motors and test them.
- Now don't forget to solder on the "microsteps header" to get 1/4 micro stepping following this table

Remember that fullstep may produce bad resonnance on the motors. Micro step is much better. 1/4 step is the default value giving smooth and noiseless motion.
Pump selection
Choosing the right pump wasn't an easy task, and some trade off have been done !
I wanted:
- tiny pump... as tiny as possible
- able to fill and empty the tank
- self priming
- with enough flow rate to follow the tide cycle
So I searched the internet and found this dirt cheap model

It is a peristaltic pump found on Aliexpress. It's dimensions are extremely compact : 16x10x8 mm
A small bipolar stepper motor allows to rotate the pump in both directions. This type of pump is self priming and doesn't leak as the silicone pipe is permanently squeezed by the rotor rollers.
So the perfect pump ??? Well almost... It has a major drawback : poor flow rate.
I characterised one of these pumps and found the following behavior:

this chart plots volume as a function of stepper speed
- x-axis: steps per minute
- y-axis: volume (ml/h)
As you can see, at average speed, the pump only moves around 36 ml/hour
This is very weak ... and this is the reason why my design incorporates two pumps. With two pumps in parallel I double the flow rate. This gives me a new design sonstraint : the volume of water (for each full tide) shouldn't be more than 450 ml
But linearity is very good and the volume can be correctly controled by the stepper's steps rate.
Finally the pump is rated at 5V but this value is useless as steppers are controlled by current (via the driver). So increasing this value to 8.1V is totally safe and needed as 8V is the cut off low voltage for the driver.
I also performed test pushing water up to 15 cm height. And it worked perfectly (The pump should be able to push water up to around 1m)
Firmware
Source code for the ESP32 lolin32 lite is available on my github pages here
The code is quite straightforward and can be decomposed into these building block :

Key Subsystems are described here after
Tide API Ingestion & Scale Computation:
NTP Synchronization: Syncs time via NTP with automatic daylight saving time handling
Daily tides values , extrema and coefficients are fetched on api-maree.fr web site.
Api-Maree.fr is used under Creative Common 4.0 license. Attributions are : "Données de marée fournies par api-maree.fr sous licence CC BY, calculées à partir de composantes harmoniques Ifremer / PREVIMER, elles-mêmes sous licence CC BY."
Firmware fetches daily High/Low tide extrema and tidal coefficients to calibrate the physical ladder of the 3d model dynamically.
request url example :
https://api-maree.fr/tide-extrema?site=boucau-bayonne-biarritz&from=2026-09-22&to=2026-09-22&tz=Europe/Paris&key=YOUR_API_KEY
Hourly Water Levels: Queries api_maree.fr for 24-hour water height predictions once per day at midnight.
request url example :
https://api-maree.fr/water-levels?site=boucau-bayonne-biarritz&from=2026-09-22T00:00&to=2026-09-23T00:00&step=60&tz=Europe/Paris&key=YOUR_API_KEY
Adaptive conversion to "ladder scale": The system translates physical water heights (in meters) into a linear ladder index consisting of 24 possible distinct rungs (TOTAL_RUNGS = 24). (the rungs of the 3d model ladder!)
Symmetric Mid-Tide Anchor: The 10th rung (MEAN_LEVEL_RUNG_INDEX = 10) is anchored to the astronomical mean water level of the current day (meanWaterLevelHeight).
Coefficient 120 Projection: To guarantee the reservoir never dries out before reaching the bottom physical boundary, the tidal range is normalized to a maximum spring tide (Coefficient 120).

This allows to fully empty the tank for exceptionnal tides (coeff 120 which should almost never occur !) and to have a mean level corresponding to the rung #10 of the ladder

Non-Linear Step Interpolation
Because fluid volume and pump steps do not share a linear relationship across the ladder (due to the random shape of the rock), the ladder calibration table stores discrete motor steps between consecutive rungs:
Discrete Calibration: Step offsets for each rung are saved in non-volatile flash storage (Preferences).
This calibration is performed only once and needs a quite long process of visual synch of water level and rung...
A web server is available to monitor the system and to perform calibration

Usage :
- When powered the system doesn't know precise position of water level. So it starts "homing" the tanks by draining it.
- Homing is finished either after a long timeout (a tide cycle during 6h12minutes) or when user has pressed the "Ok empty" button.
- When empty, the status can be changed from "Idle" to "running".
- In running mode the tide time table will be used to activate the pumps.
- Calibration is performed manually filling the water around the rock. When a new ladder rung is reached, user must press the "Valid & next rung" button. until the coeff 120 ladder rung is reached !
- Then calibration will be finished and system will run automatically "for ever" !
A water based tide clock
Project images are for reference only. Actual production is based on the manufacturing files on the project page.
Please review the designer's notes (e.g., PCB thickness) and select the appropriate options.
PCBWay is not responsible
for issues caused by unsuitable parameter selections.
For more important ordering information, please refer to
Read More
Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW- Comments(0)
- Likes(0)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Jean-Pierre Gleyzes
-
RC radial engine spark plug heater
BackgroundMy friend bought this wonderful engine from UMS_technologiesIt's a 7 cylinders star engine...
-
Convert a DC motor into a stepper one
This project is a way to convert a DC motor into a stepper motor.Of course "conversion" will not be ...
-
OpenxSensor variometer and telemetry for RC planes
Ever wanted a very cheap variometer on your RC glider ?battery voltage monitoring ?extra RC channels...
-
A water based tide clock
SpecificationsTide clocks are generally built from a quartz clock mechanism with an approximate peri...
-
ESP32-S3 3 x ADXL357 acquisition board
SpecificationMy son wanted a high accuracy accelerometer board to characterize a vibrating pot.Here ...
-
ESP32 Linky Teleinfo (TIC) to MQTT – Real-Time Home Assistant Integration
The teleinfo component allows you to retrieve data from a French electrical counter using Teleinform...
-
Air Quality station (e-paper and Home Assistant)
OverviewThis DIY air quality monitoring system integrates precision sensors with a connected process...
-
2S LiPo High-Current Power Box with two Sbus inputs
Project Overview: 2S LiPo High-Current Power Box with two Sbus inputsThis circuit is a high-performa...
-
Power box for big RC plane
Project Overview: 2S LiPo High-Current Power BoxThis circuit is a high-performance power distributio...
-
A bluetooth Joystick for TX16s radio (or others)
This project is kind of follow on of this one : Buddy Box for Radiomaster TX16sI decided to write an...
-
Radiomaster TX16s buddy box (master/trainer and more)
I wanted a wireless buddy box for my Radiomaster TX16sThis buddy box would allow to wireless link tw...
-
"perpetual" motion ball
Browsing internet and youtube, I found this mind blowing "perpetual motion" device designed by Willi...
-
Freon: Freeze On Neck - 3d printed box top
Freon project is fully describbed on this project page
-
Freon: Freeze On Neck - 3d printed box bottom
Freon project is fully described on this project page
-
Freon: Freeze On Neck personal cooler
DescriptionAre you tired of sweltering through hot days, feeling uncomfortable and unproductive?Imag...
-
ESP32_StarMotor_glow plugs heater _ V2
BackgroundMy friend bought this wonderful engine from UMS_technologiesIt's a 7 cylinders star engine...
-
RC plane CoG finder
IntroductionAs an intro here is a video of the system runningand another using the LCD displayA litt...
-
JP eCatFeeder
Overview In 2017 I published the first iteration of this project. And since then, the cat feeder had...
-
Programmable Mist Maker - XIAO / QT PY Extension
2260 2 2 -
RadioHAT - Raspberry Pi radio development platform
1945 0 4 -
QWIIC-VL53L4CD Time-of-Flight Distance Sensor Module
2136 0 2 -
-
-
ARPS-2 – Arduino-Compatible Robot Project Shield for Arduino UNO
4114 0 6 -
-
A Compact Charging Breakout Board For Waveshare ESP32-C3
4879 3 8 -
AI-driven LoRa & LLM-enabled Kiosk & Food Delivery System
5668 2 2 -







