Tide Tracker
Two solar-powered tide trackers built with a Raspberry Pi Zero, an e-ink display, and custom 3D-printed solar panel stands.
Problem
A friend lives directly on the water; a family member likes to go sailing on a nearby river. Both wanted an easy way to see the tide at a glance. I had roughly one month, from the idea’s conception in late November 2023 to completion in early January 2024, to design and assemble two solar-powered tide trackers as gifts.
The device plots tide height versus time for a given location and displays the plot on an e-ink display. The data comes from NOAA (the National Oceanic and Atmospheric Administration), refreshed every two hours.
![]()
![]()
Constraints
- Monetary cost — This constraint applies to most projects.
- Aesthetics — The display had to be large enough to be readable and stand out, but not so large as to be prohibitively expensive. I used a black-and-white e-ink display rather than a multicolor one for cost and simplicity, and built a frame to enclose the electronics.
- Solar powered — It seemed natural for a device that tracks tides to be solar powered. Being low-power also means it can run on battery alone, making it portable.
- Time frame — The idea came together in September 2023. I didn’t have materials until Black Friday in November, with a self-imposed deadline of Christmas.
I ended up building two units rather than one:
- The two recipients live near different rivers.
- The picture frames ship from Amazon as a four-pack at a low unit price. To fit all the components into one enclosure, I stacked and glued two frames together. Two frames matched the lighter, sandy color scheme of my friend’s house; the other two matched the darker, rustic scheme of my family member’s house.
- Nearly 80% of the total time went into designing the physical layout and writing the code — a one-time cost. The work from the first unit could be reused for free on all subsequent units, aside from parts and assembly time.
![]()
![]()
Approach
The plot below is a snapshot of the tides in Fort Myers, FL on January 5, 2024.
![]()
A few notes on reading the chart:
- The y-axis is tide height; the x-axis is time.
- The black bar along the curve marks the section corresponding to “now.”
- Light regions represent daytime; dark shaded regions represent nighttime.
- When midnight passes, the graph shifts so the center always shows noon of “today.”
- Sunrise and sunset are shown in the upper-right corner and on the plot itself.
- High tide and low tide times are labeled near the corresponding peaks and valleys.
Height is measured relative to the mean lower low water (MLLW) level — the average low tide over roughly the past 19 years. “Now” is represented as a sweep along the curve rather than a single point, since a continuously refreshed point would defeat the purpose of a low-power, two-hour refresh interval.
Power
The tracker runs on a 4500mAh LiPo battery and can go several days unattended. It charges over USB-C, with five JST connectors for solar panels.
![]()
![]()
I also designed and resin-printed custom stands for the solar panels:
![]()
![]()
Extensibility: changing location or network
What if my friend moves, or changes their Wi-Fi? I built a configuration webpage hosted on the device itself, and the internals leave room to reach the setup switch without disassembling the frame.
![]()
If the device loses its Wi-Fi connection, an error screen appears:
![]()
![]()
Flipping the internal setup switch boots the Raspberry Pi into a mode that broadcasts its own Wi-Fi hotspot and hosts the settings page:
![]()
From a phone, the “tide-tracker” network becomes visible:
![]()
Connecting opens a configuration page for entering Wi-Fi credentials and the NOAA station to track.
![]()
Result
Both units have been running unattended at their respective homes since early 2024, updating every two hours from live NOAA data. Full source is on GitHub, including the Wi-Fi fallback logic: on startup the device saves its current working connection, and if a new configuration attempt fails, it automatically reverts rather than leaving the recipient with a dead device.
Reflection
Designing for two different recipients up front — rather than building one and improvising a second — meant the real engineering cost (enclosure design, code, the config webpage) was paid once. Building the failure path (no Wi-Fi, bad credentials, hotspot fallback) mattered as much as the happy path, since these devices are gifts I can’t casually walk over and debug.