TSL2671 Proximity Detector

The Tsl2671Proximity class controls the proximity detector on MetaDetector boards. The detector uses photodiodes responsive to both visible and infared light and integrating ADCs to convert the photodiode currents into a digital value.

Sensor Configuration

Configuring the TSL2671 detector is done with the Tsl2671Proximity.ConfigEditor interface. There are 4 options to configure:

These settings control the sensitivity and distance at which the sensor can detect proximity. It is recommended that you use the channel 1 receiver diode, and, if your board is powered by the CR2032 battery, keep the driver current at 25mA or lower.

import com.mbientlab.metawear.module.Tsl2671Proximity;

final Tsl2671Proximity proximity= mwBoard.getModule(Tsl2671Proximity.class);
proximity.configure()
    .setReceiverDiode(Tsl2671Proximity.ReceiverDiode.CHANNEL_1)
    .setTransmitterDriver(Tsl2671Proximity.TransmitterDrive.CURRENT_12_5MA)
    .commit();

Detecting Proximity

To detect proximity from the board, call the readProximity method. The distance between the detector and the object is given as an ADC ratio where a higher value corresponds to a closer distance.

proximity.routeData().fromSensor(false).stream("proximity").commit()
    .onComplete(new CompletionHandler<RouteManager>() {
        @Override
        public void success(RouteManager result) {
            result.subscribe("proximity", new RouteManager.MessageHandler() {
                @Override
                public void process(Message msg) {
                    Log.i("test", msg.getData(Integer.class).toString());
                }
            });
            proximity.readProximity(false);
        }
    });