Overview

Add light-reactive sensing to your wearable Flora project with this high precision Lux sensor. The TSL2561 luminosity sensor is an advanced digital light sensor, ideal for use in a wide range of light situations. Compared to low cost CdS cells, this sensor is more precise, allowing for exact lux calculations and can be configured for different gain/timing ranges to detect light ranges from up to 0.1 - 40,000+ Lux on the fly. The best part of this sensor is that it contains both infrared and full spectrum diodes! That means you can separately measure infrared, full-spectrum or human-visible light. Most sensors can only detect one or the other, which does not accurately represent what human eyes see (since we cannot perceive the IR light that is detected by most photo diodes).

The sensor has a digital (I2C) interface. Attaching it to the flora is simple: line up the sensor so its adjacent to the SDA/SCL pins and sew conductive thread from the 3V, SDA, SCL and GND pins. They line up perfectly so you will not have any crossed lines.

You can connect up to 3 Flora Lux sensors by making sure that each sensor hasd a unique I2C address.  You set the address with the solder jumpers on the reverse side of the lux sensor. Solder between the center pad and - to set the address to 0x29, solder between the center pad and + to set the address to 0x49 or leave the pads floating (unsoldered) to use address 0x39.  WARNING! DON'T SOLDER ALL THREE PADS TOGETHER!  That would make a direct short between 3.3V and Ground!

You can connect other I2C sensors/outputs by using the set of SCL/SDA pins on the opposite side. The current draw is extremely low, about 0.5mA when actively sensing, and less than 15 uA when in powerdown mode.

For more technical information about the TSL2561 luminosity sensor, check out the TSL2561 guide which shows the more conventional breakout Adafruit also makes for this sensor.

To get started making a soft light-sensing circuit on fabric you will need:

Wiring

To test the sensor before sewing it into a project, use alligator clips to hook up the 3.3v, SDA, SCL, and GND pins.
Stitching the sensor into a project is easy-- just line up the sensor so its adjacent to the SDA/SCL pins on Flora or another I2C sensor, and stitch the four connections with conductive thread. This is covered in more detail in the Flora Accelerometer guide and our Conductive Thread guide.

Programming

To use this sensor and calculate Lux, there's a lot of very hairy and unpleasant math. You can check out the math in the datasheet but really, its not intuitive or educational - its just how the sensor works. So we took care of all the icky math and wrapped it up into a nice Arduino library.

Install Adafruit_TSL2561 library

To begin reading sensor data, you will need to install the Adafruit_TSL2561 library (code on our github repository). It is available from the Arduino library manager so we recommend using that.

From the IDE open up the library manager...

And type in adafruit tsl2561 to locate the library. Click Install

You will also need the Adafruit Sensor Library if you do not already have it installed.

Search the library manager for Adafruit Unified Sensor and install that too (you may have to scroll a bit)

Now you can run the File->Examples->Adafruit_TSL2561->sensorapi example program which will read and calculate the lux readings for you.

Open up the serial monitor at 9600 baud to see the measurements. Use a lamp or your hand to illuminate/shade the sensor to see the values change.

 

Open the example sketch by navigating to File->Examples->TSL2561->tsl2561.
Be sure you have the proper serial port and board selected in the Adafruit Arduino IDE. For more information about programming Flora, be sure to read our Getting Started with FLORA guide.

Upload the example sketch to your Flora.
Open the serial monitor (the upper right button in the Arduino IDE) and watch the sensor values pour in.

Try covering the sensor with your hand or holding it closer to a light source to see the values change.

Downloads

This guide was first published on Feb 20, 2013. It was last updated on Feb 20, 2013.