Alpha Clock Five

And so today we’re releasing a new kit, the Alpha Clock Five, an open-source, hacker-friendly alarm clock kit, based around an block of fiveultrabright red 2.3″ character height alphanumeric displays:

So, how big are these things?

For scale, here’s one of the displays next to a Diavolino board:

These displays are great in many ways– they’re extremely bright for one –but the downside is that they are actually a bit tricky to drive. The 10 “big” segments each have two LED elements in series, twice in parallel, while the smaller segments have two LED elements in series, but not in parallel, and the decimal points each have a single LED element. To drive each LED element at (for example) 25 mA and 2 V requires 4V, 50 mA to be provided to ten segments, 4V 25 mA to the six short segments, and 2 V at 25 mA to each decimal point. And, it’s a fair number of signals to manage as well.

To solve the problem, we designed a multiplexed driver board, with two LED driver chips at different current set points. A 16-bit constant-current LED driver is preset at 50 mA and drives the ten large segments, while a separate 8-bit constant-current LED is preset at 25 mA and drives the short segments and the decimal place. The multiplexing is in analogy with an LED matrix, where each alphanumeric character comprises one row of our matrix– which just happens to have 54 LED elements inside. One row is switched on at a time by one of five transistors. We used high-current, low-saturation-voltage PNP transistors, type 2STX2220– the low saturation voltage means that you *can* use these to switch a useful 4 V load, even when running at 5 V.

The circuit board is 9.430 X 2.736″ in size, and extra stiff at 0.094″ thick in order to support those heavy LED displays in their sockets. An ATmega644A microcontroller runs the show, and is preloaded with a bootloader so that you can program it like a Sanguinoboard, through a version of the Arduino IDE with added extensions. There’s also a magnetic buzzer so that it can be a full-on alarm clock, and a spot for a Chronodot module, for good timekeeping and battery backup.

Here’s what the front of the “brick” looks like, with the five displays socketed next to one another. There are four right-angle tactile button switches hanging off of the top edge, so that you can adjust the time, alarm time, brightness, and so forth. If you hold the two rightmost buttons for a couple of seconds, it brings you to the options menu, where you can (for example) switch between 12 and 24 hour modes:
The circuit board, laden with alphanumeric displays, sits inside an acrylic case:

The front side of the case is deep red transparent acrylic (#2423 red transparent, should that come in handy), and serves to increase the contrast of the displays. The back of the case is gray transparent acrylic, and the top and bottom are black. The top surface has engraved labels for the four buttons, and four button keys cut into the acrylic. The thin beam flexes easily, contacting the right-angle switch below, when the circuit board is there.

The back of the case is transparent so that you can see the circuit board. There’s also a white LED “night light” on the circuit board that can be enabled or disabled with the top buttons, and the sides are open to provide easy access to the TTL serial interface.

Obviously there’s a lot that could be done by hooking up a nice 5-character alphanumeric data display device to your computer.

On top of everything else, Alpha Clock Five is also a full-fledged alarm clock, right down to the snooze mode— although the word “SNOOZE” didn’t quite fit on the display (it says “SNOOZ,” if you must know).

Perhaps the biggest challenge for making it “bedroom compatible” was that it needed to not just be able to be extremely bright, it also has to be able to go crazy dim– which it can do, with fourteen levels of adjustable brightness.

And it has some fantastic features as an alarm clock– for example multiple alarm tones and digits that are big enough to see even if you normally wear glasses.

And with a bit of code, it can be so much more. Soon, yours might say spell out “TRACY WAKE THE HECK UP” or use a couple of its spare I/O lines– and only make you coffee if you actually manage to get up on time.

So I today received my Alpha kit (here in Switzerland, the land of clocks!) The customs duty was 33 sfr, but ah whatever.

The unboxing experience was wonderful: great attention to details, parts lists, even the "Hello" on the package :) Also, the instruction guide is just amazing, such artful layout. I was impressed with the Peggy2 guide but this one is even more fantastic. Thanks for putting so much into this little project and I can’t wait to get it put together and booted up!

AAARGH!! A month or two ago, I posted to the adafruit forums about my idea of using similar displays for a clock! And only now do I see this clock!! (after ordering an Arduino, parts, etc., to build the clock)

Well… at least it’s all in a kit. I really don’t like having to gather a zillion different parts from different sources. And the case… I have no idea what I’d do for a case (finding one on my own, I mean).

Does the clock show the date? Or seconds? For me, a clock with no date is like pants with no pockets. (I don’t mean "hackable" to show the date.)

Since each "digit" can go up to 19, the clock can display YY.M.DD for the date. For the time with seconds, it could show H:MM:SS. (For military time with seconds, you could show the "2" of 20, 21, 22, 23 by lighting the "northwest" and "southwest" diagonals, along with the lower left horizontal, but that is not very pretty.)

The first version of the software does not display the date or seconds. These are things that we might add, under our set of proposed "additional display modes," but there are definitely tradeoffs to consider in terms of clarity versus capability. For example, what button (or buttons) will display the date, or do we just scroll it by occasionally, and how do we set which mode we use? There are a lot of different ways that this could be done, and even lots of different good ways. We’ll give it some thought.

It’s a versatile device and there are evidently many ways. Some ideas:

Date on demand would seem like a good "basic" option.

With several buttons available, there must be scope for triggering a scroll of the date in a chosen format with a simple press. I think you are most likely to need the date at occasional specific times rather than periodically through the day.

For seconds, again you could have this for a few minutes on demand, dropping the hour. For a continuous seconds indication, since you only need the first 4 digits for HH:MM, the last digit could be used as a "clock-face" for seconds (in 7.5 second increments) with the DP pulsing single seconds. Top and/or bottom DP on the LHS could be used to indicate am/pm in that mode.

Each of the buttons already does *something* on a simple press. The most logical place to add display options would be in the settings menu. It could be the case that a different display setting would, for example, replace the alarm function in the interface with a date function.

Why isn’t "set time" itself in the main settings menu? I mean, how often do you really need to set the time? If you are using the Chronodot, not very often. And even without a Chronodot, electronic clocks that gain or lose time tend to do so consistently. I would put in a software option for this, analogous to the "fast / slow" lever on a wind-up clock.

"Set date" could be a separate option in Settings, or it could simply be an extension of "set time": after all, what is the most logical thing for the date to do when the time goes past midnight in either direction?

And as I was saying, the beautiful thing about these displays is that the digits are not 0 to 9: they are 0 to 19, or with a bit of uglification, 0 to 29. In other words, you can show the number "10" with just one digit! (For "10", use all six vertical segments, and the upper right and lower right horizontal segments.) So, you could show a time like "12:00:05" just like that, with no problems whatever!

> I would put in a software option for this, analogous to the "fast / slow" lever on a wind-up clock.

Even better: Make it learn. Whenever you change the time (inside some interval from the internal time) the clock itself could adjust it’s "lever". The only thing you need is a way of storing some parameters like the amount of time passed since the last adjustment and one of the many machine learning algorithms out there. (It’s a one-dimensional problem, so almost any algorithm should be extremely simple to use)

> [next paragraph]

You can not only display a 10 but also the complete SNOOZE. Put two O’s diagonal to each other, and just to make it look better make the adjacent N and Z smaller and push them in one of the two possible corners. You can’t really shrink the S and the E but you can make them slimmer if that helps. Just experiment a bit. I think Characters which look slightly out of place are a perfect representation of the state you’re in when you hit the snooze-button…

I used this reasoning: when the alarm is turned off, the alarm time is irrelevant. So, pressing "snooze / set alarm" when the alarm is off could be used to show the date. This is what I did.
This is also good as a reminder for forgetful people, as this way, you cannot set the alarm time without turning the alarm on!