An RGB light sensor we evaluated for use in the Evaporometer project. This sensor measures RGB, color temperature, lumens, and visible light spectrum, and has features that currently aren’t useful for our project, but are still worth documenting in this post.
Setting up the sensor:
The TCS34725 was connected to an Adafruit Feather 32u4 using traditional I2C, although the RGB breakout features an additional port for a RGB LED to mimic the RGB values read by the sensor. More on the full functionality can be found on Adafruit’s website here. An SD card breakout was also connected to store the RGB, color temperature, lumens and visible light spectrum values.
Testing the sensor:
For this test we were most concerned with measuring RGB values. Color could be read by reading the different colored light that was reflected by an object. A built in white LED is used to present a consistent light source for the sensor to use. This white light must be powered on in order to produce readings and RGB readings can only be made when objects are touching or placed directly in front of the sensor. Our test sketch, which can be used on Adafruit and Arduino dev. boards exists here.
Evaluation of the TCS34725:
After testing Adafruit’s TCS34725 and running a current test, it was clear that the functionality and power needs of this sensor were not what we were looking for on the Evaporometer project.
A significant amount of power would be needed to read the RGB values and such data would be virtually useless in spacious outdoor areas. While lux, color temperature, and the visible spectrum could be used to compare data with our Evaporometer’s TSL2591 sensor, it also makes sense to integrate a second TSL2591 sensor or conduct a side-by-side comparison of the two sensors to see if programming the TCS34725 to only measure lux values requires less power than the TSL2591.
UPDATE: A Closer Look at TCS34725 Functionality
As I mentioned at the end of the previous section, I thought this sensor could be useful to us so long as we disabled the RGB color reading functionality and shut off the white LED to save power. After some digging around in the TCS34725 data sheet and TCS34725 library I learned a lot more about the full functionality of this neat light sensor – like many Adafruit sensors, this RGB sensor is capable of entering a low power mode that drastically reduces current consumption by only reading RGB color info at specified times. Unfortunately, I also found that forgoing measurement of RGB values also makes it impossible to calculate Lux (lumens per square meter). In this version of the TCS34725 library, lux calculations are derived from the RGB values of the light sensor, however this comment in the source code suggests that this may change:
The developers suggest using the clear (C) measurement to find lux – hypothesizing that doing so may improve accuracy. While the clear value is also measured in the same function that measures RGB values, it is possible an updated version of the calculateLux function and a well timed interrupt could also get the job done (using more power than our preferred IR/Full light sensor).
– Marissa Kwon, URSA and NSF Grant Summer Student Researcher