The clock is a perfect technology. For just a few dollars, you can buy a digital wristwatch and chronometer able to keep extremely accurate time for years without winding a spring or replacing a battery. Anything ‘improvement’ on the design of a clock only makes it harder to read, a feature exploited by the very 1337 binary clocks we see from time to time. [Ch00f] decided it was time to give way to the march of progress and build a completely unreadable clock. He came up with a QR code clock that is unreadable by humans and cellphones alike.
The hardware is built around nine 8×8 LED matrix panels resulting in a 24 x 24 pixel display, perfect for displaying a 21 pixel square QR code. The LED drivers are a standard multiplexed affair, but this project really shines in the firmware department.
The microcontroller [Ch00f] used – an ATMega328 – is far too small to store the 1440 QR codes for every minute of the day. No, this project would have to dynamically generate QR codes on the fly, not exactly an easy problem.
After looking over the official QR code standard, [Ch00f] wrote a rather large program that turns alphanumeric sequences into QR code. This runs on the microcontroller every minute, generating a new QR code for every minute of the day.
It’s nigh impossible for a human to read a QR code, but [Ch00f] figured he could make his project even less useful. By multiplexing the LEDs at a very low duty cycle [Ch00f] made it impossible for a camera to capture the entire QR code, even though the pattern of pixels is still visible to the human eye. A fabulously useless build that really steps up the game for unreadable clocks.
Video after the break.
[youtube=http://www.youtube.com/watch?v=DLVAhHYnrbo&w=470]
The build is great and beautiful. Generating the code is clearely the hardest part of the software.
But, since QRs are made to handle noise, couldn’t some sort of human readable display of time be included? And of course, the code should be readable the regular way. I mean, just to make this thing still user readable…
I talked about this towards the end. Such a small QR code doesn’t leave much room for error correction. This version only stores 16 characters as it is and allows for 7% error correction.
Stepping up to a larger code and increasing the error correction rate could accomplish exactly what you’re talking about.
well, my phone reads the photo as 10:40PM
Read the article.
It says the refresh rate is made too slow for a smartphone to capture the QR code. It doesn’t apply to a still picture.
worked fine in the video did it not?
Mine even managed to take it from the video too although my old phone couldnt focus well enough on it
Hackaday got it wrong. It certainly does work in person. In the article, I just included that it would be funny to lower the refresh rate to the point where a computer couldn’t read it.
In reality, it works just fine.
It should depend on the shutter speed of your phone’ camera. If it’s slow enough, it should be able to get all of the pixels.
i love the idea of being low duty cycle to break cellphone readers… i mean… who would pull out a qr scanner to read the time… i think all smartphones nowadays have a clock feature… correct me if im wrong though. Its more of a piece of art commenting on the clock rather than a cool clock
I like It. The information is clearly visible yet completely obfuscated. Humans recognize the code but don’t know how to interpret it. Machines know how to interpret it but cant recognize it.
There is a philosophy PhD in there somewhere
why not add a little RC filter to those LED’s to cut out the flickering?
I will just add a citation here:
“Read the article.
It says the refresh rate is made too slow for a smartphone to capture the QR code”
“is made” like “on purpose”
Well, firstly, I was able to get the refresh rate up high enough to work with a cellphone (as demonstrated in the video). Although I wish I had the processing power to make it faster as you can still visually see it refreshing if you dart your eyes back and forth.
The problem with any kind of capacitance is that the pins are multiplexed, so adding capacitance would cause ghosting effects that would cause the image to bleed on to different rows and columns.
Why not just take a long exposure of the clock? It only updates once a minute, so a 1 second exposure makes it readable again…
finally, a useful application of QR
A candidate for “most useless machine” B^)
+1
Another +1 :)
Brilliant homescreens on his phone.
Damn that’s a lot of timetelling apps !!
Also the headline is kinda misleading. Normally the QR clock is perfectly readable by smartphones, cameras and whatever, but it’s possible to set the duty cycle low enough to make it unreadable by those. It says so in the original article in the section about timing.
As far as I can see, the actual article says absolutely nothing about this clock not being readable by a QR scanner, and in fact he demonstrates using a QR scanner to read the time in the embedded video.
Ah, okay, I did find the reference. He does mention briefly that he COULD set the refresh rate low enough to make it unreadable to computers under the “Refreshing” section. However, that is in no way the intent of the build so I’m not sure why HaD decided to play it up as if it were.
https://github.com/tz1/qrduino
It takes under a second for something of the size above.
The spec calls for a wider white outside.
http://harleyhacking.blogspot.com/search?q=qrduino
With pictures. I’m using a 328.
Great build, very nice as ART and a conversation piece. Agree that is useless as a clock :D
Love it! Whats the duty cycle? Maybe someone could point a D/SLR at it with a long exposure time to get a decent photo.
Or multiple photos to try and catch it all.
Not sure why HaD is playing up the low refresh rate thing. It actually refreshes at about 20-30Hz which is more than enough for a cellphone to pick it up (which is demonstrated in the video).
Has anyone reviewed the code? Seems like a HELL OF A LOT of code for such a simple task
It’s very inefficient, but I’m not much of a coder, so I’m happy that I got it working at all.
I think I end up moving the output array through three different formats:
1) The original binary string
2) The string organized into a QR code
3) The QR code string optimized for output to the display.
I might spend some time in the future optimizing the code. If I can get it to create the QR in less than a second, I could have it update once per second. I also want to add a calendar function, as I have enough extra characters to do that.
I’d like to insert IR leds in each cell, and try lighting them up to create a different code to cameras than what’s humanly visible.
exactly what I was thinking ;) Most phones have an ir filter though, but I heard the iphone 5’s isn’t very good thanks to the sapphire crystal glass… I’m probably wrong though…
They have terrible IR filters; all of them. Take out your phone and point the camera at a TV remote as you buttons on it. You’ll see the IR LED lighting up on the remote. This is a good way to test if your remote is actually sending anything, and also a good way to check for active fiber connections. =]
I’ve had an idea to use QR as a way to transmit data wirelessly before. The sender would have a setup like this, and the reciever would use a camera to read the data being sent.
Probably not nearly as efficient as ir or rf, but as an art piece it would be an interesting way to transmit binary data.
Pft. I’ll just use my augmented reality vision to replace it with an ordinary clock face.
Very nice, but if you want to make the time even more obscure (to humans anyway) you should go for infrared LEDs, like this hack…
http://hackaday.com/2011/03/02/led-artwork-disappears-right-before-your-eyes/
A more interesting clock would be a clock that resembles a QR code, with easily discernible Numerals in it. That alone will reaffirm to those who already know you’re strange, but they may appreciate be able to quickly see what time it is.
I bet he doesn’t have a QR-clock app.
Very clever and unique idea. I’d love to buy one of these. Too lazy and inept to make it myself.
If you’re seriously interested, shoot me an email.
Brilliant. I would totally buy one. Also it’s pretty clever that he scrolls through 4+ pages of clock apps to open the QR reader, to finally know the time :P
Shoot me an email if you’re seriously interested.
Hi, mine is online since 2010 http://qrcode-art.de/qrclock.html
regards
@QRCodeART
even if the refresh rate were slowed down, you could still read it with a computer, you just need to take a time-lapse exposure to get all the pixels. n.b. this method works even if the refresh rate were slow enough for a human to only see part of it at a time, the only way to make this unreadable by a computer would be to lower the refresh rate enough that the whole code is never actually displayed. i.e. change the code every second but it takes 2 seconds to display the entire code! Of course at that point its simply a non-functioning clock!
The slow refresh rate would only defeat phones/devices that do not allow you to control the exposure settings.
well that part at the beginning where it was cycling rapidly my phone had a shot at anyway… picked it up fine… multiple times. now my QR code history got flooded with different codes it read in that small lapse of time
hahaha love this.
AWESOME! thankyou for bringing us this one.