Built to order

Li-Fi Based Wireless Text Transmission using LED and Photodiode Receiver

This project builds a working Li-Fi (visible-light communication) link that transmits text wirelessly through a high-brightness LED, decoded by a photodiode receiver and displayed on an LCD. An Arduino Nano switches the LED at kilohertz rates through a transistor driver, while a photodiode with an LM358 transimpedance amplifier converts the light pulses back into logic levels for a second Arduino to decode. The build demonstrates modulation, optoelectronic sensing, and serial communication without radio waves. Suitable for B.E./B.Tech final-year projects in Electronics, Telecommunication and

Electronics / E&TC Arduino UnoArduino NanoArduino IDE16x2 LCDLM358 · transimpedance amplifierPIN photodiodeBC547 transistor driverHigh-brightness LEDHardware
Li-Fi Based Wireless Text Transmission using LED and Photodiode Receiver — project thumbnail preview
More project photos (2)

The problem

Wireless communication is taught almost entirely through radio-frequency examples — Wi-Fi, Bluetooth, GSM — while visible light communication gets only a mention in passing. Yet the underlying ideas (modulation, carrier, receiver sensitivity, noise) are identical, and light has properties radio does not: it is confined by walls, immune to RF interference, and free of spectrum licensing. Students rarely build an actual free-space optical link because the analog front end looks intimidating: a photodiode produces tiny currents that must be amplified cleanly before a microcontroller can read them. This project closes that gap with a complete, demonstrable Li-Fi link — text typed into the transmitter appears on the receiver's LCD, carried entirely by light. It is a clean fit for communication-theory courses, embedded systems subjects, and optoelectronics electives, and it demos reliably on an examination table.

SYSTEM FLOW

5 components 4 connections

Live flow
Drag to explore
100%
controllerTX Arduino

Transmitter Nano converting typed text to a binary bit stream.

Follow the working sequence

How it works

  1. The user enters a text string on the transmitter Arduino (via the serial monitor), which converts each character to its 8-bit binary form.
  2. The Nano toggles a digital pin at the configured data rate, driving the BC547 transistor so the high-brightness LED flashes the bit stream as light pulses.
  3. Across the free-space gap, the photodiode on the receiver converts arriving light pulses into small photocurrents.
  4. The LM358 transimpedance amplifier turns those tiny currents into rail-to-rail voltage swings, and a comparator stage slices them into clean digital pulses.
  5. The receiver Arduino samples the pulse stream, waits for the sync header, then decodes each byte back into a character.
  6. Decoded characters accumulate into the message string, which is printed to the 16x2 LCD; a checksum/frame check flags any corrupted block as an error rather than displaying it.

Tech stack:

  • Arduino Nano · Arduino Uno
  • LM358 op-amp (transimpedance amplifier)
  • PIN photodiode (visible-light receiver)
  • BC547 transistor LED driver
  • 16x2 character LCD (I2C)
  • Arduino IDE (C/C++ firmware)
  • High-brightness white LED
Parameter Value
Communication medium Visible light (free-space optical)
Transmitter controller Arduino Nano (ATmega328P, 16 MHz)
Receiver controller Arduino Uno (ATmega328P, 16 MHz)
Light source High-brightness white LED, transistor-switched
Optical sensor PIN photodiode (spectral response ~400–1100 nm, datasheet range)
Amplifier LM358 transimpedance stage (slew rate 0.3 V/µs, datasheet)
Data rate 9600 bps (design target; configurable in firmware)
Range Up to ~1 m indoor line-of-sight (design target; depends on ambient light and alignment)
Display 16×2 character LCD with I2C backpack
Power 5 V USB or 9 V battery (transmitter), 5 V USB (receiver)
Encoding 8-bit ASCII with sync header and frame validation

Project features

  • [Visible-light text transmission] Type a text string at the transmitter; it travels as modulated LED light pulses through free space and appears on the receiver's 16x2 LCD — a genuine wireless link with no radio involved.
  • [Kilohertz LED switching driver] An Arduino Nano drives a high-brightness white LED through a BC547 transistor stage, switching the LED at kilohertz rates so the flicker is invisible to the eye while carrying data.
  • [Photodiode receiver front end] A PIN photodiode feeds an LM358-based transimpedance amplifier that converts picoamp-scale photocurrents into clean voltage swings the receiver Arduino can sample.
  • [Frame synchronization] Each transmission starts with a header/sync pattern so the receiver can lock onto the incoming bit stream and reject stray light flicker.
  • [Error indication] The receiver validates incoming frames and flags corrupted transmissions on the LCD instead of displaying garbage, demonstrating real link-reliability thinking.
  • [Configurable baud rate] Data rate is adjustable in firmware (design target 9600 bps), so students can demonstrate the trade-off between speed and link robustness.
  • [Ambient-light thresholding] The comparator reference is adjustable, letting the receiver be tuned against room lighting conditions — a genuine receiver-design exercise.
  • [LCD live readout] The 16x2 display shows received text plus link status, so the demo is self-explanatory during evaluation.

What is included

  • Working Li-Fi transmitter module (Nano + LED driver on breadboard/PCB)
  • Working photodiode receiver module (Uno + LM358 front end + 16x2 LCD)
  • Complete firmware source code (transmitter + receiver, commented)
  • Circuit and wiring documentation
  • Component list with exact part numbers
  • Setup and calibration instructions (threshold tuning procedure)
  • Project report PDF (background, theory, methodology, results)
  • PPT presentation for final review
  • Viva Q&A preparation document (modulation, photodiode physics, noise, link budget)

Limitations & prerequisites

  • Requires clear line-of-sight: the beam must hit the photodiode — an obstruction breaks the link instantly, like all free-space optical links.
  • Indoor range is a design target of approximately 1 m; bright ambient sunlight or strong tube-light flicker can overwhelm the receiver at longer distances.
  • Data rate tops out at a design target of 9600 bps with this analog front end — the LM358's 0.3 V/µs slew rate (datasheet) limits how fast clean pulses can be sliced.
  • The link is point-to-point only: one transmitter to one receiver, no addressing or multi-node networking in the base build.
  • High-speed alignment matters: the LED and photodiode must face each other within a narrow cone for reliable decoding.
  • This is an academic demonstration prototype, not a certified communication device — range and rate figures are design targets, not measured guarantees.

Frequently Asked Questions

Is this project suitable for a final-year project?

Yes — for Electronics, Telecommunication and related programs. It demonstrates visible-light communication, modulation and demodulation, op-amp signal conditioning, and embedded firmware in one working build, and it maps cleanly to communication-theory and optoelectronics coursework.

Which controller and sensor are used?

An Arduino Nano drives the LED transmitter and an Arduino Uno handles the receiver, which uses a PIN photodiode (400–1100 nm response) with an LM358 transimpedance amplifier — a real analog front end, not just a digital light sensor.

How fast can it send text?

The design target is 9600 bits per second, configurable in firmware. That is fast enough for sentences to appear on the LCD essentially as typed, and slow enough that the LM358 amplifier stage can slice the pulses cleanly.

Does it work in daylight or a bright room?

Bright ambient light is the main enemy of any optical receiver — the photodiode sees it as noise. The comparator threshold is adjustable to compensate, and the receiver's sync header rejects flicker, but direct sunlight on the sensor will degrade the link; indoor demonstration is the reliable setting.

What can be customized?

Realistic options: longer message buffers, multiple receiver nodes, adding encryption of the transmitted text, a PC-side transmitter GUI, or upgrading the front end for higher data rates — quoted separately.

What will I receive with the project?

Both working hardware modules (transmitter and receiver), all firmware source code, wiring documentation, component list, calibration instructions, the project report PDF, PPT, and a viva Q&A document. Suitable for B.E./B.Tech final-year projects in Electronics, Telecommunication and IoT.

Components & software requirements
  • Arduino Nano · Arduino Uno
  • LM358 op-amp (transimpedance amplifier)
  • PIN photodiode (visible-light receiver)
  • BC547 transistor LED driver
  • 16x2 character LCD (I2C)
  • Arduino IDE (C/C++ firmware)
  • High-brightness white LED
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download free synopsis (PDF)

Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.

Get a quotation