Enginursday: Battle of the RTC

New tutorials and Arduino libraries for the DeadOn RTC and Real Time Clock module breakout boards – plus, a fun little analog clock project.

I have a project on the near horizon that needs relatively accurate time counting -- something a little more dependable than ticking off millis(). In these days of "connect-all-the-things," finding the time is often just an NTP request away, but if your project isn't internet-connected, a Real Time Clock (RTC) (or GPS) is the best time-keeping option available.

We've got a pair of RTCs in the SparkFun catalog -- the DeadOn RTC Breakout and the Real Time Clock Module -- both based on Maxim ICs: the DS3234 and DS1307, respectively. As I was browsing through the product pages for each, I noticed they were both lacking in the documentation section, with no hookup guides and sparse (to put it nicely) example code (the RTC module had PIC16F88 code! Yikes, that's an oldie!). So I decided to remedy that situation first.

I present the DeadOn RTC Breakout Hookup Guide...

DeadOn RTC Breakout Hookup Guide

October 6, 2016
An introduction to the DS3234 real-time clock (RTC), example wiring diagrams, and an Arduino library!

... Real Time Clock Module Hookup Guide...

Real Time Clock Module Hookup Guide

October 6, 2016
A quick introduction to the DS1307 RTC module and a hookup guide for the SparkFun Breakout.

... and Arduino libraries for those boards' chips: the SparkFun_DS3234_RTC_Arduino_Library and the SparkFun_DS1307_RTC_Arduino_Library.

(There's still plenty of work to be done on those libraries. Nate's "Genericizing Arduino Libraries" post from earlier this week is a good place to start. Additionally, both libraries share a lot of common algorithms; instead of copying and pasting one to the other and replacing some registers, I should create a parent class that keeps those shared functions in one place. Revisions to come!)

RTC Showdown

Even though they ultimately serve the same purpose, the RTC breakouts offer some unique differences. The DS3234 on the DeadOn RTC uses an SPI interface, while the DS1307 talks over I2C. Mostly out of laziness, I prefer I2C -- two fewer wires to route!

RTC showdown

The DS3234 is the only chip that supports 3.3V supplies, which, in a world of increasingly lower-power devices, is a big bonus. Plus, it includes a pair of programmable alarms -- a nice feature to be able to offload from your µC.

If you don't have a specific need for programmable alarms, SPI, or 3.3V capability, I suggest going with the DS1307 on the Real Time Clock Module. You'll benefit from far lower power consumption -- the DS1307 can run for decade(s) on a coin cell battery, versus just a couple years for the DS3234 -- and save a little money.

Analog Time Meter

Finally, a quick project: While I was plugging away at documenting the RTCs, ThinkGeek's new Analog Voltmeter Clock caught my eye. We've got everything in our catalog to make it! I grabbed a few Analog Panel Meters and, using the template posted by EthanS. (thanks EthanS.!), swapped the voltage display for time displays.

Swapping out the analog meter display

Then I banana-cabled everything together, modified the RTC demo code to analogWrite to a few pins, and voila! Panel meter clock:

Wiring up the analog meter clock

Clocks are one of those classic projects everyone has to make at least one of. I'm guessing for a lot of us (me included), a clock was our introduction to soldering, programming, or even analog electronics. Hopefully this simple project serves as inspiration for many more! If you want to make an analog panel meter clock of your own, here are a few links:

Then throw it in a red box and stick it on your shelf!

Box analog panel meter clock in action