想让机器人“看颜色”——区分积木颜色做分拣、识别色卡、甚至做一个跟随某颜色物体的小车,TCS34725是很好用的全彩颜色传感器。它输出红绿蓝(RGB)和光强数据,带红外截止滤光片,颜色读起来更准。这篇文章把接线和颜色识别讲清楚。
引脚和原理:RGBC四通道加红外滤光
TCS34725通过感光阵列测量红、绿、蓝三个通道的光强,附带上一次感应光强的“clear”通道,每通道16位数据。模块底部加了一片红外遮光片,能把干扰色准的红外成分滤掉,所以在不同光照下颜色识别更稳定。它还自带几个高亮度补光LED,环境光暗时也能正常工作。
模块引脚:SDA(I2C数据)、SCL(I2C时钟)、VCC(电源)、GND(地),外加可选的控制脚LED(点亮补光灯)和INT(中断)。它默认I2C地址是0x29。

接线:四根I2C线,供电认准3.3V更稳妥
TCS34725用I2C通信。接到Arduino Uno:SDA接A4、SCL接A5、GND接GND。供电这块要留意——很多模块的VCC标的是3.3V/5V都行,但也有部分必须是3.3V,接5V可能烧模块,稳妥起见优先接Arduino的3.3V引脚。具体看你买的那块板丝印说明。
接线表:VCC→3.3V(或按板说明)、GND→GND、SDA→A4、SCL→A5、LED和INT可选不接。这样四根线就到位,和别的I2C设备共用总线只要地址不冲突也可以。

读颜色:Adafruit库,传感器贴近被测物
软件上用Adafruit_TCS34725库最省心。程序里建一个传感器对象,用begin传入积分时间和增益,loop里调用读RGBC的API,把四个通道值取出来,就能看到当前物体红绿蓝分量各是多少。这些数值换算成直观的“这是红色还是蓝色”,是需要处理的。
这里有个关键点:传感器测量要在3到10毫米的距离上贴近被测物体表面,离远了就读不准。因为有了红外滤光和板载补光,正常室内光下就能用,受环境杂光影响比裸感光小得多。
颜色不准、读数怪异,几个排查点
读数很飘或认色不准,先确认传感器是不是贴近物体表面、距离有没有超出范围;再检查是不是有强光直射或反光,必要时调整积分时间/增益重新标定。要精确分辨相近色,靠原始RGB不够,还要做白平衡校准——先在白纸上读一组基准,再用它校正其它读数,颜色判定会准很多(这就是常说的gamma校正/白平衡)。
扫描不到0x29,先查SDA/SCL是否接反、VCC供电是否在模块支持范围。分拣机、颜色跟随小车、色卡识别这类“让机器看颜色”的需求,TCS34725是很划算的选择。
TCS34725是把“颜色”变成“数据”的一块好板。四根I2C线、一个Adafruit库,贴近被测物就能读出RGB,再配合白平衡校准,识别和分拣的颜色应用就能稳稳落地。







白纸上先校准一遍,相近色就分得出来了
板载补光暗处也能用,这点方便
贴近物体3到10毫米,离远了颜色就读不准
最好接3.3V,有的板子5V会烧,先看丝印