## 2 System Design
### Receiver  
The designed positioning receiver was based on the rolling shutter effect mechanism of the CMOS camera image sensor. The modulated signal from the ceiling LED light was captured by the rolling shutter camera sensor, which converted it from pixels into data. The decoding process at the receiver side was operated by converting the light signal, accessing the memory time, and performing the image processing mechanism. The working mechanism of the charged coupled devices (CCD) sensor exposes all the pixel values on the sensor at one time, and at the end of each exposure, all the data pixels are read out simultaneously. The frame rate of the CCD image sensor is relatively low. This mechanism is known as the global shutter mechanism of the CCD image sensor, as shown in Figure 4a. \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameters Name** & **Value** \\ \hline LED Model & BSDW-010, Color Temp. 5300–6000 K \\ LED Size & 15 cm \\ LED Power & 15 W \\ Number of LEDs & 6 \\ MCU & Atmega328p \\ MOSFET chip & P24N65E \\ Resistance R1 value & 10 k\(\Omega\) \\ Resistance R2 value & 55 \(\Omega\) \\ Frequency number & 8 \\ Synchronization frequency & 10 kHz \\ Error correction & Run-length encoding \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Transmitter parameters configuration. Conversely, for the case of a CMOS image sensor, each row of the pixel values is exposed simultaneously at the exposure time, and the row of pixels is protected by readout from the overlapping. This operation is known as the rolling shutter mechanism of a CMOS image sensor, as shown in Figure 4b. The mechanism of the CMOS sensor has been reported in [26; 27]. The sensor also can record the flicker pattern within one image [28], which forms the signal layer. The signal layer is superposed with the image background and produces the alternately dark and bright strip bands. When exposed to LED light, it opens and closes, causing bright and dark strips to be captured by the rolling shutter mechanism of the CMOS image sensor. Figure 3: Rolling shutter captured image with mixed symbol data. Figure 2: (a) FSOOK modulation signal; (b) the packet format of modulation light. To demodulate the data from the transmitter LED using the rolling shutter mechanism of the CMOS image sensor, the receiving camera demodulates the signal data based on the measured width of the dark and bright strips of the received image and converts it back to the original transmitted frequency. The estimation of width is handled by counting how many pixels exist between a couple of dark and bright strips, as shown in Figure 5. The frequency of a transmitted signal of a square wave is \(f\), and the duration of one complete cycle is _1/f_ seconds. Therefore, to read-out a couple of bright and dark strips in the received image, the camera should be exposed at every _1/f_ second. Additionally, during this time, the camera spends time to read-out a row of pixels in a read-out duration \(R_{s}\). Therefore, the width \(W^{\prime}\) of the consecutive dark and bright strips can be calculated as follows:  
\[W^{\prime}=\frac{\frac{1}{2f}}{R_{s}}=\frac{1}{2 fR_{s}} \tag{1}\]  
The calculation of the strip width based on the theoretical of (1) is a real number. In the experiment, the width of the strip number is an integer. Therefore, the receiver can only measure the number of rows possessed by strip \(W^{\prime\prime}\) as an integer estimate of \(W^{\prime}\), which can demodulate the symbol by  
\[W^{\prime\prime}=\frac{1}{2f^{\prime}R_{s}} \tag{2}\]  
Figure 4: (**a**) Global shutter effect of CCD sensor; (**b**) rolling shutter effect of CMOS sensor. Figure 5: Estimation of strip widths during the decoding process. \[f^{\prime}=\frac{1}{2W^{\prime\prime}R_{s}} \tag{3}\]  
As a result of this, the read-out duration of each camera image sensor is basically an unknown parameter. In our case, for the given frequency, different cameras have distinct read-out durations, and hence, we could observe different strip widths.