C-OOK for OCC and its applicationsFigure 1 illustrates an indoor application of OCC applying C-OOK, which is the same as CM-FSK. The similarity of the intended use case between these two is because rolling shutter cameras are to receive modulated data in both systems.
Comparing C-OOK and CM-FSKThe use of alternative waveform for rolling shutter OCC has impacts on the communication performance and promising application accordingly. A brief comparison is given as follows.
- C-OOK decodes multiple asymmetric symbols (i.e., line coded symbol consisting of OOK binaries) from an image. In contrast, CM-FSK decodes single frequency from an image.
- As a consequence, C-OOK can take advantage of delivering a higher amount of data per rolling shutter image, and thus its data rate is higher than that of CM-FSK.
- Because C-OOK is designed with multiple symbols within an image so that it requires a preamble per payload unit perceived by an image. A preamble and its following payload unit together form a subpacket.
C-OOK SystemA reference architecture for C-OOK is illustrated as in Figure 2.
- Forward Error Correction (FEC): is needed for any communication system, as always.
- Asynchronous bit (Ab): is particularly customized from M-ary-FSK for CM-FSK in dealing with camera frame rate variation.
- RLL code: Because OOK itself does not provide DC-balance so additional line coding is used to gain DC-balance.
C-OOK DecodingTo demodulate the entire data sub-packet DS, the distance from a camera to the LED transmitter should be close enough. Figure 3 shows the relationship between the amount of data being captured by the camera and the distance from the camera to the LED transmitter.From the Figure 3, the maximum distance achieved is the distance at which the camera gets the amount of data equal to the amount of the sub-packet.Decoding case 1: Fuse incomplete parts of a sub-packet into a complete oneAt this distance far, the distance d1 as shown in Figure 3, the camera detects the preamble symbol and then demodulates the amount of data enough for a sub-packet; however, the uncertainty whether the forward part and the backward part counted from the position of the preamble belong to a sub-packet or not is problematic. The problem of a small amount of data also happens at a shorter distance when the transmitted subpacket is long.Asynchronous bits representing the clock information of the packet are used for the asynchronous decoding algorithm in this case.Figure 4 illustrates the decoding algorithm to recover a packet of data from the forward part and the backward part of an image when the size of LED is small in the captured image. By observing the values of an asynchronous bit before and an asynchronous bit after the preamble, two statements of fusing those two parts of a subpacket are addressed:
- Case 1- Inter-frame data fusion: Fusing two pieces of a packet at two different images into a complete pack.
- Case 2- Intra-frame data fusion: Recovering a complete packet from an image.
Conclusion
- The customization of OOK for OCC is crucial to making it work.
- The fundamentals of C-OOK have been discussed. The brief comparison to CM-FSK is given.
- Rx decoding with data fusion technique is suggested to extend the communication distance.