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. I thought of those, too!
      At 14yrs old, after seeing my grandfather’s datalink, I bought a Casio DataBANK… much to my dismay, There was zero PC interface.


      1. your grandfather’s datalink? man I remember those from like 96 maybe? how old were you then? Granted I’m not that old either.

        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

        2. I guess I was 13.
          Cuz now it’s 2013. I mowed several lawns, too. I thought it was cool that he could update his watch’s phonebook wirelessly.

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

    3. 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. :D I did the same. I remembered Casio, databank added keyword screen transfer and google showed up comments page as first result, felt really stupid afterwards :D

  1. As do the Electric Imps.

    And in one respect, it goes *way* back in time. Light pens did this to detect where on the screen the pen is pointing.

      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.

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

  3. This was done by BBC television In the early 80’s to send software for ZX81 and BBC’s etc as part of their computer programs. It did work.

    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

      1. That was via Teletext, which used the VBI (lines 22/23?). The computer pages were 700 onwards. I think I’d best get my coat.

    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.

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

    1. I was thinking the same thing. Have a “next bit” color and then using like 4 or 8 colors to transfer multiple bits at a time.

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

  6. i remember having one of those Tamagachi toys that sync’d via monitor. forget what for, but they would put a square on the screen and the toy have a sensor on the back.

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

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

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

  10. I like what junkbox said. Use another color or two, or even greys to transmit start and stop bits. Or flash the black (like Morse Code) to transfer data.

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

  12. Bloomberg terminals use this, combined with an online-banking style dongle tied into a finger print, to stop people sharing a terminal using VNC or similar.

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

  14. Kind of a neat novelty. Before we know it there will be a sort of pipe for light with light transceivers at each end moving data. :)

    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

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

    1. Well considering you can’t get anything out, you probably can’t get anything into it either, so you might as well just OCR a hex dump from your spy camera.

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

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

  18. CHILDREN! The Worlds of Wonder Action Max system, from 1987 used this, with data from VHS tapes of planes flying around. GET OFF MY LAWN.

    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

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