Building a Tide Clock Weather Thing

Mostly-finished tide clock, doing its top-of-the-hour full rotation of the big wheel. I believe a game of Pokémon Monopoly is happening in the background.
Sunny all day, with highs in the upper 80s.

What am I looking at exactly?

Building the device

Video clips from the building and testing process.

Planetary gears

You can read my forum post about how I put this together and get the instructions and SVG file for printing it yourself.
Prototype to figure out how the planets need to be oriented so that they’re right-side-up when they reach the top.
Stepper motor, mount, and gear.

The tide indicator

MDF prototype of the final tide indicator mechanism.
Iterations on driving the gear rack for a tide indicator. Top: an indicator for a 12 hour range. You can imagine how the rack would stick off the edge as the indicator moves to the right. Bottom: Prototype for putting the drive gear on the top of the box. My goal was to have the indicators then dangle over to point at the hour track.

Designing the parts

Top-down view shows the TrayLayout dividers supporting the motors.

Technical implementation

Brains of the device

Speaker pHAT with the Raspberry Pi W underneath. To the right is the Darlington array that drives the stepper motor.

Controlling the lights

The Raspberry Pi (back left) connected to the Trinket (right) to control the NeoPixels and servo of a prototype temperature display. Thing on the left of the breadboard is a level shifter to bring the Trinket’s 3.3v output up to the 5v that NeoPixels require.

Data from the cloud

This happened a lot during final assembly.

Miscellaneous lessons learned

  • Wander around, but then step back. I had a great time iterating on the design and features of this, going where it led me, but I didn’t always look at where I ended up. For example, when I was going to have five servos I knew I needed a separate servo breakout board. When that went down to two I was still thinking “breakout board” and so I put them on to the Trinket. Nevertheless, the Raspberry Pi can control two servos by itself with hardware PWM. I just didn’t think to go back to it.
  • Wax is really good for gears. I was able to eliminate a lot of friction by waxing the planetary gears and the tide indicator. Thanks to members of the Glowforge community for pointing out that crayons are an excellent source of wax.
  • LEDs take electricity. Right towards the very end, the Raspberry Pi started acting kooky. I thought that I might have fried it by accidentally shorting something when I was doing final wiring, but I swapped it out for another Pi and the problem persisted. My problem ended up being that I had all 48 of the LEDs on full blast to do a wiring test. This was using so much of the power supply’s power that the poor Pi was browning out. When I reduced the LEDs to the reasonable brightness I actually wanted, the problem went away.
  • Save space for the wires. I went by the measurements of my circuit boards to design the case, but didn’t make enough accounting for the wires. I ended up having to custom crimp all of the jumper wires just to fit the lid on. Making it ¾” taller and deeper would have saved a lot of work, and would not have been noticeable.
  • Time is money. Sometimes it makes sense to just buy an off-the-shelf solution that will save not-fun effort. (Fun effort is what hobbies are all about, of course.) For example, my original plan was to use individual NeoPixels for the temperature range. I could get 10 of them for just $6! I got as far as connecting two together before I realized that soldering 5mm jumper cables on to surface-mount components was going to be a giant fragile pain in the ass. Since my goal was to put them in an arc anyway, I swallowed my pride and bought the 24 pixel ring. It worked great, will hold up better, and with more LEDs I was able to go from 10° increments to 5° increments, and add in the rain indicator.
  • Servos are pretty fragile. Especially the cheap micro servos I was using. I think I stripped two of them on the tide indicator, since during testing it kept getting set to a position farther than the gear rack would go. It’s worth tweaking your program to make it move gently.
  • I should learn about tools and stuff. Right now I’m doing everything with the laser, and what I can’t friction-fit I’ve been gluing down. I’d like to consider doing more woodworking in my designs to achieve things that a laser cutter alone can’t do.
  • Hot glue comes off with rubbing alcohol. And Krazy Glue comes off with acetone.
  • Adafruit is the best. Their stuff can be on the pricey side (especially compared with getting generic components directly from China), but what you’re paying for is quality, reliability, documentation, fast delivery (next day UPS Ground to Cambridge!) and supporting a cool small business that supports the creativity and education.




Software engineer. I’m into board games, web development, and social justice. (she/her)

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

OPEN CALL for immersive media creators to turn it around for people and planet during the next UN…

How do you update a font awesome version?

The Most Important UX Interview Question

The Ultimate Web Design Cheatsheet

Best Website Dashboard UI Examples for Design Inspiration — #146

How Service Design helped us unify the BBC editorial tools’ experience

Add a Feature

Why You Should Design With Data

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Fiona Hopkins

Fiona Hopkins

Software engineer. I’m into board games, web development, and social justice. (she/her)

More from Medium

2021 — whew what a year that was

Create a Pi-powered air quality meter with PMS7003

Intel Chips

Why C is the most powerful language