Bigger, Brighter, Cheaper, Whiter

Just finished up my prototype for QR clock 2.0!

New and Improved

After the success and popularity of my original QR Clock, I decided it might be a fun challenge to redesign the clock into a more attractive and lower-cost form factor.  The end goal is to make this the flagship product that gets my Ch00ftech Store on its feet.  Before I could start worrying about manufacturing and shipping, I needed a new prototype, so this post is to tell you about what I’ve changed.

I addressed a number of mechanical and electrical problems that I had with the original design, but this time around, I’ve also addressed some of the pricing and supply chain issues I had before.  This clock is actually much cheaper to make than the original, and getting it that way involved some new experiences for me.


The new clock’s PCB is an 8×8 inch square that doesn’t have the unattractive mess at the bottom like the old model.  The board was again printed at Myro and only cost 11.50 each after setup costs.  All of the components except for the LED arrays and the ambient light sensor have been moved to the bottom layer.  <a href=""><img class="aligncenter size-full wp-image-3318" title="IMG_1788" src="" alt="" width="1024" height="683" /></a>  This should help reduce the assembly costs as all of my SMT parts are on the same side.  This was made possible both by the size of the new displays, and by the fact that they contain single-color LEDs instead of bi-color substantially reducing the number of pins required to drive them and saving space.  I even moved the user-interface buttons to the back and replaced them with SMT switches.  All of my vias are covered with soldermask this time, but you might not have noticed looking at the front because I made a point of hiding all my top-layer traces under the displays themselves leaving a clean black border all the way around.  <a href=""><img class="aligncenter size-full wp-image-3319" title="IMG_1782" src="" alt="" width="1024" height="683" /></a>  I added some labeling and branding to the bottom layer silkscreen that should make this a more consumer-ready product.  <a href=""><img class="aligncenter size-full wp-image-3321" title="IMG_1789" src="" alt="" width="1024" height="683" /></a>  Also adding to the consumer-readiness is a new mounting and power system.  The old QR clock simply had some holes along the top that it could hang from.  Thanks to the additional room offered by the larger displays, I was able to move the mounting holes behind the displays.  There are now three holes so that the user has the option of mounting with one or two nails.  <a href=""><img class="aligncenter size-full wp-image-3322" title="IMG_1812" src="" alt="" width="1024" height="683" /></a>  Also to help with mounting are a set of rubber feet that will keep the components on the clock from scratching up the wall it's mounted on.  <a href=""><img class="aligncenter size-full wp-image-3323" title="IMG_1790" src="" alt="" width="1024" height="683" /></a>  This presented a challenge as the 5.5mm DC jack was too thick to fit behind even the largest rubber feet.  I ended up dropping down to a 3.5mm jack with a cable that only just touches the wall.  <a href=""><img class="aligncenter size-full wp-image-3324" title="IMG_1791" src="" alt="" width="1024" height="683" /></a>  I'm still shopping around for a better cable that has a thinner plug housing.  I also moved the cable plug to the center of the PCB figuring that if the clock needed a cable, I might as well make it look attractive.  <a href=""><img class="aligncenter size-full wp-image-3325" title="IMG_1805" src="" alt="" width="1024" height="683" /></a>  Opposing the power cable is the ambient light sensor top and center:  <a href=""><img class="aligncenter size-full wp-image-3326" title="IMG_1806" src="" alt="" width="1024" height="683" /></a> <h1>Displays</h1> So the biggest and most obvious change with this clock is the new display.  I was never really pleased with my display on the original clock.  I originally had difficulty finding square-pixel displays, so I settled on the one square-pixel LED array I could find which happened to have bi-color LEDs (red/green). I powered them both at the same time to produce amberish.  These displays ran about7 a piece and with 9 of them per unit, I was looking at one hell of a BOM cost for something I was hoping to sell for a reasonable price.

My first thought (hinted at in the last post) was to purchase some displays from Futurlec, a shop I hadn’t considered before.  They had square-pixel white displays for almost half the price of the bi-color displays I was using.  Single units ran 4.40, but I was quoted3.30/ea for an order of 1000.  They also had some colored displays for even less.  I really liked the fact that all of the colored displays had the same pinout leaving some options for interchangeability, but I was disappointed to find that the white displays had a different pinout which would require a unique PCB.

I ordered a handful of each, but for some reason my order didn’t ship right away.  After waiting a week with no tracking number, I emailed them and learned that the colored displays had a lead time of “1-2 months”.  Impatient, I decided to drop the colored displays, and just work with the white ones.

I received the white ones and was really pleased with how they looked when lit up:

However, when shutoff, they had a really terrible yellow color:

White LEDs are actually just blue LEDs with a yellow fluorescent coating which together make white.  Most displays will be just a housing for a self-contained white LED, but these guys must have decided to move the yellow coating to the outside where it can be easily seen.

Deciding that the displays weren’t good enough, and running out of shops to search through online, I decided to do something I had never done before:

Shopping on Alibaba is a website you’ve probably stumbled upon when it showed up in the search results for something you were shopping for.  It’s not really an online store, but rather a place for conducting trade.  Manufacturers will post listings for products they make, and buyers can contact the manufacturer if they’re interested in making a purchase.

You can seriously find anything on this site from a hunting raptor costume to a Pringle can vending machine.  The real catch is that most things on the site have a minimum order quantity.  For example, that Pringle machine has a minimum order quantity of 50.

Now one thing that really sets Alibaba apart from other shops is that nothing is set in stone.  Prices, quantities, and even product features are negotiable.  The listed prices are usually just estimates, and “sample” orders can be placed below the minimum order limit.  The only way to find out for sure is to contact the seller and ask some questions.

Communicating with humans over the internet can be kind of scary.  I was lucky to have some experience contacting foreign vendors through my professional work.  The key is to keep your sentences short and to try not to use any pronouns.  It’s okay to be short and blunt; any affectation will only serve to strengthen the language barrier.  You typically just need to provide a quantity and a shipment location and ask for a price.  I found a seller that looked like they might have what I was looking for, and struck up a conversation:


I am interested in the LED matrix part no. XL23884UR-ABC/W in Red, Yellow, and Green diffused.  Please provide a quote for quantities 100, 250, 500 for delivery to Seattle, WA, USA.



And I quickly got a reply from “Dayla”

 Dear Mr. Michael Ciuffo,
Thanks for your inquiry.
For your request,please find the following information:
1.About the led dot matrix,you need common anode or common cathode?  you need white diffused one,right?
2.For green color,we have yellow-green and pure green,which one do you prefer?
3.Do you have any special requirement for the circuit?if yes,please send me your circuit for my reference,   if no,we’ll use our common circuit.
Please confirm the above information,so that I can give you the right price.


If you have any question,please don’t hesitate to ask me.
Have a nice day!
Thanks and best regards,
Dayla Deng

After a bit of a back and forth, I decided to order a handful of their displays.  I asked for 10 red, 10 green, and 10 amber displays in both clear and diffused varieties.  They provided this invoice:

If you look closely, you’ll see “Western Union”.  If you know anything about the internet, it’s that you’re not supposed to wire people you don’t know money over Western Union.  In reality, I believe Alibaba is a pretty safe place, but I’ll only recommend transferring money that you can afford to never see again.

So I wired her the money and awaited my package.  Three weeks later, this landed on my door step:

One wonders if they tried to make it look sketchy.  There’s something about the Chinese people and packing tape.  I’ve been over there and seen them just fold cardboard and laminate it in tape calling it a “box”.  Regardless, they are clearly masters of their craft as my displays all showed up in one piece:

You can see that some of these displays are the clear variety where the LED is visible behind the matrix’s lens.  After firing them up, I noticed that even the diffuse ones weren’t that diffuse as the LED in the center of each pixel was clearly brighter than the edges :

It’s even more obvious in a closeup:

Furthermore, a number of the displays had some cosmetic damage on the edges.  It looked like they got beat up and then someone actually went back with a Sharpie to try to cover it up:

The diffused and clear displays were basically exactly the same part except the diffuse ones were filled with a more opaque plastic.  This did a little to diffuse the LED light, but it did a lot to completely obscure the information on the bottom of the display:

I was concerned that whoever was going to assemble my clocks would have no idea which way the displays went in.

I sent an email to Dayla bringing up my concerns.  She replied with this:

Hi Michael,
Thanks for your feedback and for your request,please find the following information:
1.Because the white diffused led dot matrix added diffusion,so you can’t see the markings,
sorry for my carelessness,now please find the attached picture .
2.For the “hot spot” in the center,it’s very normal,dear,since there is a led inside, if thicken the lens,the dot will bulge out of the matrix display,so it’s impracticable,
but we can add more diffusion next time if you need,so that the hot spot will be not so obviously,but the matrix display won’t be so bright as before.
If you still have any question,please feel free to ask me.
Have a nice day!
Thanks and best regards,

I explained that while I had no trouble orienting the displays, the operator assembling the unit would.  She replied back telling me that they would be marking the next shipment like so:

These guys really love their Sharpies…

I asked about potentially ramping up the level of diffusion in the display, but she told me that the minimum order quantity for a custom plastic was 1000, but I could get samples at 1.5x the normal cost.

I was feeling a little iffy about this order, but my indecisiveness ended when I thought to test all of the displays.  Of the sixty displays I received, one of them did this:

I brought this up and got this in return:

For the problem in the first picture,please check whether it’s empty solder or not,
and you should also check whether it’s connected well or not…

Assuring her that there were no solder (in this case breadboard) issues, I got this as a reply:

If you’ve checked and the problem still haven’t solved,dear,I’m also very confused,
because I’ve never received any problem from my customers for our dot matrix since so many years.

Yeah… it was time to look for a new vendor, but I have to give her credit for her persistence.  After I had pretty much decided to move on, I still got a warm Holiday greeting:

As well as an…unprovoked gchat conversation about a month after I stopped talking to her:

Dayla: Hi,Michael
6:37 PM me: um…hi who is this?
Dayla: Dayla here
me: Oh, hello.
6:38 PM Dayla: Hi,how are you these days?
me: I am well.
6:39 PM Dayla: Very good,do you have holiday for the new year?
me: Yes
Dayla: Wow,great.
6:41 PM So are you come back to work now?
me: I am
6:43 PM Dayla: Michael,I wonder how is our dot matrix?
me: I am sorry, but I have decided to use another manufacturer
6:44 PM Dayla: Why?
me: They offer a higher quality display at similar price. The light is more even on the LEDs.
6:46 PM Dayla: Dear,but I t’ve told you that wthat you mentioned is not the quality problem,it’s can be solve.
6:47 PM And for the price,if you buy 1000pcs next time,we can give you some discount.
6:48 PM me: They also have better markings and larger LEDs
6:50 PM Dayla: Better?But I also promised that we can meet your demand next time,don’t you believe me?
me: I’m sorry Dayla. I have made up my mind.
6:53 PM Dayla: Ok,hope to cooperate with you in the future.

I did find another vendor, and carried out a similar conversation ending with me ordering 10 white and 10 amber LED displays. The whites ran 2.45/ea while the ambers were1.13.

These were from “SHENZHEN LIANG JIA LIANG TECHNOLOGY CO., LTD” and were much better made including both printing to indicate orientation as well as better diffusion:

The amber looked pretty slick, but the white was much brighter especially considering that they were being driven at the same voltage and the white has a higher


.  The datasheet lists the “Ultra Amber” display at 100mcd while the white sits at 180-200, so it makes sense.  The good news is that these displays are pin compatible, so if I decide to change the color, it’s an easy change.

The edges also contained some little grooves to help line up displays used to make a larger matrix.  I was a little off-put by the markings because some of them will be visible to the end-user, but I figure it’s something I’ll probably just have to deal with.

The displays arrived in fairly good condition although one of them was a little busted up:

And a number of them had what looked like a thin layer of epoxy on the sides that prevented them from fitting together very well.  It was fairly easy to remove with a razor blade.  I’m not terribly concerned about these issues.  I will be ordering the displays and then packing them up and shipping them out to whatever assembly house I use, so I’ll have a chance to inspect them personally. I can comb out the few that have issues.

I think I’m pretty much settled on this vendor.  They offer quality displays at a reasonable price, and they can even offer a discount for orders over 1000.

Settled on a display, it was time to update my schematic and layout.

Electrical Changes


There were a few small fixes that I needed to patch up some mistakes I made with the original design.  As mentioned before, all of the vias are now covered.  I also added a substantial amount of bypass capacitance to the power rail using a handful of surface mount 100


F capacitors.

The clock line for the programmer and shift register bank are now split so the display doesn’t go nuts when programming.  To prevent random flashing during startup, I added a pullup resistor to the output enable line to ensure that the display is dark as the software is initializing.

Confident that my code would keep me from driving my LEDs at a 100% duty cycle, I lowered the current-limiting resistance down to 62


to make the display brighter at the cost of temporarily overdriving the LEDs.

The ordering of the shift registers’ outputs was changed slightly to favor a neater layout over neater code.

Previously, I had used a 32.768kHz oscillator as there are a bunch specifically designed for use in clocks.  What I didn’t realize is that the major benefit of a low-frequency oscillator like that is its low power consumption which is very useful for portable devices like wrist watches.

Since the clock was going to be plugged in anyway, I reasoned that I could ditch it for a more conventional higher frequency crystal.  Rather than clocking asynchronously, this new 11.0592MHz oscillator drives the system clock (replacing the 8MHz internal oscillator) which drives the real-time clock.

The 11.0592MHz system clock also provides the benefit of being generally faster than 8MHz which allows me to increase the refresh rate.  It’s more stable than the internal oscillator and enables serial communication over the RX/TX lines should I chose to use that at some point in the future.

Strangely, after soldering the new clock together and updating my code, I found that the clock was keeping really lousy time.  It was running at almost half the rate I expected.  I first suspected something was wrong with my code, but under closer scrutiny, I still couldn’t find anything.

My oscilloscope is too slow to probe an 11MHz signal, but I could probe the output enable line which should oscillate at 1/256th of the system clock.  What I found was surprising.  It was oscillating somewhere around 32kHz.  Curious, I did the math and worked out that 32kHz*256 = 8.192MHz.  Looking closer at my oscillator, I saw this:

I had originally assumed that the markings on the crystal were meaningless production codes, but the 8.19 was pretty damning evidence that this wasn’t an 11.0592MHz oscillator.

I double checked the packing slip and even the bag label, but all of those read 11MHz:

Apparently, someone at Digikey meant to grab some 11MHz oscillators, but grabbed some 8MHz ones instead.  This kind of thing has happened to me before, and Digikey is usually very helpful.  I’ve sent them an email about it, and expect a response shortly.

For the time being, the clock is currently running at 8.192MHz with code adjusted to accommodate.  This is only slightly faster than the part’s internal oscillator, so I can’t do much to increase the refresh rate at the moment.

Software Changes

Because I ditched the low-frequency oscillator, I had to change around what each timer does:

Timer1 is now used to keep real time.  I can only divide the 11MHz system clock by 1024 which still leaves me with a 10.8kHz interrupt which will overflow an 8-bit timer 42 times a second.  Handling this overflow that often would steal too many cycles from other important tasks.

Fortunately, Timer1 is a 16 bit timer, so I can simply have it count up to any number between 1 and 65,535 (for the time being, it’s actually counting to 8000 instead of 10,800 to accommodate the 8MHz crystal).

Timer2 is now taking over Timer1’s original functions handling screen refresh.

The hardest part of updating the software was remapping the display.  A number of dramatic changes were made to the LED ordering, so I had to adjust the code appropriately.  This took longer than expected because my original design kept the LEDs pretty much in order while my new one had them all jumbled up to improve layout efficiency.  Most of my time was spent looking for my original output conversion routine only to realize that I didn’t need one before!

I did come across one bug that actually exists in the original clock.  I found that part of my new clock arbitrarily had a line drawn through it.  This line wasn’t persistent on every power up though.  Occasionally, the line would only reach part way through the clock while other times it was gone altogether.

It turns out that part of my code was pulling values from past the end of an array.  It just so happened in the original clock that that block of code was always empty, but apparently with the new hardware and slightly different software of the new clock, those registers would occasionally be full.  I put a bandaid on the problem for now, but I’ll probably be re-writing the whole thing to tidy up at some point soon.


This is the first project I’ve ever designed to be sold, so I’ve tried to be as critical as possible regarding its appearance.  While I think in general, the clock looks pretty good, there are a few bits that are really bugging me.

The displays look good, but they still have their part number stamped on the outside.  This means that the rather unattractive part numbers are stamped along the right side of the otherwise featureless clock.

Thanks to a tip from Patrick down in the comments section, it looks like I can easily dispatch the numbers stamped on the displays using a dab of acetone.  It comes off really easily!

Also, the display is 24×24 while I really need 23×23.  This leaves an unused column and row, and it places the QR code off-center.  I’m still trying to figure out what I can do with the extra pixels to make the display look better.  I was considering trying to get it to count seconds, but with 47 pixels, that’s not enough to make up a whole minute.  Filling it in solid could work, but that makes the clock look especially uneven in the dark (where it arguably looks cooler in general). If you have any suggestions, let me know.

This could all be resolved by making my own LED matrix, but with the pricing as great as it is on these, I just don’t think I’ll be able to design a matrix cheap enough that does the job nearly as well.

I think the current strategy is to market the project as a combination QR clock and hobbyist LED matrix display.  I might even make some custom firmwares that allow the display to be controlled easily over the serial port.

Regardless, the clock still looks pretty darn neat up on a wall.

Moving Forward

Now that I have my prototype, I’m going to try to raise some money and get some of these dudes made.  I’ve never been a huge fan of Kickstarter, but Tindie looks like a pretty good option.  Unlike Kickstarter, TIndie is a store, and they support pre-ordering rather than “backing”.

With the funds, I’ll probably be looking at Myro to do both my PCB printing and assembly.  I’ve never worked with an assembly house before, so I’m not entirely sure what that’s going to be like.  They list lead times on their site, but I’m sure that doesn’t take into account shipping time.  Besides, I need to order the displays first, and that takes at least three weeks by itself.

I might actually try installing the displays myself.  I’m concerned that Myro might be really good at soldering components, but not so good with cosmetics.  I’d be pretty torn up if I got back an order of 50 clocks with super uneven LED modules.

I timed myself when I was assembling this clock.  The surface mount components took me about 1.5 hours to install, but the displays only took 20 minutes.  Though, this was after the displays had already been inserted once and had their pins straightened.

Another benefit of doing it myself would be the ability to change the color of the clock on a order-by-order basis.  I might even sell the clock with the displays unsoldered at a discount for DIYers.

I just really want to turn this into a turn-key operation, so I’d like to do as little of the assembly myself as possible.

I also need to source a good AC adapter.  The one I’m using right now is from an ebay seller who can provide large quantities, but the cable length is only 3 feet which isn’t very suitable for a wall clock.

Update: A reddit user suggested using micro-usb instead of a DC barrel jack.  There are tons of options for high-current phone chargers that could be used to power it, and the connector itself is very low profile.  I’m going to be looking into it for the next revision.

A quick price estimate puts the parts/assembly cost of the clock somewhere around 60-70 which puts the pricetag for the consumer somewhere around100.  I hope that isn’t too much.

Right now, it’s all an issue of timing.  I’m going to be out of town a substantial amount over the next six weeks, and even if I wasn’t, it’s going to take a while to make these things happen.

I might be drafting my Tindie fundraising campaign at some point in the next few days, but I’m hesitant to launch it too soon.  I’ll have to see how far I can stretch my delivery date promise.  Would you be willing to wait six months to receive your QR clock?

Also, do you have any feature requests?  Is $100 a fair price for you?

63 thoughts on “Bigger, Brighter, Cheaper, Whiter

  1. Yet another interesting blog post from you. Your experiences with sourcing alternative LED displays is particularly interesting, and I’ve heard similar issues with other people who have experimented with sourcing items from alibaba.
    Glad to see you ended up with some better displays after some bad experiences.

  2. I’ve found that the dot matrix printing on LED grids tends to be either water or alcohol soluble. (My solder’s flux gets _everywhere_.)

    $100 doesn’t seem unreasonable – compare with the Bulbdial or Wise Time clocks. I think the only hitch would be the inherent gag factor keeping people from buying it. I’d suggest a 50-second real clock followed by a ten second QR mode. How many arbitrary bits could it encode to maybe use it as a general purpose malleable QR display for commercial uses?

    • Dang, I didn’t even think of that! I don’t have any alcohol on hand, but a quick dab of acetone really does the trick (check out the update above). Thanks for the tip!

      I was hoping to …transcend the “gag-factor” and hopefully land the clock somewhere in “Art-land”. Though it’s impossible to read and totally impractical as a clock, it still looks pretty neat. I could certainly write a firmware to do exactly what you’re asking though.

      The clock can encode 16 alpha-numberic characters which is just uppercase, numbers, and a bit of punctuation. I’m considering adding month and date to the firmware.

    • The parts are all 0603, and the micro-controller is a TQFP-32. The hardest parts to solder might be the capacitors as their leads are totally hidden. I’ve never seen a DIY kit with SMT parts. I figured the rule of thumb was to only do it with through-hole, but if someone was willing to buy it, I’d be happy to supply the parts.

      • Oh, there’s a bit of a market for SMT kits now – I actually find that I prefer soldering SMT to PTH. Through hole still dominates the kit scene though. Too many people are afraid to take the leap, I guess. I really need to try making one of my SMT kits with my old 20W Weller firestick to see if it’s mindset or tools.

        I’d be tempted to get a QR clock for work just for the “ooh, what’s that?” *snap* “…the time?” factor. Hrm. I have 2 weeks for the fundraiser….

      • I find 0805 parts much easier to solder than 0603. But an assembly house won’t care, as their machines should be able to handle parts down to (at least) 0402 easily.
        If you plan on building those on your own, you might want to get the right equipment. Having a good iron always pays in terms of faster and more reliable soldering. I am a particular fan of JBC soldering irons, but OKi Metcals are just as good. If you solder lots of QFPs try drag-soldering – that technique has saved me a lot of time and trouble.
        Another possibility is to get yourself a cheap reflow oven (have a look at
        I have to say your product looks great so far. Every time I return to your website, I am amazed to see how fast you advance in mastering the art of electronics. Chapeau!

        • Part of the reason for this project was to gain experience in both sourcing parts and hiring CMs. I simply don’t have the time to assemble these myself no matter how much I streamline the process.

          I might be looking into a reflow oven however as some of my future prototypes are going to be using LGA parts. Thanks for the suggestion!

  3. Pingback: Making a QR clock bigger, cheaper, and better

  4. Hi there. I wanted a cheap grid of square-ish pixels for a toy for my son, and i ended up doing a grid of high intensity LEDs, driven by LED-driver/shift registers. The LED array is mounted behind a square reflective grid, originally made for office fluorescant overhead lighting (to make the square shape) then some diffuser material on the front to smooth out the color. It looks a lot better in person than it does here, and I do get a hot-spot from the LEDs’ lenses. I should try sanding down the front of the LEDs to diffuse them more… Love your project though! I had no idea that these kinds of LED packages existed!

  5. Pingback: Making a QR clock bigger, cheaper, and better | Daily IT News on it news..

  6. Pingback: rndm(mod) » Making a QR clock bigger, cheaper, and better

  7. Pingback: Making a QR clock bigger, cheaper, and better - About all

  8. Hi!
    Have you thought about using a Micro-USB-connector for the supply? Might be flat enough…

    Regards from Germany,

    Ps: I’d really love to have such a clock, but according to my wife the WAF is not that great as of yet… :)! I’ll stay tuned!

  9. Ch00f, always been a big fan. I don’t have exactly that much for a clock, but I loved your write up. I think a super neat idea would perhaps be to throw some LEDs on the back side for ambient light? Purple’d work pretty dang sweet with the white, or maybe more amber to go with the amber!

    One thing you might look into is making the clock so that it can be placed at an angle–sorta like a desk calender. The USB is a great idea–I hadn’t even considered that.

    • The original QR clock was designed to be a desk/wall clock, but the new one is way too large for a desk. It’d just be obnoxious.

      Interesting suggestion with the backlight. I think that would look good if I had a proper 23×23 display, but with the extra row and column of pixels, the backlight would just hilight how off-center the display is.

      Thanks for the suggestions!

  10. I’d recommend using the extra column for a binary display. That, or you could have a line chase around to show elapsed seconds. Have the line start in the upper right and work to the lower left, around the border. When the line goes solid, the clock updates and the line blanks out and starts the process over. It will give some realtime animation to an otherwise static clock.

    • I thought about the seconds-counter thing. The only issue is how to split up the 47 LEDs into 60 seconds. I think it’s be kind of unsettling to see them tick by slightly slower than seconds.

          • If you do the “seconds chaser” around the edge, does the hardware have the ability to use fading to make it a sort of smooth transition between one pixel and the next, so it’s less obvious that there are 48, rather than 60? I think that could look pretty cool.

          • The hardware isn’t quite powerful enough to pull off PWM unfortunately. It can only display solid pixels.

          • I did not realize you were updating the QR code every second.
            If you updated the QR code every minute then using the outside edge for seconds makes more sense. Fill up an edge over 15 seconds move the code over then fill up the next edge clockwise.
            To help represent the partial (or multiple) seconds that the border LEDs could indicate it is possible to blink or brighten those LEDs based on how much time has gone by.

            Or you could just tell the time in binary hours on the right edge and minutes on the bottom. Making the clock functional at the same time. The random noise probably would not cause QR readers problems.

    • Hrm…that wouldn’t be that difficult actually, and would probably only add $5 or so to the BOM. I haven’t done a current measurement yet, I chose a 2A power supply assuming that all of the LEDs were lit up all the way, though I might be able to get away under 500mA to power it off USB at a lower brightness setting.

  11. Would like to be able to trim these down and put them adjacent to each other. Is the blank areas totally void of any components and traces so it could be cut off before assembly?

    Also is i2c available on the board anywhere at all, or are those pins used?

    • The black areas are totally blank on the top layer, but they contain a few traces on the bottom not the least of which is the traces going to the power connector and ambient light sensor. It wouldn’t be too hard to modify it to remove the border if there was a large enough market for such a project.

      Unfortunately, the SDA and SDL lines are tied up driving data to the shift registers, so the display can’t do I2C unless you were to bit bang it by hand.

      • I request you to remove the border and repo the (usb) power – so the units could be stacked in a grid. Then make it so each one could be addressable. Then we could group them… 🙂

        • You’re not the first to request that. It’s a little too late to do that now, but if I get enough orders for this version, I might just try it for the next.

  12. As for the extra row and column, I would just have the whole QR image shift around at every minute/image change.
    Minute 1: Upper left hand centered
    Minute 2: Upper right hand centered
    Minute 3; Lower right hand centered
    Minute 4: Lower left hand centered
    And loop.

    Now the image bounces around and doesn’t make the extra pixels seem useless.

    • I thought about that actually. I was planning on implementing it for my 1st generation QR clock, but one of the LEDs along the edge was actually burned out, so I couldn’t.

      It wouldn’t be that hard to implement. I’ll bounce the idea around and see if anyone is interested.

  13. Very cool. As for what to do with the extra row you could do a binary epoch time counter. that would use up 32 of the leds, 15 left. you could use those 15 to just do a scanner (a la Kitt from knight rider) that has a periodicity somehow related to the time. like a pendulum.

    possibly make it programmable. or even just a dip switch in back to switch up what the extra leds do.

    • The Jury’s still out on that. There’s a tradeoff between refresh rate and QR processing time. At the moment, I’m running at the highest refresh rate I can without interfering with QR operation. I suspect that there will be a small benefit from the 11MHz crystal, but a huge benefit from better optimized code.

      • Have you had any problems with photos (for QR recognition) seeing only some of the pixels lit up? I remember having oh-so-much fun trying to take photos of LED Christmas lights in daylight, since the camera shutter speed would be fast enough that the 50Hz (in London) ficker would often cause them to be unlit in the photo. I wonder if this would suffer from a similar problem, in a bright enough environment.

        Either way, very cool project. 🙂 I definitely appreciate the perverse aspect of it. I wonder if a “QR time reader” could be built from an AVR, LCD, and a small CCD camera.

        • That is a very valid concern. If the room gets bright enough, you get refreshing artifacts. The higher frequency oscillator/better optimized code should get it to the point where the room will have to be bright enough to wash the display out completely before you get artifacts.

    • I don’t understand how that would help. There’s no such thing as a valid 22×22 QR code. Version 1 is 21×21 and Version 2 is 25×25. The version 1 code could certainly be used for 24 hour time. It can encode up to 16 characters.

  14. Since your QR code doesn’t display the seconds, what about shifting the code left/right/up/down by one pixel every 15 seconds? this way from 0-14 seconds there is a border on the right and bottom, from 15-29 seconds the border is on the left and bottom, from 39-44 seconds it is on the left and top, and then from 45-59 seconds the border is on the top and right.

    This would use that one pixel border that you’re left with.

  15. Great writeup! I’m working on an LED Matrix product and now have another source to consider for the matrix displays.

    I don’t know if you have enough resources on the board to do this, but I was thinking you could have a quick display of a human readable clock, maybe just for one or two refreshes of the display every so often. Just enough so if someone was watching they could catch the time (making the clock a little more practical).

    The $100 price point seems about right, but doesn’t leave much room for you to sell through distributors. Maybe that’s not part of the plan, but think about that for the future. Here’s some details from a good source:

    Good luck on the fundraiser!

  16. I’m wondering if you are considering going ahead with the project even if you don’t reach 50 backers. I see it’s at 42 right now.

    I really want one of these!

      • It looks like you converted it to a store item instead of a fundraiser. It’s giving me a not in stock message.

        Does this mean it coming?

        If so… YAY!

        • Things are a little…strange right now. Once I reached 45 pre-orders, I decided it’d probably be a good idea to just lower my goal to 45 to guarantee I’d reach it. Unfortunately, I didn’t have a chance to do that until it was too late. Anyone who pre-ordered has gotten a message by now telling them that I didn’t reach my goal.

          However, I’ve talked to the folks at Tindie, and they’re going to see if they can retro-actively fix it for me. I have my fingers crossed!

          • Hooray, it’s a go!

            Just got the follow-up email from Tindie that there was a hiccup in the closing and they’re fixing it.

            I think I’m becoming a collector of odd/interesting electronic clocks.

            Chronulator, Bulb Dial, QR Clock!

  17. The new version looks awesome!

    I also tried several different LED Matrix for my projects and always had the problem that they weren’t diffuse enough. Can you name the exact Part No. of the white panels, so that I can try them myself?

  18. Pingback: Making a QR clock bigger, cheaper, and better |

  19. Pingback: Making 55 of Something Without Lifting a Soldering Iron | ch00ftech Industries

  20. Pingback: Adventures in Ordering Pre-Assembled PCBs « adafruit industries blog

  21. How about this for the extra pixels? At T = 00:00:00, all 47 pixels are off. At T = 00:00:01, pixel 1 is on. At T= 00:00:02, pixels 1 & 2 are on. Continue until the first 13 pixels are on. At T = 00:00:14, turn off pixel 1 and turn on pixel 14. Continue shifting the 13 pixels until you hit 47. At T = 00:00:48, turn off pixel 34. Continue turning off pixels until T = 00:01:00. They will all be off, and the cycle can now repeat.

  22. Pingback: Vendor Bender | ch00ftech Industries

  23. Pingback: The Slowest $380 I’ll Ever Make | ch00ftech Industries

  24. Very interesting and Très chic Clock! And can it also be switched to the 24-Hour Radio Format, e.g. 19:31 instead of 7:31 PM is encoded in the QR-Code?

    • The clock does not support 24-hour mode, but a reader improved the software to allow for 24-hour mode.

      You can read about that at the bottom here:

      It looks like the code has been removed. I will work on contacting the author to get it back.

Leave a Reply

Your email address will not be published. Required fields are marked *