Electrical – Visible Light Communication Signal Transmission

arduinodemodulationlightModulationreceiver

Im working on a VLC project where Ill need to transmit encoded data through an LED using an Arduino board to a photodiode receiver that somehow demodulates the signal and extracts the data. Im looking for a transmission rate of atleast 1Kbps where anything higher is bonus points. The problem is there will be ambient light present and my LED cant be a distinct red or green color to resemble a common lighting fixture. So one solution Im considering is to modulate the LED at two set frequencies, say 30kHz and 35kHz, where and connect the photodiode to a bandpass filter designed for 35kHz so that the output of the filter is a logic one when my LED is modulated at 35kHz and a logic 0 when its mod at 30kHz(this is simplified, id do something where a logic 1 is a certain duration of 35 followed by a certain duration of 30). Pretty much this idea is modeled from the NEC protocol used for remote controls. Id like to know if this setup would work before I start putting it together as I cant find any simulator that reasonably simulates LED/Photodiode interactions. Also, since im a beginner and im sure you all have wonderful ideas, is there anything I can do better or differently? Any input would be golden!

Best Answer

Your research has pointed to methods used by TV remotes, which have refined data transmission that is robust. A visible-LED link has little optical difference from the infra-red optical link universally used by all remotes. Perhaps some research into those excellent IR-remote receiver chips would be time well-spent. Vishay describe internals in a bit more detail in this note:circuit description of IR receiver remote
Vishay IR-remote receiver internal block diagram Too bad that those IR-remote receiver chips are all optically opaque to visible light (they only accept infra-red wavelengths longer than about 750nm). This optical filter is the only reason why these chips can't be used with a visible red LED light source.
Your proposal of alternating between 30-35 Khz. modulation is also a reasonable approach. A photodetector, bandpass filter, limiter, into a PLL detector like LM567 or 4046 could process the received signal. In the presence of no signal, you're likely to get garbage data, so a data protocol with checksum or CRC packets would be appropriate. Here's an idea for optical receiver "front-end" that could feed the PLL demodulator...

schematic

simulate this circuit – Schematic created using CircuitLab

If you can, choose a high-efficiency RED led (not green) that has tight beam width like 8 degrees or less, with clear (not diffused) plastic lens. You'll have to point it fairly carefully at the receiving photodetector. You can easily modulate this LED with a 30/35 KHz. square wave from a digital source.
Silicon phototransistors have best efficiency for infrared, but still detect visible RED light sufficiently well, but not so much GREEN light from your LED. A standard clear-lens phototransistor could be used, with a tuned load comprising a L-C tuned circuit (tuned to 33KHz.). A large bias resistor (3.3MEGohm) helps improve AC response at 33KHz. Ambient room light provides additional bias too. Loaded Q of the L-C bandpass should be less than ten for your application.