Project: 12 module Optically inhomogeneous Detector Array - OUWECAD/MOWE GitHub Wiki

Table of Contents

Project Description
Results
Decoding Overlapped Signals via Wavelength Diversity


Project Description

Detector arrays are not required to be optically homogeneous. One can mix detectors with different wavelength, sensitivity, and FoV to achieve desired optical characteristics. This project constructed a 12-module flat inhomogeneous array from six 850nm and six 940nm detectors. The 940nm detector is equipped with a daylight filter, which renders it sensitive mostly to infrared wavelengths, while the 850nm is able to detect both visible and infrared signals. Maximum scan rate for this array was near 2500Hz. The code for this iarray is hosted in Firmware folder.

Serial port baudrate should be set to 3000000 and data is read from module 1. The array topology is available in the subfolder /Firmware/Inc/12_inhomo_rx.h.

12_inhomo1 12_inhomo2 12_inhomo3


Results

The image below shows a snapshot of array measurements of the 850nm laser. As expected, only respective detectors at 850nm captured the laser. A 980nm laser was captured by both types of detectors but with different gains. The Matlab file DetArr_12inhomo.m is used to read captured data offline and plot graphs and record videos.

12_inhomo4

850nm laser measurement

12_inhomo4

980nm laser measurement


Decoding Overlapped Signals via Wavelength Diversity

To demonstrate wavelength diversity in MOWE-based arrays, we ran the following experiment where we use the inhomogeneous array to detect and decode two different transmitters, one at 850nm and another at 980nm, both shining at the array at the same time and sending different data streams. A single 850nm module (module 2) would receive both signals, overlapped, and thus cannot decode them. However, by communicating with the neighboring 940nm module (module 5) that received only the 980nm signal, the 850nm module is able to decode both signals by performing basic signal processing. Similar collaborative, array-based algorithms can be developed to separate multi-user streams and decode communication in noisy environments by utilizing array spatial and wavelength diversity.

As expected, some inter-array communication errors and delays might affect the measured signal especially at low sampling rates. However, this does not prevent the other signal from being decoded correctly most of the times. The array was sampled at 500Hz in this experiment and the transmitter signals were random streams at 1Hz and 10Hz for the 850nm and the 980nm lasers, respectively. These figures are a proof-of-concept and can be increased many folds. It is also worth noting that this simple experiment can be expanded in many directions to feature more detectors, different geometries and more wavelengths. The modified code for this experiment is hosted in Firmware2 folder. Only modules 2 and 5 were modified. In module 1, the data transmission to PC was halted to increase array scan rate.

Below is the experimental setup. An 850nm laser is supplied via fiber from a 1Hz random modulated source. The 980nm laser is a fixed source and is modulated via a slotted disc controlled by a servo motor running at 5 rpm. (A MOWE-based servo motor controller project can be found here.) Only modules 2 & 5 are used in this array. Module 2 controls three GPIOs (TX pins of P1, P2, and P3). P1 outputs the digitized overlapping signal captured by module 2; P2 outputs the decoded 850nm signal; and P3 outputs the 980nm signal captured by module 5 and transmitted to module 2. 200 samples (array scans) are collected for each cycle, processed, filtered and then outputs are generated.

12_inhomo4

Below are some captured signals along with their description and setup.

12_inhomo4

ch1 > NA ch2 > 850nm detector - 850nm signal (1Hz) ch3 > 940nm detector

12_inhomo4

ch1 > NA ch2 > NA ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - 980nm signal (~10Hz) (motor peed 5 rpm) ch2 > decoded 850nm signal ch3 > 940nm detector - 980nm signal (~10Hz) (motor peed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - 850nm signal measured (1Hz) ch2 > decoded 850nm signal ch3 > 940nm detector -

12_inhomo4

ch1 > 850nm detector - on when both overlapping signals are on ch2 > decoded 850nm signal ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - on when both overlapping signals are on ch2 > decoded 850nm signal ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - on when both overlapping signals are on ch2 > decoded 850nm signal ( signal envelope ) (1Hz) ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

A remaining noise chip in the decoded 850nm signal (after filtering other chips)

12_inhomo4

ch1 > 850nm detector - on when both overlapping signals are on ch2 > decoded 850nm signal ( signal envelope ) (1Hz) ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - both overlapping signals ch2 > decoded 850nm signal ( signal envelope ) (1Hz) ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - 980nm signal ch2 > decoded 850nm signal ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - both overlaping signals ch2 > decoded 850nm signal (1Hz) ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

12_inhomo4

ch1 > 850nm detector - both overlaping signals ch2 > decoded 850nm signal (1Hz) ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

One remaining chip in 850nm signal after filtering the others and one signal dip in the signal envelope

12_inhomo4

ch1 > 850nm detector - both overlaping signals ch2 > decoded 850nm signal (1Hz) ch3 > 940nm detector - 980nm signal (~10Hz) (motor speed 5 rpm) after being transmitted to 850nm detector

One remaining chip in 850nm signal after filtering the others

12_inhomo4

ch1 > 850nm detector - both overlaping signals ch2 > decoded 850nm signal (1Hz) ch3 > 940nm detector - 980nm signal (~20Hz) (motor speed 20 rpm) (under sampled) after being transmitted to 850nm detector

Some remaining chips in 850nm signal after filtering the others

12_inhomo4

ch1 > 850nm detector - both overlaping signals ch2 > decoded 850nm signal (1Hz) ch3 > 940nm detector - 980nm signal (~3Hz) (motor speed 2 rpm) after being transmitted to 850nm detector

One remaining chip in 850nm signal after filtering the others

12_inhomo4

ch1 > 850nm detector - both overlaping signals ch2 > decoded 850nm signal (1Hz) ch3 > 940nm detector - 980nm signal (~3Hz) (motor speed 2 rpm) after being transmitted to 850nm detector