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.


44 thoughts on “QR Clock Is Unreadable By Humans And Computers Alike

  1. 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…

    1. 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.

      1. 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.

      1. 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

  2. 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

    1. 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”

    2. 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.

  3. 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.

  4. 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.

    1. 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.

    1. 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.

    1. 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…

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

  5. 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.

  6. 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.

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

  8. 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

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.