Meta-Nixie Clock
I recently caught Matt Mets’ post on hacking a digital photo frame into a clock by generating a static image for each minute of the day, and then automating the action of advancing the image once per minute. This allows for any number of interesting clocks to be made with suggestions ranging from a written-word clock (as Matt’s project did) to photographing various clocks at each minute of the day to photographs of people miming clock hands. I happened to show this post to my husband and he absolutely loved the idea and wanted one for his desk at work. I immediately realized that I had found the perfect Christmas gift for him!I knew I wanted to do more than just pop some pics on a memory card and hack the frame to advance every minute, so I got to thinking and settled on the idea of upholstering the frame in leather, accenting it in brass, and having a vaguely steampunky piece. I found a decent digital frame that had a nice, wide (and, importantly, solid wood) accent frame at my local Radio Shack, went shopping at my fabric store for some split leather, and hit several art and hardware stores to get some brass fittings. After that, I was ready to get started.
First off, I started the upholstery with a couple of layers of batting so I would have a “pillowy” look on the frame. This is because I would later be using a pattern of brass tacks to create a pattern on the frame and I wanted the whole thing to look overstuffed. Once I had the batting in place, I pulled a square of leather nice and tight over the frame and tacked it in place. I then cut out the center and tacked that down tightly.
Next up was marking the pattern of brass tacks I would be applying. I was going for the classic zig-zag offset pattern one might find on an old leather club chair, so I marked off a grid with a fine-tipped sharpie and went to work with the tacks and hammer. (Just before tacking, I made a quick pass over the frame with some dark brown shoe polish to create an aged look)

The tacks didn’t take as long as I expected, and eventually the frame was shaping up just as I wanted.

However, the corners, particularly the interior corners, looked a little saggy, so I decided to do something about that. I rummaged through the brass findings I had on hand and came up with some great brass channel which fit nicely over the inside edge of the frame. After cutting it on my tiny mitre box, I attached it using some strong adhesive, though the pieces were cut snug enough that the glue was hardly needed. With the interior of the frame cleaned up, I added the (admittedly common) brass outer corners which classified things considerably.

Next up was the back. Even though people aren’t going to see the back in regular use, I wanted to cover it to clean it up. Taking the time to do things like that really adds a professional feel to projects. I cut a piece of black art board I had around and attached it with double-sided tape. Once the digital frame was inserted (and a few loose ends trimmed) even the back looked nice and clean.

So, this is the frame mostly complete. Of course that white border is rather unsightly, but I had plans to take care of it. But before doing that, I had a very important thing to decide – what were the images going to be? Well, to be honest, I’d known from the start – I decided to use photos of Nixie tubes for the digits on the clock making a sort of “meta-Nixie clock” – a Nixie without all the hassle of high voltages! (before you chastise me, yes, I would like to do something fun with real Nixies soon, no I’m not afraid of the voltages, and yes, I do thing Nixie clocks have become boring)
Leaving the physical side of the frame for a bit, it was time to tackle creating the images and getting the frame to properly display them. I started by combing Flickr for some good Nixie images. I found these by Flickr user erickanderson. (who built a great Nixie clock and who graciously agreed to let me feature his photos here) Of course I wasn’t going to sit and manually composite 720 images for the frame, so I broke out Processing and ripped Matt Mets’ original sketch for his clock to create this sketch: (Note, I did properly crop and normalize the images before sending them through this sketch)
//Thanks to Matt Mets for the initial version of this, to which the code below //bears only a passing resemblance… //To use this sketch, you will need an image of all 10 digits (all equally //sized and closely cropped) as well as a colon image and a blank spacer image. //These must be in the Data directory in the sketch's directory // Set these to match the resolution of your frame int imageWidth = 480; int imageHeight = 234; //This array holds the names of the digit images String[] imagenames = { "zero.jpg", "one.jpg", "two.jpg", "three.jpg", "four.jpg", "five.jpg", "six.jpg", "seven.jpg", "eight.jpg", "nine.jpg" }; String imageName = new String(); //This will hold the image objects for each digit PImage[] images = new PImage[10]; //This image will be added to the front and back of the clock //image to pad it out to the size of the frame as defined at the top PImage spacerImage; //The colon image used to separate the hours from the minutes PImage colonImage; //The width of each digit. Generally you will take the width of your frame //and divide by 5. (4 digits plus the colon) Since the colon will be much //narrower, you will want to split the extra into the front and back //padding. My frame is 480px which gives me 5 digits of 96px. I chose to //make my colon 26px wide, leaving 70px. I then divided that in two to //arrive at a 35px spacer front and back int digitwidth = 96; int colonwidth = 26; int spacerwidth = 35; int myInt, count=0; void setup() { //Populate the array of images using the image name array above for (myInt = 0; myInt<10; myInt++){ images[myInt] = loadImage(imagenames[myInt]); } //load the non-digit images spacerImage = loadImage("spacer.jpg"); colonImage = loadImage("dot.jpg"); imageMode(CORNER); // Set Processing's screen to the size of the frame so the images won't //be scaled by the frame, get blocky, take too long to load, etc. and //give us all black bg/fill/stroke size(imageWidth, imageHeight); //You can use a different background color, but if your images are //sized correctly, you shouldn't see it anyway background(0); stroke(0); fill(0); //Starts at 1:00 and works through to 12:59 - your clock will start at //1:00 instead of 12:00 when first powered up for( int hours = 1; hours < 13; hours++ ) { for( int minutes = 0; minutes < 60; minutes++) { // Clear the background by painting over it background(0); //Draw the first spacer image at the far left image(spacerImage,0,0); //Draw the colon in the middle image(colonImage,spacerwidth+(digitwidth*2),0); //Draw the second spacer at the far right image(spacerImage,spacerwidth+colonwidth+(digitwidth*4),0); //divide hours by 10 to get first digit, 0 or 1 image(images[hours/10],spacerwidth,0); //mod hours by 10 to get second digit, 0-9 image(images[hours%10],spacerwidth+digitwidth,0); //divide minutes by 10 to get first digit, 0-6 image(images[minutes/10], spacerwidth+colonwidth+(digitwidth*2), 0); //mod minutes by 10 to get second digit, 0-9 image(images[minutes%10], spacerwidth+colonwidth+(digitwidth*3), 0); // Write out an image file. My frame handleded >200 images/folder fine, so //I removed the subfolder code, but you can enable it if you need. //Note the ugly code that pads zeros into the imageName string and which //should be done a different way with string formatting, but, hey, it was //very early when I wrote this. imageName=""; if(count < 1000){ imageName="0"; if(count < 100){ imageName = "00"; if (count < 10){ imageName = "000"; } } } //Use this line if you need to break the images into 200/folder // save(count/200 + "/" + imageName + count++ + ".jpg"); //This line saves the image as a jpg save( "img/" + imageName + count++ + ".jpg"); } } }
With this sketch, it takes about 30 seconds to create all the images for the frame and means that the digit sets could be swapped out easily. I copied the images over to an SD card, popped it in the frame, and viola! I had a clock. Which went from 1:00 to 1:20 then to 1:06… the images were not displaying in sequence on the frame despite being named sequentially! It took me a moment to realize what was going on, but I’d had this problem before with an old MP3 player. It’s important to know that many operating systems (Mac and PC included) don’t necessarily copy files to media sequentially when you use their GUI interfaces. So, even though the files were named 001.jpg through 720.jpg, they were copied in a different order by Finder on my Mac. The frame seemed to be more interested in the order the files showed up in the file table than their names, so they were being displayed out of order. Luckily, there’s simple way to fix this – use the command line to copy the files. (Pop open Terminal, navigate to the folder with the images, and simply type “cp * /Volumes/SDCard/” where SDCard is your memory card. On Windows, use “copy” and the appropriate file paths)
So, I had my frame displaying images, but I needed to advance it every minute. For this, I just took Matt’s code directly, programmed a Real Bare Bones Arduino from Modern Device (it’s tiny and cheap and fit in the frame nicely) and wired it up using an optoisolator to the “forward” switch on the frame. I elected to replace the ceramic resonator with a crystal and caps on the board so it kept better time. Since I was shoving an Arduino in the frame, I chose to use some of the spare pins to run some amber LEDs for lighting effects. I wouldn’t do it again, though. They were too flashy.
So, the frame looked mostly good, the images were in place, what’s next? Well, there’s that ugly white border I wanted to get rid of, and there was the annoying “feature” of my frame – it insisted on throwing a “loading” bar on the screen as it swapped from image to image. I decided to use some brass sheeting to mat down the frame to the size of the Nixie images and lend a little bit more of an ornate look to the frame. I started by sketching out a design and cutting the brass sheeting. I used a rotary tool to add some accent cuts.

I wanted the brass to have an aged look, so I covered it in black sharpie and then used sandpaper at varying angles to sand most of it off. After applying to the frame, I ended up with a nice brass mat.
So, putting it all together and turning it on, I ended up with a very nice meta-Nixie clock as a great gift for my husband Cameron – who absolutely loved it, by the way!
Posted on January 22, 2010 at 6:01 pm by W. Aaron Waychoff · Permalink
In: projects · Tagged with: DINO
In: projects · Tagged with: DINO






on January 22, 2010 at 10:10 pm
Permalink
[...] Aaron decided to make an LCD photo frame for his husband, and it came out beautifully! Called the meta nixie clock, his version uses photos of a nixie clock to tell the time. I love the detail work on the frame and [...]
on January 23, 2010 at 1:47 am
Permalink
[...] Aaron decided to make an LCD photo frame for his husband, and it came out beautifully! Called the Meta Nixie Clock, his version uses photos of a Nixie clock to tell the time. I love the detail work on the frame and [...]
on January 24, 2010 at 4:01 pm
Permalink
[...] creator of this project built a custom frame, upholstered it, added some custom brass accents, and then set [...]
on February 3, 2010 at 11:22 pm
Permalink
[...] seen some awesome nixie-tube clocks, but here’s a faux nixie photoframe clock which could show any kind of nixie tube setup, or any type of clock at all, theoretically. I knew I [...]
on December 27, 2011 at 3:05 am
Permalink
But why attach an external MCU? Many digital photo frames have ability to advance images autimatically every minute.
on December 27, 2011 at 9:32 am
Permalink
@Name: Indeed, even the frame I used advanced every “minute” – unfortunately, in this case that meant every 66-69 seconds! I used the MCU (with a real crystal and not just a ceramic resonator) so the clock would remain accurate.
on July 16, 2012 at 3:04 pm
Permalink
Even in such case, you don’t need the MCU. The “automatic button-pressing device” can consist of a cheap Chinese quartz alarm cloch with miniature magnet attached on its second hand and a reed switch. The magnet will “fly” over the reed switch every minute, emulating pressing the button. The clock can be powered by an LM317T based regulator.
on July 16, 2012 at 3:41 pm
Permalink
An interesting solution, but it’s costlier, more complex, and more error-prone than using the $11 MCU kit I used. However, it has a wonderful Rube Golbergian quality to it that I love.
on July 24, 2012 at 8:06 am
Permalink
Your MCU kit costs $11, while a Chinese quartz clock, а magnet,a reed switch and LM317 with two resistors and two capacitors probably cost together about $4.