Optical Camera Communications for IoT–Rolling-Shutter Based MIMO Scheme with Grouped LED Array Transmitter

In optical camera communications (OCC), the provision of both flicker-free illumination and high data rates are challenging issues, which can be addressed by utilizing the rolling-shutter (RS) property of the image sensors as the receiver (Rx). In this paper, we propose an RS-based multiple-input multiple-output OCC scheme for the Internet of things (IoT) application. A simplified design of multi-channel transmitter (Tx) using a 7.2 × 7.2 cm2 small 8 × 8 distributed light emitting diode (LED) array, based on grouping of LEDs, is proposed for flicker-free transmission. We carry out an experimental investigation of the indoor OCC system by employing a Raspberry Pi camera as the Rx, with RS capturing mode. Despite the small area of the display, flicker-free communication links within the range of 20–100 cm are established with data throughput of 960 to 120 bps sufficient for IoT. A method to extend link spans up to 1.8 m and the data throughput to 13.44 kbps using different configurations of multi-channel Tx is provided. The peak signal-to-noise ratio of ~14 and 16 dB and the rate of successfully received bits of 99.4 and 81% are measured for the shutter speeds of 200 and 800 µs for a link span of 1 m, respectively.


Introduction
The fifth-generation (5G) telecommunication standards have set the new platform for mobile wireless networks, rather than just extending the transmission capacity and reliability of the 4G network [1]. With the three main focuses on capacity enhancement, massive connectivity, and ultra-high reliability (i.e., low latency), 5G development stems largely from the increasing number of users and smart devices within the context of Internet of things (IoT)-based smart environments being connected to the cellular networks [2]. In future smart environments, such as homes, offices, cities, etc., there will be a growing need for the communications networks that can facilitate connectivities between a large number of devices or sensors and the end-users [3]. This will mean access to substantial transmission resources (i.e., bandwidth), and thus a paradigm shift in the way the wireless transmission resources are utilized effectively.
To address this paradigm, a number of technologies have been proposed, including millimeter-wave [4], massive multiple-input multiple-output (MIMO) [5], small cell [6], Since both optical and electrical characterization of neopixel RGB LEDs are yet to be investigated, we first provide a characterization of the proposed MIMO Tx in terms of its optical radiation pattern and output optical power-current-voltage (Llux-I-V) curves. The optical radiation pattern of the neopixel LEDs was measured to obtain its spatial intensity distribution for use in analyzing the coverage and signal distribution in VLC and OCC links [8]. The light intensity of LEDs defined in terms of the angle of irradiance θ is given by [8]: where I(0) is the center luminous intensity of an LED and m is Lambertian order given as [8]: A lux meter was used to measure the angular dependence of the luminance of the LED (i.e., single and 8 × 8 horizontal and vertical array). As expected, the profiles for (i) a single LED represent a complete hemisphere close to Lambertian emitter with m of 1 (see Figure 2a); (ii) the LED array with no diffuser is broader with m of 0.74, due to the 9 mm spacing between the adjacent LED chips; and (iii) the LED array with the diffuser has m of 0.75 (see Figure 2b). Note that the measured radiation patterns can be further used to study the proposed MIMO-OCC links with mobility, and in a multiuser scenario. For example, rotation compensation schemes based on different Tx configurations [29] and wide receiver orientations [30] can be employed to ensure the operability of the proposed MIMO-OCC system in IoT environments.  Since both optical and electrical characterization of neopixel RGB LEDs are yet to be investigated, we first provide a characterization of the proposed MIMO Tx in terms of its optical radiation pattern and output optical power-current-voltage (L lux -I-V) curves. The optical radiation pattern of the neopixel LEDs was measured to obtain its spatial intensity distribution for use in analyzing the coverage and signal distribution in VLC and OCC links [8]. The light intensity of LEDs defined in terms of the angle of irradiance θ is given by [8]: where I(0) is the center luminous intensity of an LED and m is Lambertian order given as [8]: A lux meter was used to measure the angular dependence of the luminance of the LED (i.e., single and 8 × 8 horizontal and vertical array). As expected, the profiles for (i) a single LED represent a complete hemisphere close to Lambertian emitter with m of 1 (see Figure 2a); (ii) the LED array with no diffuser is broader with m of 0.74, due to the 9 mm spacing between the adjacent LED chips; and (iii) the LED array with the diffuser has m of 0.75 (see Figure 2b). Note that the measured radiation patterns can be further used to study the proposed MIMO-OCC links with mobility, and in a multi-user scenario. For example, rotation compensation schemes based on different Tx configurations [29] and wide receiver orientations [30] can be employed to ensure the operability of the proposed MIMO-OCC system in IoT environments. Since both optical and electrical characterization of neopixel RGB LEDs are yet to be investigated, we first provide a characterization of the proposed MIMO Tx in terms of its optical radiation pattern and output optical power-current-voltage (Llux-I-V) curves. The optical radiation pattern of the neopixel LEDs was measured to obtain its spatial intensity distribution for use in analyzing the coverage and signal distribution in VLC and OCC links [8]. The light intensity of LEDs defined in terms of the angle of irradiance θ is given by [8]: where I(0) is the center luminous intensity of an LED and m is Lambertian order given as [8]: A lux meter was used to measure the angular dependence of the luminance of the LED (i.e., single and 8 × 8 horizontal and vertical array). As expected, the profiles for (i) a single LED represent a complete hemisphere close to Lambertian emitter with m of 1 (see Figure 2a); (ii) the LED array with no diffuser is broader with m of 0.74, due to the 9 mm spacing between the adjacent LED chips; and (iii) the LED array with the diffuser has m of 0.75 (see Figure 2b). Note that the measured radiation patterns can be further used to study the proposed MIMO-OCC links with mobility, and in a multiuser scenario. For example, rotation compensation schemes based on different Tx configurations [29] and wide receiver orientations [30] can be employed to ensure the operability of the proposed MIMO-OCC system in IoT environments.  The illuminance levels of the LEDs were measured using a Testo 545 lux meter. Each neopixel in the array draws up to 60 mA of current I to turn ON at the maximum brightness. In realistic Sensors 2020, 20, 3361 5 of 15 environments, when the LED panel is to be used as a lamp, luminance can be efficiently controlled by varying switching power supply output current at the LED drive circuit. Therefore, the implementation of dimming techniques can be included as a part of the further extension of the proposed scheme [31,32]. However, increasing the power would induce crosstalk due to illumination from adjacent LEDs in the MIMO Tx [33].
In practical use, it is rare for all pixels to be turned ON at its maximum drawing current, due to the risk of overheating and damaging the LED panel. Therefore, it is recommended to drive each LED with I LED = 0.33I = 20 mA [21]. Thus, the drive current for the LED array is estimated using the rule of thumb, as given by [21]: where N pixels = 64 is the total number of neopixel LEDs. In this work, I LED-array is set to 1.28 A for measuring the L lux -I-V curves, which are depicted in Figure 3a,b for the MIMO-OCC Tx unit with, and without, the diffuser, respectively. Note: (i) the illumination levels are largely reduced, due to the use of the LED grid and the diffuser; (ii) linear L lux -I plots, which are highly desirable in IM VLC systems; and (iii) the neopixels used either as a single LED chip or in an array depict similar optical characteristics to those of commonly used RGB LEDs.
Sensors 2020, 20, x FOR PEER REVIEW 5 of 15 The illuminance levels of the LEDs were measured using a Testo 545 lux meter. Each neopixel in the array draws up to 60 mA of current I to turn ON at the maximum brightness. In realistic environments, when the LED panel is to be used as a lamp, luminance can be efficiently controlled by varying switching power supply output current at the LED drive circuit. Therefore, the implementation of dimming techniques can be included as a part of the further extension of the proposed scheme [31,32]. However, increasing the power would induce crosstalk due to illumination from adjacent LEDs in the MIMO Tx [33].
In practical use, it is rare for all pixels to be turned ON at its maximum drawing current, due to the risk of overheating and damaging the LED panel. Therefore, it is recommended to drive each LED with ILED = 0.33I = 20 mA [21]. Thus, the drive current for the LED array is estimated using the rule of thumb, as given by [21]: pixels LED LED-array × = , 1000 where Npixels = 64 is the total number of neopixel LEDs. In this work, ILED-array is set to 1.28 A for measuring the Llux-I-V curves, which are depicted in Figure 3a,b for the MIMO-OCC Tx unit with, and without, the diffuser, respectively. Note: (i) the illumination levels are largely reduced, due to the use of the LED grid and the diffuser; (ii) linear Llux-I plots, which are highly desirable in IM VLC systems; and (iii) the neopixels used either as a single LED chip or in an array depict similar optical characteristics to those of commonly used RGB LEDs.

Rolling-Shutter Based MIMO Rx in OCC
The CMOS IS, along with the imaging lens, is composed of a large number of pixels, with each pixel acting as an independent PD. Unlike a conventional PD-based Rx, which cannot be used to separate the mixed signals, CMOS-based IS can capture lights coming from different directions, and project them onto different sections of the IS [13]. Therefore, spatial separation of incoming light signals and their intensities can be measured by obtaining the pixel value for each light source image in the received frame. Image processing can be applied to the received image frames to extract the data from pixelated images [13]. Therefore, CMOS IS can be used as the MIMO-OCC Rx without the need for extended hardware. In [34], the analysis of the MIMO-OCC Rx using Bayer-pattern filters, which can differentiate the incoming signals being transmitted from the MIMO Tx, was reported.
In an OCC-VLC system, the RS effect of a CMOS IS can be used to achieve flicker-free transmission and increased data rate [16][17][18][19]. In this mode, the camera sequentially integrates light on all pixels at the exposure time trow-exp, similar to the scanning function, as illustrated in Figure 4a. In RS, the sensor scans the entire image row-by-row (line-wise) and generates a sequential readout.

Rolling-Shutter Based MIMO Rx in OCC
The CMOS IS, along with the imaging lens, is composed of a large number of pixels, with each pixel acting as an independent PD. Unlike a conventional PD-based Rx, which cannot be used to separate the mixed signals, CMOS-based IS can capture lights coming from different directions, and project them onto different sections of the IS [13]. Therefore, spatial separation of incoming light signals and their intensities can be measured by obtaining the pixel value for each light source image in the received frame. Image processing can be applied to the received image frames to extract the data from pixelated images [13]. Therefore, CMOS IS can be used as the MIMO-OCC Rx without the need for extended hardware. In [34], the analysis of the MIMO-OCC Rx using Bayer-pattern filters, which can differentiate the incoming signals being transmitted from the MIMO Tx, was reported.
In an OCC-VLC system, the RS effect of a CMOS IS can be used to achieve flicker-free transmission and increased data rate [16][17][18][19]. In this mode, the camera sequentially integrates light on all pixels at the exposure time t row-exp , similar to the scanning function, as illustrated in Figure 4a. In RS, the sensor scans the entire image row-by-row (line-wise) and generates a sequential readout. This scan process is governed by the system clock and is limited by the sampling rate of the analog to digital converter module. In GS-based IS, all pixels are exposed to the light simultaneously, i.e., ON or OFF states of the LED in a single frame [35], as illustrated in Figure 4b; while in RS, each row of pixels is exposed to Sensors 2020, 20, 3361 6 of 15 light at a given exposure time t row-exp , sequentially similar to the scanning function. In RS cameras, the readout time t read-out ensures that there is no overlapping of the rows of pixels, and allows multiple exposures in a single captured image. The latter enables multiple LED states to be achieved at the same time in a single frame, as each row is exposed once to the light. Therefore, the captured image of the switched LED is composed of a set of black and white stripes. The proposed MIMO-OCC scheme differs from the RS-based OCC links (see Figure 4c), as in [16][17][18][19]. In traditional RS-based OCC, only a single bit is captured within one exposure time t row-exp (see Figure 4a), in contrast to the proposed work, where 8-bit (1-bit per channel) are captured in a single row with time t row-exp , as depicted in Figure 4c. In addition, the proposed scheme can be used for flicker-free and high data rates transmission by allocating multiple bits per t row-exp . The widths and the number of strips depend on the data rate (i.e., modulation frequencies) and the camera-LED distance, respectively [16,18]. This scan process is governed by the system clock and is limited by the sampling rate of the analog to digital converter module. In GS-based IS, all pixels are exposed to the light simultaneously, i.e., ON or OFF states of the LED in a single frame [35], as illustrated in Figure 4b; while in RS, each row of pixels is exposed to light at a given exposure time trow-exp, sequentially similar to the scanning function. In RS cameras, the readout time tread-out ensures that there is no overlapping of the rows of pixels, and allows multiple exposures in a single captured image. The latter enables multiple LED states to be achieved at the same time in a single frame, as each row is exposed once to the light. Therefore, the captured image of the switched LED is composed of a set of black and white stripes. The proposed MIMO-OCC scheme differs from the RS-based OCC links (see Figure 4c), as in [16][17][18][19].
In traditional RS-based OCC, only a single bit is captured within one exposure time trow-exp (see Figure  4a), in contrast to the proposed work, where 8-bit (1-bit per channel) are captured in a single row with time trow-exp, as depicted in Figure 4c. In addition, the proposed scheme can be used for flickerfree and high data rates transmission by allocating multiple bits per trow-exp. The widths and the number of strips depend on the data rate (i.e., modulation frequencies) and the camera-LED distance, respectively [16,18]. Note that, in the RS capturing mode, each row starts with a certain delay, which results in the row shift, trow-shift. The frame time is given as: where Nrow is the pixel rows, which are based on the camera resolution. Note, trow-exp is the exposure time of the last row per frame (very small value). Note that, in the RS capturing mode, each row starts with a certain delay, which results in the row shift, t row-shift . The frame time is given as: where N row is the pixel rows, which are based on the camera resolution. Note, t row-exp is the exposure time of the last row per frame (very small value).  Figure 5 illustrates the flow diagram for the proposed MIMO-OCC, using the 64-neopixel Tx unit and a RS-based RaspiCam as the Rx. The proposed scheme is an initial study to investigate the upper bounds of the system using the proposed Tx unit, therefore, we assume perfect synchronization and line-of-sight transmission. Neopixels are controlled in the Arduino software domain. First, N pixels are assigned to N chips of neopixels, which are then grouped column-wise into eight N groups to form eight different transmission channels within one Tx unit. For data transmission, we have adopted a non-return-to-zero (NRZ) on-off keying (OOK) data format for IM of tri-color (band i, j, k) RGB channels (P i , P j and P k ) as P i + P j + P k = 1 and P i + P j + P k = 0, which is most commonly used in OCC. The data is generated in the Arduino unit and mapped to the LED addresses with the frequency, f s , given as:

System Overview of MIMO-OCC Using Proposed Multi-Channel Tx Design
where t chip is the 1-bit time per neopixel chip, and its minimum value is 2.5 ms, due to Arduino hardware limitation to ensure flicker-free transmission at f s of 400 Hz. The maximum number of visible bits per group in a single frame is given as: Figure 5 illustrates the flow diagram for the proposed MIMO-OCC, using the 64-neopixel Tx unit and a RS-based RaspiCam as the Rx. The proposed scheme is an initial study to investigate the upper bounds of the system using the proposed Tx unit, therefore, we assume perfect synchronization and line-of-sight transmission. Neopixels are controlled in the Arduino software domain. First, Npixels are assigned to Nchips of neopixels, which are then grouped column-wise into eight Ngroups to form eight different transmission channels within one Tx unit. For data transmission, we have adopted a non-return-to-zero (NRZ) on-off keying (OOK) data format for IM of tri-color (band i, j, k) RGB channels (Pi, Pj and Pk) as Pi + Pj + Pk = 1 and Pi + Pj + Pk = 0, which is most commonly used in OCC. The data is generated in the Arduino unit and mapped to the LED addresses with the frequency, fs, given as: where tchip is the 1-bit time per neopixel chip, and its minimum value is 2.5 ms, due to Arduino hardware limitation to ensure flicker-free transmission at fs of 400 Hz. The maximum number of visible bits per group in a single frame is given as: Note that Nvisible will change with respect to the distance between the source and the camera, as well as camera resolution. Based on Nvisible, the data transmission rate is given as: where Ngroups is the number of data transmission channels in the Tx unit (see Figure 1b).  Table 1 shows the resolutions, frame rate and Nvisible of RaspiCam. For further analysis, we selected a 1920 × 1080 pixel resolution, which is the most commonly used in cameras. Note that N visible will change with respect to the distance between the source and the camera, as well as camera resolution. Based on N visible , the data transmission rate is given as: where N groups is the number of data transmission channels in the Tx unit (see Figure 1b). Table 1 shows the resolutions, frame rate and N visible of RaspiCam. For further analysis, we selected a 1920 × 1080 pixel resolution, which is the most commonly used in cameras. To determine the upper bound of the system, we have selected NRZ-OOK data bit streams for IM of LED groups for transmission over the free space channel. Note that the same data is transmitted by all 8-LEDs per group, as shown in Figure 6.  To determine the upper bound of the system, we have selected NRZ-OOK data bit streams for IM of LED groups for transmission over the free space channel. Note that the same data is transmitted by all 8-LEDs per group, as shown in Figure 6. At the Rx, a RaspiCam for a given SS, resolution, and frame rate is used for capturing the images (i.e., recording a video stream for 3 s) of the IM light sources over an L ranging from 20 to 100 cm for post-processing. Note that a smaller image containing the emitter's signal information is transmitted, in order to speed up the processing time at the Rx. Therefore, the first step represents the detection of the region of interest (ROI) [36]. The obtained coordinates, which define boundaries of the ROI, are used for image cropping. Then, image processing is performed on the cropped images, which are then converted to the grayscale in order to retrieve the intensity profile. The threshold level is set based on the average of the received image intensity profile within the ROI. Following thresholding, binarization of the data frames is performed to convert the frame into vector transformation. This process is performed and applied to the remaining frames for decoding the transmitted data bit streams.

Experiment Results and Analysis
The experimental setup for investigating the proposed MIMO-OCC scheme is shown in Figure  7. The Tx unit is controlled using an Arduino Uno board, which is an open-source microcontroller board based on the ATmega328 [37]. The 64-bit long data stream (i.e., 8-bit per group, see Figure 6) is generated in the Arduino software domain and mapped to each LED address using the Arduino Uno board. At the Rx, a RaspiCam for a given SS, resolution, and frame rate is used for capturing the images (i.e., recording a video stream for 3 s) of the IM light sources over an L ranging from 20 to 100 cm for post-processing. Note that a smaller image containing the emitter's signal information is transmitted, in order to speed up the processing time at the Rx. Therefore, the first step represents the detection of the region of interest (ROI) [36]. The obtained coordinates, which define boundaries of the ROI, are used for image cropping. Then, image processing is performed on the cropped images, which are then converted to the grayscale in order to retrieve the intensity profile. The threshold level is set based on the average of the received image intensity profile within the ROI. Following thresholding, binarization of the data frames is performed to convert the frame into vector transformation. This process is performed and applied to the remaining frames for decoding the transmitted data bit streams.

Experiment Results and Analysis
The experimental setup for investigating the proposed MIMO-OCC scheme is shown in Figure 7. The Tx unit is controlled using an Arduino Uno board, which is an open-source microcontroller board based on the ATmega328 [37]. The 64-bit long data stream (i.e., 8-bit per group, see Figure 6) is generated in the Arduino software domain and mapped to each LED address using the Arduino Uno board.
The key experimental parameters are listed in Table 2. The camera used for capturing is the Raspberry Pi official camera (PiCamera V2), which is based on the Sony IMX219 sensor [38]. The RaspiCam is attached to the Raspberry touchscreen display to provide the easy interface and control over the camera capturing modes and settings. For the demonstration of the proposed study, experiments were performed for nine transmission distances and four different values of SS (see Table 2). The NRZ-OOK modulated signal was recorded in the form of a 3 s video stream (90 frames in total). The key experimental parameters are listed in Table 2. The camera used for capturing is the Raspberry Pi official camera (PiCamera V2), which is based on the Sony IMX219 sensor [38]. The RaspiCam is attached to the Raspberry touchscreen display to provide the easy interface and control over the camera capturing modes and settings. For the demonstration of the proposed study, experiments were performed for nine transmission distances and four different values of SS (see Table 2). The NRZ-OOK modulated signal was recorded in the form of a 3 s video stream (90 frames in total).
The current proof-of-concept experiments were performed under the ambient light, where we measured the light intensity using a Testo 545 lux meter. The measured light intensity of the Tx with a diffuser was 300 lux at a distance of 50 cm. We also measured reflected lights from walls to be approximately 3.5 lux (±0.5 lux), which is very small compared with the Tx's illuminance; therefore, the ambient light influence on the integrity of data transmission is insignificant. The experiments were first conducted without a grid and a diffuser. To validate the scheme, a binary bit sequence of 1 and 0 was transmitted via all LEDs in the array. Figure 8 shows the original captured image frames with GS and RS modes, along with respective single row grayscale intensity profiles. Figure 8a shows the captured LED array using GS mode, along with its intensity profile at a maximum L of 20 cm. It can be seen that interference from the adjacent LEDs results in the blooming effect and, therefore, causes inter-cluster-interference. It can be seen that LED array captured using RS mode (see Figure  8b) at a minimum L of 5 cm, Nvisible is 4 at the surface of each LED. Moving farther away from the Tx,  The current proof-of-concept experiments were performed under the ambient light, where we measured the light intensity using a Testo 545 lux meter. The measured light intensity of the Tx with a diffuser was 300 lux at a distance of 50 cm. We also measured reflected lights from walls to be approximately 3.5 lux (±0.5 lux), which is very small compared with the Tx's illuminance; therefore, the ambient light influence on the integrity of data transmission is insignificant. The experiments were first conducted without a grid and a diffuser. To validate the scheme, a binary bit sequence of 1 and 0 was transmitted via all LEDs in the array. Figure 8 shows the original captured image frames with GS and RS modes, along with respective single row grayscale intensity profiles. Figure 8a shows the captured LED array using GS mode, along with its intensity profile at a maximum L of 20 cm. It can be seen that interference from the adjacent LEDs results in the blooming effect and, therefore, causes inter-cluster-interference. It can be seen that LED array captured using RS mode (see Figure 8b) at a minimum L of 5 cm, N visible is 4 at the surface of each LED. Moving farther away from the Tx, N visible is reduced to 3 at L of 7 cm (see Figure 8c). This is due to the reduced LED's surface area of 5 × 5 mm 2 . Moreover, the RS rows also become saturated, which leads to inter-cluster-interference. Therefore, setting threshold levels become problematic, and hence lead to increased bit error rates (see Figure 8b,c). Therefore, further analysis was performed using the proposed LED array configuration shown in Figure 1.
Nvisible is reduced to 3 at L of 7 cm (see Figure 8c). This is due to the reduced LED's surface area of 5 × 5 mm 2 . Moreover, the RS rows also become saturated, which leads to inter-cluster-interference. Therefore, setting threshold levels become problematic, and hence lead to increased bit error rates (see Figure 8b,c). Therefore, further analysis was performed using the proposed LED array configuration shown in Figure 1.  Figure 9 shows the original captured image frames with grouping grid and diffuser, quantized intensity of the detected data, and the top view of intensity profiles for L of 20, 60, and 100 cm, and SS of 200, 600, and 800 μs. The received intensity distribution within the image frame is shown in the form of quantized intensity profiles of the captured original images. These intensity profiles play an important role in determining the higher and lower intensities representing 1 and 0 bits in the received image frames for further thresholding and demodulation [39]. The dotted yellow box in the original image frames is the ROI, which fills only the captured Tx within the full image frame. The clear and sharp distinction between data lines of the adjacent Ngroups can be seen at SS of 200 μs (see Figure 9a), while the lines get saturated for higher values of SS (see Figure 9b,c), which affects data demodulation (i.e., a higher number of bit error). Note that the camera's SS can be used to combat the effect of ambient lights, where lower and higher SS results in lower and higher levels of light to pass through the camera lens, as seen in the captured images in Figure 9.  Figure 9 shows the original captured image frames with grouping grid and diffuser, quantized intensity of the detected data, and the top view of intensity profiles for L of 20, 60, and 100 cm, and SS of 200, 600, and 800 µs. The received intensity distribution within the image frame is shown in the form of quantized intensity profiles of the captured original images. These intensity profiles play an important role in determining the higher and lower intensities representing 1 and 0 bits in the received image frames for further thresholding and demodulation [39]. The dotted yellow box in the original image frames is the ROI, which fills only the captured Tx within the full image frame. The clear and sharp distinction between data lines of the adjacent N groups can be seen at SS of 200 µs (see Figure 9a), while the lines get saturated for higher values of SS (see Figure 9b,c), which affects data demodulation (i.e., a higher number of bit error). Note that the camera's SS can be used to combat the effect of ambient lights, where lower and higher SS results in lower and higher levels of light to pass through the camera lens, as seen in the captured images in Figure 9.
Based on the received bits in the image frames, the data throughput is given as: Figure 10 illustrates the data throughput and N visible with respect to L. Note that N visible is the number of visible bits in each group. The maximum data throughput of 960 bps is observed at the minimum distance of 20 cm, where 8 full bits are visible in each group. The Tx illumination surface reduces with the increased L, thus resulting in reduced N visible and the data throughput. For L of 100 cm, only one full bit is visible, therefore the data throughput is reduced to 120 bps. Based on the received bits in the image frames, the data throughput is given as: groups visible fps Data throughput = ? ), 2 N N (8) Figure 10 illustrates the data throughput and Nvisible with respect to L. Note that Nvisible is the number of visible bits in each group. The maximum data throughput of 960 bps is observed at the minimum distance of 20 cm, where 8 full bits are visible in each group. The Tx illumination surface reduces with the increased L, thus resulting in reduced Nvisible and the data throughput. For L of 100 cm, only one full bit is visible, therefore the data throughput is reduced to 120 bps.  Table 3 shows the predicted data throughput based on the approximation of different Tx configurations, L, Ngroups, and Nvisible. It can be seen that increasing the number of LEDs leads to a larger surface area of the Tx, thus limiting higher values of Nvisible. For example, for a Tx using a 24 × 24 LED array, 24 Ngroups can be formed, which will increase the data throughput by up to 7.92 and 0.360 kbps for L of 60 and 160 cm, respectively; while for a Tx with a 32 × 32 LED array, 32 Ngroups can be formed, which will increase the data throughput by up to 13.44 and 0.480 kbps for L of 80 and 180 cm, respectively.   Table 3 shows the predicted data throughput based on the approximation of different Tx configurations, L, N groups , and N visible . It can be seen that increasing the number of LEDs leads to a larger surface area of the Tx, thus limiting higher values of N visible . For example, for a Tx using a 24 × 24 LED array, 24 N groups can be formed, which will increase the data throughput by up to 7.92 and 0.360 kbps for L of 60 and 160 cm, respectively; while for a Tx with a 32 × 32 LED array, 32 N groups can be formed, which will increase the data throughput by up to 13.44 and 0.480 kbps for L of 80 and 180 cm, respectively. Since in OCC the data is captured in the form of a two-dimensional image, a conventional signal-to-noise ratio (SNR) measurement cannot fully reflect the quality of the link. Therefore, we have adopted peak signal-to-noise ratio (PSNR), which is widely used as a quality metric in image processing systems. To compute the PSNR, the mean squared error between the transmitted and received images is given by [39,40]: where I Tx (m, n) and I Rx (m, n) are the intensity levels within the ROI of transmitted and received images of size height (H) × width (W), and N column and N row are the number of columns and rows of the images, respectively. The PSNR is then given as: where R is the maximum span of input data (e.g., in the current scheme, the input image has an 8-bit unsigned integer data type; therefore, R = 255). Figure 11a shows the performance of the OCC link in terms of PSNR with respect to L for different values of SS. As shown, PSNR increases with SS and decreases with the link span. This is due to the fact that the images of captured Tx at higher SS are more saturated, compared with those captured at lower SS (see Figure 9). The PSNR values of~14 and~16 dB are measured for SS values of 200 and 800 µs, respectively, for L of 100 cm, increasing by 4 and 3 dB for L of 20 cm for the same SS values, respectively.

Conclusions
This paper demonstrated the experimental implementation of an RS acquisition-based camera capturing in MIMO-OCC, employing an LED array in an indoor static environment. The neopixel's light source could be used either as a single LED chip or an array display with similar optical characteristics to those of commonly used RGB LEDs. We showed the transmission spans of 7 cm and 1 m using the Tx without, and with, the LED grid and a diffuser, respectively. The proposed system with the multi-channel LED array-based Tx offered the same performance at the SS of 200 and 400 μs over an L of 80 cm. However, at higher SS, the captured images were saturated, which resulted in increased PSNR and reduced percentage success of received bits. The maximum PSNR values of ~18 and ~19 dB and a 100% success rate of received bits were measured for the SS of 200 and 800 μs at the

Conclusions
This paper demonstrated the experimental implementation of an RS acquisition-based camera capturing in MIMO-OCC, employing an LED array in an indoor static environment. The neopixel's light source could be used either as a single LED chip or an array display with similar optical characteristics to those of commonly used RGB LEDs. We showed the transmission spans of 7 cm and 1 m using the Tx without, and with, the LED grid and a diffuser, respectively. The proposed system with the multi-channel LED array-based Tx offered the same performance at the SS of 200 and 400 µs over an L of 80 cm. However, at higher SS, the captured images were saturated, which resulted in increased PSNR and reduced percentage success of received bits. The maximum PSNR values of~18 and~19 dB and a 100% success rate of received bits were measured for the SS of 200 and 800 µs at the link span of 20 cm. A theoretical approximation (see Table 3) to further extend the L up to 1.8 m and the data throughput up to 13.44 kbps within the proposed MIMO-OCC using a grouped LED array by employing a Tx with a larger illuminating surface (large size) for practical indoor environments was provided. We conclude that the proposed Tx design can provide flicker-free transmission by employing multiple channels Tx with perfect inter-LED synchronization and an RS-based camera for use in short-range and low data rates indoor IoT applications, such as display-to-camera communications. The complexity of the proposed RS-based MIMO-OCC scheme will be further investigated for its implementation in practical scenarios, such as mobility, rotational support, and multiuser, based on ROI detection and bit or image pattern recognition within neural network algorithms.