## 2 Contributions of this Research  
In this study, we propose an OCC scheme employing an IoT system-based MIMO technique using an LED array, which is compatible with almost any commercially available camera. Our scheme has several advantages, which are highlighted as follows:  
* Support for most types of commercial cameras: effective exposure time control makes the proposed method compatible with global-shutter and rolling-shutter cameras. Moreover, an RoI detection algorithm facilitates easy integration with widely accessible CCTV systems, which enhances the convenience of the application.
* Rotation support: The proposed scheme deploys a matrix transpose for recovery by taking advantage of the fact that rotation is based on bits. Through a well-construed arrangement of the four corners of the LED array, the receivers can effortlessly detect and accommodate rotations spanning 360\({}^{\circ}\). Rotation support holds significance for IoT systems, ensuring that cameras can readily receive data from any angle in real-world environments.  
* Frame rate variation support: Presently, it is still believed that the frame rate described in the specifications of global-shutter and rolling-shutter cameras are constant, for example, 60 or 500 fps. However, in reality, the frame rate can undergo variations and fluctuate during camera usage. This causes several difficulties in decoding data on the receiver side, as well as synchronizing data between the transmitter and receiver side of the OCC system. To determine whether a sub-data packet is dropped during the transmission and reception of data, we use the sequence number (SN) in each one.
* Data merger algorithm: As part of the proposed methodology, we include an SN in every sub-packet to identify where it falls in the sequence. We can adjust the SN length to best optimize system performance according to the length of the data packet.
* Detection of missing packets: Aiming to combine data packets from two successive images, we embed an SN in each packet. This SN facilitates the straightforward detection of missing packets by comparing the SNs in two consecutive images, assuming that the SN length is adequate for the task.
* Mobility support: A 2D-MIMO data transmission method that transfers data using an LED array that has multiple individual LEDs arranged in a matrix, like 8 by 8 or 16 by 16. When LEDs move at a specific speed and distance, conventional algorithms, such as the ROI method, become more difficult to use for LED recognition because the images of the LED array in the camera often appear noisy and hazy. In the meantime, YOLO algorithms are well-known for being incredibly effective methods for real-time object detection, especially for objects with a high rate of motion, such as cars and people. Therefore, we implemented the YOLOv8 algorithm for our OCC systems to improve the performance of LED array detection in mobile scenarios.
* Reducing BER: To reduce BER, we propose and apply a deep-learning decoder to improve data decoding by applying a deep-learning decoder model trained by the dataset we gathered manually under various conditions, particularly when the LED array moves at varying speeds. Meanwhile, the LED image captured by the camera is often blurred in a mobility environment, making it harder for traditional decoding techniques to distinguish between bits 0 and 1, which raises the BER of the modulation scheme.