Using a flashing LCD monitor to transfer data

lcd-screen-data-transferWe love the concept of using an LCD screen to transfer data. The most wide-spread and successful method we know of is the combination of a QR code and the camera on a smart phone. But for less powerful/costly devices data can be transferred simply by flashing colors on the screen. That’s what [Connor Taylor] is testing out with this project. He’s using a TEMT6000 light sensor to turn a white and black flashing monitor into binary data.

So far this is just a proof of concept that takes measurements from the light sensor which is held in front of a Macbook Retina display with different backlight levels. At 3/4 and full brightness it provides more than enough contrast to reliably differentiate between black and white when measuring the sensor with the Arduino’s ADC. What he hasn’t gotten into yet is the timing necessary to actually transfer data. The issue arises when you need to have multiple 1’s or 0’s in a row. We’ve tried this ourselves using an LDR with limited success. We know it’s possible to get it working since we’ve seen projects like this clock which can only be programmed with a flashing screen.

[Connor’s] choice of the TEMT6000 should prove to be a lot more sensitive than using just an LDR. We figure he could find a way to encode using multiple colors in order to speed up the data transfer.

73 thoughts on “Using a flashing LCD monitor to transfer data

        1. My grandfather had a 5 language phrase translator and an electronic crossword dictionary, got both of them after he retired though. I don’t think he’s saying, “My grandfather had one since he was a boy scout” :-D

    1. You beat me to it. I owned one of those. You had an application on the PC that managed the data, like phone numbers, dates, etc. You then programmed the watch by holding it to the screen, which then flickered to transfer. It was one-way, and the data was flashed every time in totality.

      It was decent back in the day before the ubiquity of cellphones in the pager era.

    2. Dammit, should have looked at the comments first, I’ve just sat drooling into space for 10 minutes trying to remember where I’d seen this before, and on what, I’d just got to digital watch with a databank feature and was mentally dickering between timex and casio :-D

      1. That’s the first thing that came to my mind as well. Multiple Sensors and a clock signal.

        Further thought: write a bootloader for this, might be a nice way to get new firmware onto devices made for people who are not that much into micro controllers.

  1. I did something similar to this for an outreach program to allow them to transfer new waveforms to their little synthesizers. I used BiPhase Mark Code (very similar to Manchester Encoding). Using JS one runs into some issues at higher speed that have to do with javascript being a very bad timer. You can get small improvements by creating a video on the backend that is the transfer. Using multiple light levels/colors is also an interesting concept that I was thinking about implementing, but never really got around to it.

    1. Was it? I thought it was a little different, using the bottom 5 lines of the picture or something…. meaning you needed access to the signal rather than using an LDR/LDT/LDD

    2. I remember that there was a TV show about computers that flashed a white/black square in the corner of the screen for a few minutes – as the program’s were not just for the BBC Micro (the BBC only supported that computer) it must have been the ITV show database – this would have been around 1983/4 in the UK… So nothing new here… :-)

      1. I remember that show. You were supposed to wire a photo-detector to an audio cable. Tape the detector to the screen and plug it into a tape recorder. Converting light to noise. I wonder if anyone actually did it.

    3. I remember watching an American Tech show on NTL cable in the 90’s here in the UK that did something similar, the bottom right corner had a black and white square that flashed out a data transmission for a free software giveaway. It is so long ago that I cant remember the name of the show.

  2. Would it be possible to briefly flash an color in between to signal that the next bit is coming, so black is 0, red is 1, green is the “next bit” signal. I know somewhere very very little about binary, so feel free to ignore me if what im saying is a bad idea or just plain wrong.

  3. I suppose it depends on the accuracy of the sensor, but suppose you have 4 colors: red, green, blue, and white you have from 0b00 to 0b11, either bit could be a clock bit, OR you could transfer 2 bits at a time, and in such a case perhaps return to black in the case of repeating colors.

  4. If it can detect 4 colors then it can have its own clock signal built in. Lets assume white and blue = 0 while black and red = 1. Now whenever you have multiple 1s or 0s it can use the alternative color. The color change always shows the next bit even when the bits are the same.

  5. About 13 years ago I was given a keyring fob that had an alphanumeric LCD, some buttons for selection and a CD with software to put addresses and phone number in. The application then flashed a square on the screen you held the fob up to. I though the idea was neat but the execution was terrible. The thing ended up in the bin not soon after. This was back when everyone was drooling over those overpriced Palm Pilot things.

  6. if you keep it just black and white, it should be trivial to keep the timing in check; start a timer, wait for the color to switch and the time between each change is the data, if it’s longer than threshold it’s a 1 otherwise it’s a zero, rinse and repeat until an end of line character or timeout or something like that. not sure for color, though.

  7. “We love the concept of using an LCD screen to transfer data. The most wide-spread and successful method we know of is the combination of a QR code and the camera on a smart phone.”

    Actually, the most wide-spread of tranfer data with an LCD is making visual representations of abstract computer systems and then pushing that to the LCD screen, so a human reciever interprets such data.

  8. Back in the 90’s I had a small keychain “PDA” that kept a list of names, phone numbers and small notes. It had a sensor and an LED on the back with tapered plastic bezels. One was countersunk, the other an outside taper.

    IIRC info could be laboriously input directly but the faster method was to use the included Windows program which would then blink a white dot in a black square on the screen.

    The reason for the LED and opposite tapers was to hold two of the devices back to back to transmit data between them.

    1. Ridiculous, and how do you propose to do this, threads of glass? We’ll have them everywhere, all die of blood loss from the breakages…. and just where the hell are you going to get a nixie tube bright enough that you can make out what number it is through a few feet of glass, eh? Preposterous.

      1. ahh,
        the exact words from before amplifing tubes!

        you forgot the part about detectors arent fast enough to transmit _*moving*_ pictures! lol

        later, after amplifier tubes were invented, the light-sensor TUBE solved this, and mechanical TV was born

        PS: a single NEON glow bulb actually WAS the light-source in some early mechanical TV’s… the ONLY way to watch was in complete darkness

  9. Very cool. This would be great if you wanted to exfil data surreptitiously from a terminal in a high security environment. Additionally, if you can get control of things like lights on a router hardware i believe it has been demonstrated you can use them to do something similar. :D

  10. Optical discs use ‘eight to fourteen modulation’ to ensure that there are never too many 1’s or 0’s in a row and so to keep the reading clock in sync with the data. Before starting the actual data transmission, a short bit of fixed data is used to tune the data clock. It might be a little wasteful for this purpose, doubling the size of the data, but should be pretty robust. Wikipedia has an fair explanation of the scheme.

    Alternatively Brandon’s 8b/10b encoding might be more efficient choice. Being an optical system, it made me think of an existing optical solution.

  11. I don’t have time to recall the details right now, but I think you can choose an encoding scheme that prevents long strings of 1s or 0s, to make synchronization easier. Also, you can have a microscopic flicker between 1s for synchronization purposes (i.e., on a different timescale)
    Naively, let
    0 -> 1010
    1 -> 0110

    So …1010011010101010… must represent 0100 and nothing else…

    Also, look into,_inverted

    1. Hmmm if it’s a slowass old LCD with flourescent backlighting, on a cold day, then modulating the scroll lock light on the keyboard might be an order of magnitude faster :-D

  12. Back when I was maybe 8, I got a little plastic pda with a pair of Mudd pants that did this. There was a game or something you could download if you visited the website. It also had an led on the back so you could put two of the devices back to back and transfer data. At 8 years old, that was the coolest thing to me.

Leave a Reply

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

You are commenting using your 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