QR clock is unreadable by humans and computers alike

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.

Comments

  1. Bogdan says:

    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…

    • ch00f says:

      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.

  2. six677 says:

    well, my phone reads the photo as 10:40PM

    • Joe says:

      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.

    • vpoko says:

      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.

      • tgb says:

        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

  3. matt says:

    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

  4. dave m says:

    why not add a little RC filter to those LED’s to cut out the flickering?

    • Hammerhead says:

      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”

    • ch00f says:

      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.

  5. raidscsi says:

    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…

  6. raaab says:

    finally, a useful application of QR

  7. Ren says:

    A candidate for “most useless machine” B^)

  8. kalleguld says:

    Brilliant homescreens on his phone.

  9. Simon says:

    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.

  10. daenris says:

    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.

    • daenris says:

      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.

  11. tz2026 says:

    https://github.com/tz1/qrduino

    It takes under a second for something of the size above.

    The spec calls for a wider white outside.

  12. tz2026 says:

    http://harleyhacking.blogspot.com/search?q=qrduino

    With pictures. I’m using a 328.

  13. JB says:

    Great build, very nice as ART and a conversation piece. Agree that is useless as a clock :D

  14. Alex Rossie says:

    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.

  15. Alex Rossie says:

    Has anyone reviewed the code? Seems like a HELL OF A LOT of code for such a simple task

    • ch00f says:

      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.

  16. cb says:

    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.

    • Jon says:

      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…

      • Jared says:

        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. =]

  17. Craig says:

    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.

  18. jim.chien.andalusia says:

    Pft. I’ll just use my augmented reality vision to replace it with an ordinary clock face.

  19. Hirudinea says:

    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/

  20. N0LKK says:

    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.

  21. EdgarVice says:

    I bet he doesn’t have a QR-clock app.

  22. slowJim says:

    Very clever and unique idea. I’d love to buy one of these. Too lazy and inept to make it myself.

  23. nomeacuerdo says:

    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

  24. QRCodeART says:

    Hi, mine is online since 2010 http://qrcode-art.de/qrclock.html

    regards

    @QRCodeART

  25. spike says:

    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.

  26. sRc says:

    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

  27. rue_mohr says:

    hahaha love this.
    AWESOME! thankyou for bringing us this one.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 93,826 other followers