# The DarkLight Rises: Visible Light Communication in the Dark Tian, Wright, Zhou, ACM MobiCom '16 ## Motivation/Introduction - Most VLC systems involve bright light, easily visible - **Goal:** Low-rate, low-power, human _imperceptible_ VLC - Suitable for mobile devices' limited battery capacity - Avoids safety issues with IR, avoids illluminating environment with VLC if this is not desired - **Main Idea:** Encode information into light pulses that are short (and probably faint) enough to be imperceptible to the human eye, yet long enough to communicate data reliably - Human eye response time: 10 ms for cones (color, high light requirement), 100 ms for rods (B&W, low light requirement) - Authors get credit for building a working system - Transmitter side (LED) - Need rise time **less than** pulse duration so that LED reaches peak intensity - Figure 1(b): High-power LEDs have a rise time of about 1-2 $\mu$s, low power LEDs about 500-800 ns - Receiver side (photodiode) - Needs to respond in time to not miss the short pulse - Figure 2(b): Shows two alternatives, they choose the **SD5421** for data, which responds in about 200 ns but takes > 1.4 $\mu$s to reach peak response, and has a low gain (so short distance for communication) - Missing out on full response to their short data pulses, perhaps? (Their pulse width, as we'll see later, is 500 ns) - The issue of ambient light **interference** - Switching off/on other lights, sun, reflections etc. are the sources of interference - Figure 3: Their short pulsed data appears as the short pulses atop the slower interference - Don't have phase information from photodiodes, so no spatial separation techniques ## DarkLight Design (§3) - Figure 4: They reduce the rise time (marginally) with amplified imput voltage - They increase the photodiode receiver gain (significantly) using an amplifier (no numbers, though) - **Modulation (§3.2)** - Time divided into _symbols_, symbol time divided into $2^M$ _slots_, each of length $L$ seconds - Overlapped Pulse Position Modulation (OPPM): encode bits as which slot the pulse starts in. The slots' durations overlap (so only rising edge position matters). - **Demodulation:** Look for the rising edge, so take derivative - Issue: Derivative amplifies noise - Solution: Smooth the received signal first (Gaussian filter), then take derivative - Issue: Need to acquire packet timing - Solution: Preamble with three pulses in the first slot of each symbol ### Ambient Light Adaptation (§3.3) - Transmitter has another photodiode for sensing ambient light level, alongside the LED - When ambient light is brighter, they use fewer slots per symbol - Data rate is $M/(2^M\cdot L)$ bits per second - Duty cycle $d=t_{ON}/(2^M\cdot L)$ and ambient light levels determine visibility - So data rate is also equal to $M\cdot d/t_{ON}$ - In brighter ambient light, they decrease $M$, increasing $d$ and data rate (look at the first data rate equation above, and look ahead at **Table 1**) ## DarkLight Networks (§4) - Light is directional, but overlap will occur. _Many DarkLight links operating at the same time and interfering within overlap?_ - **Goal:** Receive multiple simultaenous streams - Receiver-side ADC sampling drift causes variation in rise time offset around 100-200 ns (Figure 6) - They remember the slot alignments for each data _stream_ (light source) and allocate new streams when they see unaligned slots - Misses "colliding" streams (_slot collisions_) ## Prototype Implementation (§5) - Parameters: $t_{ON}=500$ ns, $L=3.2$ $\mu$s, $t_{symbol}=6.55$ ms, which implies $M=11$, but that's not shown in Table 11 (?) - Hardware: - Transmitter-side LED _for data transmission_: **Cree CXA 2520** - Transmitter-side photodiode _for ambient light adaptation_: **OPT101** - Receiver-side photodiode _for data reception_: **SD5421** ## Experiments (§6) ### User Perception Study (§6.1) - Setup DarkLight LED on ceiling with a lampshade, measure human perception: ask people to look directly at the LED and indirectly at objects in the room (evidently people know LED is present) - Indirect viewing: Indistinguishable in bright ambient light, distinguishable in low ambient light - Directly looking at LED: More distinguishable, down to 65% in bright light ### Single-link Performance (§6.2) - Test link over a distance of **1.3 meters**, varying $L$ (timeslot length), results in up to 1.8 Kbit/second throughput (Figure 10a) - Increasing pulse width allows the LED to hit max brightness (Figure 10b) -- is this optimized fully, then? - Viewing angle is about 15 degrees (Figure 10c) - The adaptation loop takes 5 seconds to converge (Figure 11b) - Power consumption - Table 5: Transmitter side, FPGA dominates (can move to ASIC) - Receiver side, amplifier dominates - Appears that transmitter can be made quite low power, receiver perhaps not ### Multi-link Performance (§6.3) - Figure 13: To maximize throughput, need to increase the slot width from $3.2$ $\mu$s to $32$ $\mu$s -- slowing down by an order of magnitude! - When LEDs are synchronized, can space out the slots, otherwise they'll collide - Good match with their analytical model for collision frequency