Solar-Oriented, Arduino-Powered Clock

Picture of Solar-Oriented, Arduino-Powered Clock
This is a clock designed to keep accurate time (independent of atomic or GPS), display local sunrise, sunset and solar noon, and also adjust itself for daylight savings time.

I wanted the clock to be easy to use and be flexible. The setting functions are menu-driven, you set each parameter one digit at a time (with live data validation) and you can abandon changes if you want. You can have 12 or 24-hour time. It uses a bright, legible VFD character display - you can choose even more readability with a 2x3 big-character mode.

Finally, VFDs are bright and readable, but sometimes you don't want them lighting up the room. So, you can set a schedule of when the display is bright, dim or off. You can turn the display on or off any time you want, as well.

I hope to go over key elements of the software and hardware design to help you in building a clock just like this one or to give you ideas for anything that needs menus, data validation, timekeeping and so on.

Remove these adsRemove these ads by Signing Up

Step 1: Design Choices

Picture of Design Choices
As stated in the intro, I wanted the clock to be easy to use, accurate, simple but also flexible.

Easy to use:
- menu-driven setting options
- digit-by-digit setting (who wants to go up or down to set something like longitude?)
- data validation to keep the user from inputting impossible time, date, location etc...
- buttons match the way it is used, eg. you want to look at it while setting, so the left button is really the right button
- most common functions on their own button, eg. display on/off, big/small digits, etc...

- must keep time accurately without using radio time; DS3231 RTC is accurate to 2 ppm/year or approximately +/- 1 minute per year

- no buttons visible anywhere except the back

- allow adjustment of DST start and end
- allow 12/24 time
- support display brightness schedule

I suppose you can add to "Simple" that it uses the Arduino platform. There isn't actually an Arduino board inside, though you could use one; I used a Modern Device RBBB Arduino clone and a Wicked Device RBBB shield board. I chose the RBBB because it's cheap, flexible and sports a power jack, which I needed anyway and is a pain to do properly on protoboard. I chose the Wicked Device RBBB shield as it supports the RBBB and because it gave me sufficient protoboard space to mount a 2032 coin cell holder for the DS3231 backup power and have a header for the 14-pin cable to the VFD display.
PICme1 year ago
Its a great project which I would be interested in building unfortunately I couldn't afford the hefty price of a VFD display. Thanks for sharing
uhclem (author)  PICme1 year ago
You can use a regular HD47780-compatible LCD. Other than the brightness command for the VFD it should work with no modifications. You'll have to add a 10k pot for the contrast adjustment and a current-limiting resistor for the backlight.

BTW VFDs are now sold directly in single quantities off the Noritake website. They often have sales that bring displays down to the $20 range.
uhclem (author) 2 years ago
That's how it comes, though I replaced one of the end panels with blue acrylic.
mkuhn292 years ago
Did the enclosure come like that or did you have to modify?