概述
您现在可以通过这种可爱的彩色光传感器以令人眼花color乱的颜色看到电子设备。我们找到了市场上最好的色彩传感器TCS34725,它具有RGB和透明光敏元件。集成在芯片上并位于色彩感应光电二极管上的IR阻挡滤光片可最大程度地减少入射光的IR光谱分量,并可以精确地进行颜色测量。滤光片意味着您将获得比大多数传感器更真实的色彩,因为人类看不到红外线。该传感器还具有令人难以置信的3,800,000:1动态范围,并且积分时间和增益可调,因此适合在深色玻璃后面使用。
我们还添加了支持电路,例如3.3V稳压器,因此您可以安全地使用3-5VDC的电压为分接器供电,并为I2C引脚进行电平转换,以便它们可以与3.3V或5V逻辑一起使用。最后,我们指定了一个不错的中性4150°K温度LED,板上带有MOSFET驱动器,以照亮您要感应的内容。 LED可以通过任何逻辑电平输出轻松打开或关闭。
为获得更大的灵活性,我们为该评估板制作了两个不同的版本:适用于面包板的分线器和旨在与Flora可穿戴平台配合使用的可穿戴版本。
组装和接线
两个颜色传感器都预焊接了所有表面贴装组件。 Breakout-board版本附带一个可选的接头,用于面包板。焊接头是一个简单的过程:
程序集(仅限突破版本)
然后焊接!焊接所有引脚以确保良好的电气连接行动。
放置标题,如有必要,将标题修剪成一定长度,然后将其(长针向下)插入面包板。
将接点定位将接点放在排针的裸露短端上。
接线,这些传感器通过2线制I2C接口进行通信。要连接到处理器,总共只需要4条电线。
Flora接线:连接来源:
3.3v-》 3v(红线)
GND-》 GND(黑线)
SDA-》 SDA(白线)
SCL-》 SCL(绿线)
Arduino接线:从以下连接跳线:
5v-》 VIN(红线)
GND-》 GND(黑线)
SDA-》 SDA(橙色线)
SCL-》 SCL(白线)
注意:在老式的Arduino(如Duemilanove和pre R3 UNO)上,SDA位于Analog 4上一个d SCL位于模拟5上。
在R2 Megas之前,SDA位于Digtital 20上,SCL位于数字21上。对于莱昂纳多,SDA是数字2引脚,SCL是数字3引脚。
要控制LED (仅限突破版本)-可以将LED引脚拉低以关闭LED。这可以通过三种方式完成:
直接接地,以完全将其关闭。
连接到备用数字引脚,并使用digitalWrite()控制。
将LED引脚连接到INT引脚,并使用setInterrupt()进行控制(有关详细信息,请参见库参考)。
div》 Python和CircuitPython
将TCS34725传感器与Python和CircuitPython以及Adafruit CircuitPython TCS34725模块一起使用很容易。此模块使您可以轻松编写从传感器读取颜色的Python代码。
您可以将此电路与任何CircuitPython微控制器板或具有GPIO和Python的计算机配合使用,这要归功于我们的CircuitPython-for Adafruit_Blinka -Python兼容性库。
CircuitPython微控制器接线
首先,将TCS34725完全连接到您的开发板上,就像Arduino的前几页所示。以下是通过I2C连接将Feather M0连接到传感器的示例:
板3V 至传感器VIN
板GND 到传感器GND
板载SCL 到 sensorSCL
板载SDA 到传感器SDA
Python计算机接线
由于有数十种Linux计算机/主板可以使用我们将展示Raspberry Pi的接线。对于其他平台,请访问Linux上的CircuitPython指南,以了解您的平台是否受支持。
以下是与I2C相连的Raspberry Pi:
Pi 3V3 至传感器VIN
Pi GND 到传感器GND
Pi SCL 到传感器SCL
Pi SDA 到传感器SDA
CircuitPython安装TCS34725库 》
您需要在CircuitPython板上安装Adafruit CircuitPython TCS34725库。
首先请确保您正在为板运行最新版本的Adafruit CircuitPython。
下一步,您将需要安装必要的库才能使用硬件-请仔细按照以下步骤从Adafruit的CircuitPython库捆绑包中查找和安装这些库。我们的简介指南上有一个很棒的页面,介绍如何为快速和非表达板安装库包。
请记住非表达板,例如,您需要从束中手动安装必要的库:
adafruit_tcs34725.mpy
adafruit_bus_device
在继续制作之前确保您开发板上的lib文件夹或根文件系统已复制 adafruit_tcs34725.mpy 和 adafruit_bus_device 文件和文件夹。
下一步连接到开发板的串行REPL,这样您就可以在CircuitPython上运行》》》 提示。
TCS34725库的Python安装
您需要安装Adafruit_Blinka库,该库在以下方面提供CircuitPython支持蟒蛇。这可能还需要在您的平台上启用I2C并验证您正在运行Python3。由于每个平台都略有不同,并且Linux经常更改,请访问Linux上的CircuitPython指南以准备好您的计算机!
完成后,从命令行运行以下命令:
sudo pip3 install adafruit-circuitpython-tcs34725
如果您的默认Python是版本3,则可能需要改为运行“ pip”。只要确保您不尝试在Python 2.x上使用CircuitPython,就不支持它!
CircuitPython和Python用法
为演示传感器的用法,我们将对其进行初始化,并从开发板的Python REPL中读取颜色以及更多内容。
运行以下代码以导入必要的模块并初始化与传感器的I2C连接:
下载:文件
复制代码
import board
import busio
import adafruit_tcs34725
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c) import board
import busio
import adafruit_tcs34725
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c)
现在,您就可以从传感器使用以下任意属性:
color_rgb_bytes -红色,绿色和蓝色值的三元组。这些以字节为单位从0到255返回(0是低强度,255是最大强度)。
color_temperature -传感器检测到的开尔文色温。
lux -传感器检测到的以勒克斯为单位的光强度。这是根据颜色计算得出的,可能不是非常准确!
下载:文件
复制代码
print(‘Color: ({0}, {1}, {2})’.format(*sensor.color_rgb_bytes))
print(‘Temperature: {0}K’.format(sensor.color_temperature))
print(‘Lux: {0}’.format(sensor.lux)) print(‘Color: ({0}, {1}, {2})’.format(*sensor.color_rgb_bytes))
print(‘Temperature: {0}K’.format(sensor.color_temperature))
print(‘Lux: {0}’.format(sensor.lux))
此外,您还可以读取和写入一些属性来更改传感器的行为:
integration_time -传感器的积分时间(以毫秒为单位)。
gain -传感器的增益必须为1、4、16、60。
ul》
下载:文件
复制代码
sensor.integration_time = 200
sensor.gain = 60 sensor.integration_time = 200
sensor.gain = 60
有关每秒打印范围的完整演示,请参见simpletest.py示例。将其保存为板上的 code.py 并检查REPL输出以查看每秒打印的范围。
带有CircuitPython的TCS34725!
完整的示例代码
下载:Project Zip 或 tcs34725_simpletest.py | 在Github上查看
复制代码
# Simple demo of the TCS34725 color sensor.
# Will detect the color from the sensor and print it out every second.
import time
import board
import busio
import adafruit_tcs34725
# Initialize I2C bus and sensor.
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c)
# Main loop reading color and printing it every second.
while True:
# Read the color temperature and lux of the sensor too.
temp = sensor.color_temperature
lux = sensor.lux
print(‘Temperature: {0}K Lux: {1}’.format(temp, lux))
# Delay for a second and repeat.
time.sleep(1.0)
# Simple demo of the TCS34725 color sensor.
# Will detect the color from the sensor and print it out every second.
import time
import board
import busio
import adafruit_tcs34725
# Initialize I2C bus and sensor.
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_tcs34725.TCS34725(i2c)
# Main loop reading color and printing it every second.
while True:
# Read the color temperature and lux of the sensor too.
temp = sensor.color_temperature
lux = sensor.lux
print(‘Temperature: {0}K Lux: {1}’.format(temp, lux))
# Delay for a second and repeat.
time.sleep(1.0)
Arduino代码
下载Adafruit_TCS34725
要开始读取传感器数据,您需要安装
Adafruit_TCS34725
最简单的方法是打开管理Arduino IDE中的库。.. 菜单
然后搜索 Adafruit TCS34725 ,然后单击安装
我们还提供了有关Arduino库安装的出色教程,网址为:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
测试传感器
运行TCS34725测试草图以验证传感器是否正常工作。
将草图上传到Aruduino或Flora并打开串行监视器以查看 输出。草图应打印出基本的颜色测量参数,如下所示。移动传感器,遮盖传感器和/或将其暴露在不同的光源下以查看其反应。
报告的颜色参数为:
色温-以开尔文
勒克斯-或每平方米流明
R,G 和 B (已过滤的)值
清除(未过滤的)值
ColorView! ColorView草图演示了使用板载LED进行反射光测量。白色LED用于照亮附近的物体,传感器测量从物体反射的光。然后,ColorView草图使用传感器的RGB输出来驱动RGB指示灯,以使其与传感器看到的颜色匹配!
ColorView组件除了处理器和颜色传感器之外,您还需要RGB LED和一些电阻器:
1个1K欧姆电阻器(棕色,黑色,红色,金色)
2个560欧姆电阻(绿色,蓝色,棕色,金色)
ColorView接线除了基本电源和I2C接线外,您还需要以下连接:
LED共阳极(长引脚)-》 5v。
LED红色引脚-》 1K电阻-》 Arduino引脚3
LED Gre zh-CN引脚-》 560欧姆电阻器-》 Arduino引脚5
LED蓝色引脚-》 560欧姆电阻器-》 Arduino引脚6
将ColorView草图上传到Arduino,然后将其他对象放置在传感器前面。 LED的颜色应与感测到的对象的颜色匹配!
图书馆参考
构造和初始化:
Adafruit_TCS34725(tcs34725IntegrationTime_t = TCS34725_INTEGRATIONTIME_2_4MS,
tcs34725Gain_t = TCS34725_GAIN_1X );
声明具有可选积分时间和增益值的TCS34725传感器。
布尔值Adafruit_TCS34725 :: begin(void)
初始化TCS34725颜色传感器。先调用此函数。
增益和积分时间: :
void Adafruit_TCS34725 :: setIntegrationTime(tcs34725IntegrationTime_t it)
设置积分从传感器获取颜色样本的时间。较长的积分时间可用于在弱光条件下提高灵敏度。有效积分时间为:
TCS34725_INTEGRATIONTIME_2_4MS = 0xFF,/** 《2.4ms */
TCS34725_INTEGRATIONTIME_24MS = 0xF6,/** 《24ms */
TCS34725_INTEGRATIONTIME_50MS = 0xEB,/** 《50ms */
TCS34725_INTEGRATIONTIME_101MS = 0xD5,/** 《101ms */
TCS34725_INTEGRATIONTIME_154MS = 0xC0,/** 《154ms */
TCS34725_INTEGRATIONTIME_700MS = 0x00/** 《700ms */
无效Adafruit_TCS34725 :: setGain(tcs34725Gain_t gain )
设置ADC的增益以控制传感器的灵敏度。有效的增益设置为:
TCS34725_GAIN_1X = 0x00,/** 《无增益*/
TCS34725_GAIN_4X = 0x01,/** 《2x增益*/
TCS34725_GAIN_16X = 0x02,/** 《16倍增益*/
TCS34725_GAIN_60X = 0x03/** 《60x增益*/
光读数和计算:
void Adafruit_TCS34725 :: getRawData(uint16_t * r,uint16_t * g,uint16_t * b,uint16_t * c )
读取原始传感器的红色,绿色,蓝色和透明部分的传感器输出。
uint16_t Adafruit_TCS34725 :: calculateColorTemperature(uint16_t r,uint16_t g,uint16_t b )
从红色,绿色和蓝色分量计算色温。
uint16_t Adafruit_TCS34725 :: calculateLux(uint16_t r, uint16_t g,uint16_t b )
计算来自红色,绿色和蓝色分量的照度。
中断和LED控制:
无效Adafruit_TCS34725 :: setInterrupt(boolean i )
设置传感器中断,以在检测到的电平在限制范围内时生成中断(请参见下面的setIntLimits())。 Int引脚仅在突破版本上可用。
布尔参数可用于控制LED。在突破版本上,必须将LED引脚连接至INT引脚以进行LED控制。
传递“ false”将启用板载LED进行反射光测量。
传递“ true”将关闭LED以进行入射光测量。
void Adafruit_TCS34725 :: clearInterrupt(void )
清除传感器中断。
无效Adafruit_TCS34725 :: setIntLimits(uint16_t低,uint16_t高)
设置中断的上限和下限。有关中断操作的更多详细信息,请参阅数据表。
在处理中使用它!
Adafruit_TCS34725库包括一个处理草图,可与ColorView Arduino草图通信并在计算机屏幕上实时显示颜色
处理草图仅适用于处理1.5.1。它与处理版本2.0不兼容!
在Arduino上加载ColorView ,打开ColorView示例草图并将其上传到您的Arduino。
记下Arduino使用的串行端口。
在处理中加载ColorView.pde 导航到Adafruit_TCS34725 Library文件夹内的“ Processing”文件夹,然后打开“ ColorView.pde”。
编辑串行端口找到打开串行端口的行并进行编辑使用与Arduino相同的端口。
然后运行!运行处理草图时,它将显示传感器文本输出,并弹出带有色标的窗口匹配传感器看到的颜色。
识别颜色
使用颜色传感器识别特定颜色并不像将传感器对准色标并进行读取那样简单。有许多因素会影响读数,例如距离,视野和环境照明条件。 Adafruit论坛成员systembolaget开发了一种能够快速可靠地识别许多不同颜色的系统,并针对该主题编写了出色的教程。
请参见下面的视频和github存储库链接:
颜色查找器Github存储库
下载
文件
Adafruit TCS34725 Arduino库
TCS34725数据表
在Adafruit Fritzing库中折叠对象
用于Breakout版本的EagleCAD PCB文件
用于Flora版本的EagleCAD PCB文件
突破委员会版本
原理图和制作印刷
Flora可缝制版本
示意图和装配图
责任编辑:wv
-
颜色传感器
+关注
关注
2文章
93浏览量
18167
发布评论请先 登录
相关推荐
评论