Team: Jeel Sidpara · Aatman Sabhaya
Course: FWPM - Internet of Things, TH Rosenheim, SoSe 2026
Overview · Architecture · Build Guide · Results · Documentation · Team
- Transmits text wirelessly using visible light instead of radio waves
- Encodes characters as 8-bit ASCII and modulates them through an LED
- Reconstructs received data using a solar panel and Arduino Uno
- Displays decoded messages on a 16×2 I2C LCD
- Includes source code, wiring guidance, test results, presentations, and posters
This project demonstrates a working Li-Fi (Light Fidelity) prototype built with two Arduino Uno boards. The transmitter converts text entered in the Serial Monitor into 8-bit ASCII binary and drives an LED — ON for 1, OFF for 0. The receiver reads incoming light intensity through a solar panel, applies a calibrated threshold to classify each bit, reconstructs the ASCII character, and displays it on a 16×2 I2C LCD. The system successfully transmits short text messages such as A, HI, HELLO, and IOT under controlled indoor conditions at a range of 1–2 cm.
Traditional wireless technologies (Wi-Fi, Bluetooth, cellular) rely on RF signals. RF has well-known limitations in specific environments:
- Spectrum congestion — limited RF bandwidth in dense deployments
- Security risks — RF signals pass through walls and can be intercepted
- RF-restricted zones — hospitals, aircraft, and industrial facilities prohibit RF near sensitive equipment
- Interference — multiple devices on shared bands degrade performance
Li-Fi addresses these directly: the visible light spectrum is orders of magnitude wider than RF, signals are physically bounded by line-of-sight, and no spectrum licence is required. This project proves that Li-Fi data transmission is achievable with low-cost, commodity hardware.
Full motivation document: docs/motivation_and_problem.md
| Capability | Detail |
|---|---|
| Binary ON/OFF transmission | Reliably distinguishes LED-ON (~600) from LED-OFF (~350) using threshold 500 |
| ASCII text transmission | Sends and receives short messages: A, HI, HELLO, IOT |
| LCD display output | Shows decoded messages on a 16×2 I2C LCD (up to 32 characters) |
| Serial Monitor I/O | Transmitter reads input; receiver confirms output |
| Limitation | Reason |
|---|---|
| Long range | Reliable operation only at 1–2 cm LED-to-sensor distance |
| High speed | Solar panel response limits bit rate to ~5 bits/second (200 ms/bit) |
| Through-wall communication | Requires direct line-of-sight |
| Error correction | No parity, checksum, or retransmit logic |
| Bidirectional communication | One-way only: transmitter → receiver |
Full document: docs/mvp_and_scope.md
User types message in Serial Monitor
↓
Transmitter: character → 8-bit ASCII binary
↓
LED modulation: ON = bit 1 / OFF = bit 0 (200 ms per bit)
↓
Visible light channel (line-of-sight, 1–2 cm)
↓
Solar panel: analog light reading (range 0–1023)
↓
Receiver: threshold comparison (500) → bit 0 or 1
↓
8 bits assembled → ASCII character
↓
LCD display + Serial Monitor output
| IoT Layer | Implementation |
|---|---|
| Things | 2× Arduino Uno, 1× LED, 1× solar panel, 1× 16×2 I2C LCD |
| Connectivity | Visible light channel — LED ON/OFF modulation |
| Data | ASCII characters → 8-bit binary streams |
| Processing | Threshold classification (threshold = 500), bit assembly, ASCII decode |
| Output | 16×2 LCD display and Serial Monitor |
LiFi-Based-Transmission/
├── src/ Arduino transmitter and receiver sketches
├── docs/ Architecture, hardware, testing, and presentations
├── tests/ Experiment procedures and final results
├── media/ Circuit photographs and project posters
└── README.md Project overview and setup guide
- Arduino IDE (download)
- Library:
LiquidCrystal I2Cby Frank de BrabanderArduino IDE → Tools → Manage Libraries → search "LiquidCrystal I2C" → Install
Transmitter
| LED | Arduino Uno |
|---|---|
| Anode (+) | Digital pin 13 |
| Cathode (−) | Resistor → GND |
Receiver
| Component | Arduino Uno |
|---|---|
| Solar panel (+) | Analog pin A3 |
| Solar panel (−) | GND |
| LCD VCC | 5V |
| LCD GND | GND |
| LCD SDA | A4 |
| LCD SCL | A5 |
- Connect receiver Arduino → open Final_Solar_LCD_Message_Receiver.ino → select board
Arduino Uno+ correct COM port → Upload - Connect transmitter Arduino → open Final_Message_Transmitter.ino → select board + COM port → Upload
- Open Serial Monitor on transmitter at 9600 baud, line ending: Newline
- Place LED directly in front of solar panel at 1–2 cm
- Type a message (e.g.
HI) in Serial Monitor → press Enter → observe LCD on receiver
The prototype reliably distinguished LED-OFF readings near 350 from LED-ON readings near 600 using a calibrated threshold of 500. Under controlled indoor lighting and direct alignment, it successfully transmitted short messages at approximately five bits per second over a distance of 1–2 cm.
See the complete test results and range, alignment, and ambient-light analysis for the recorded observations and constraints.
| Full Setup | Transmitter | Receiver | LCD Output |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
Multiple business models are possible. The following applies to the healthcare domain — the primary vertical where Li-Fi's RF-free nature has direct regulatory value.
| Dimension | Description |
|---|---|
| Problem | RF interference disrupts medical devices in ICU / MRI zones |
| Solution | Li-Fi: zero RF emission, room-contained, inherently private |
| Revenue | Hardware kit sale (one-time) + SaaS monitoring dashboard (recurring) |
| Cost | Hardware ~€30 prototype / ~€100 production unit |
| Market | 0.1% of hospital wireless market ≈ $10M+ |
| Key advantage | No spectrum licence, no RF, low power, low cost |
Full document: docs/business_model.md
The repository includes the supporting engineering documentation and project deliverables:
- System architecture
- Hardware setup and calibration
- Testing procedures
- Troubleshooting and lessons learned
- Project presentation
- Project poster
Development milestone presentations are retained for project traceability:
| Member | Contribution |
|---|---|
| Jeel Sidpara | Testing, hardware prototyping, project documentation, and project coordination |
| Aatman Sabhaya | Transmitter and receiver circuit assembly, testing support, and Arduino Uno environment setup |
FWPM Internet of Things — TH Rosenheim, SoSe 2026
Suggestions and improvements are welcome. Please read CONTRIBUTING.md before opening an issue or submitting a pull request.
This repository documents an academic prototype and is provided for learning and portfolio purposes. It is not a production-ready communication system or a safety-certified medical solution. If you build on this work, cite the repository and follow your institution's academic-integrity rules.
No open-source license has been granted yet. Unless a license is added, the contributors retain all rights to the source code, documentation, and media.
Designed, built, and documented by Jeel Sidpara and Aatman Sabhaya.






