TCS34725 是一款由 AMS(艾姆斯半导体)生产的高精度、低功耗 RGB 及明度(Clear)颜色感应芯片,常用于智能设备、显示屏背光调节、机器人颜色识别及工业自动化检测等领域。TCS3472器件提供红、绿、蓝 (RGB) 以及明光感应的数字返回值。 色敏光电二极管集成片裁和局部化的红外遮光滤光片,最大程度减小了入射光的红外频谱成份,让颜色管理更加准确。 高敏感性、宽动态范围以及红外遮光滤光片使得 TCS3472 成为光线条件变化和通过衰减材料条件下的理想色敏元件解决方案。
内置 IR(红外)阻挡滤光片
普通颜色传感器易受环境光中的红外线(IR)干扰,导致测得的 RGB 偏红。TCS34725 在芯片内部集成了 IR 滤光片,极大地削弱了红外线干扰,能够还原更真实的自然光颜色。
Clear 通道(无滤光光强)
除了 RGBC 中的三原色,Clear 通道可以独立测量环境光总强度,常用于精确计算环境光照度(Lux)或对 RGB 数据进行归一化处理。
高灵敏度与可调增益/积分
通过灵活调整积分时间和增益倍数,既可以在透光率极低的暗色介质下测量,也可以在亮光环境中避免传感器饱和溢出。
硬件中断输出(INT 脚)
允许开发者设定光强上下限阈值。当光强超出设定区间时,INT 引脚会自动拉低,唤醒主控 CPU,从而实现极低功耗的“事件驱动”检测。
工作电压:3.3v~5v
模块功耗:235 μA(测量时)/ 2.5 μA(待机)
通信接口:I2C接口(I从机地址:0x29)
颜色通道:红 (R)、绿 (G)、蓝 (B)、无滤光 (C)
动态范围:3,800,000 : 1
增益调节:Gain1X, 4X, 16X, 60X
积分时间:2.4 ms ~ 614.4 ms
中断功能:INT引脚可配置阈值中断
| 电路原理图 | 技术手册 |
| 本次以树莓派Pico主板为例按下图接好连接线,务必注意不可接反,默认接3.3V供电,否则会烧毁设备 |

| TCS34725 下载TCS34725这个源代码直接上传到树莓派Pico文件内,在运行程序,将传感器对着不同颜色查看反馈状态(如下图) |

调整检测距离:将传感器距离被测物体固定在 0.8cm ~ 1.2cm。太远会被遮挡光线(黑),太近光线暴晒会导致颜色偏白。
微调黑色阈值:如果你的黑色依然被识别成其他颜色,看串口打印的 Clear光强 数值。把代码里的 if c < 150: 改成你测黑色时 Clear 的实际数值(例如 if c < 200:)。
微调蓝色范围:在 HSV 中,标准的蓝色区间是 190° ~ 250°。如果你用的是深蓝色或浅蓝色,把代码中 if 190 <= h <= 250: 的范围稍微拉宽(如 180 <= h <= 260)即可。
本次以ESP32-S3主板为例按下图接好连接线,务必注意不可接反,否则会烧毁设备。

1.需要在Arduino IDE中点击左侧栏的 库管理器(Library Manager)(或按 Ctrl + Shift + I),搜索并安装以下库:
Adafruit TCS34725
| TCS34725 下载这个源代码直接用Arduino IDE编译上传程序,上打开串口监视查看(如下图) |

这段 ESP32 C++ 代码的核心工作流程可以拆解为 4 个步骤:
1. 硬件通信初始化 (setup)
自定义引脚:通过 Wire.begin(5, 4) 设置 ESP32 将内置的 I2C 总线映射到 GPIO 5 (SDA) 和 GPIO 4 (SCL)。
连接传感器:调用 tcs.begin() 向地址 0x29 发送握手信号。若收到回应则成功启动,否则在串口报错并挂起。
2. 原始数据采集 (loop -> getRawData)
传感器内部的光电二极管配合积分电路,把光信号转为 16 位的无符号整数(0~65535)。
tcs.getRawData(&r, &g, &b, &c) 读取 4 个通道的数据:c (Clear):没有经过滤光的总光强(代表环境或反射光的明暗)。r, g, b:分别经过红、绿、蓝滤光片后的独立光强。
3. 数据归一化与色彩空间转换 (rgbToHsv)
比例归一化:用 r / c、g / c、b / c 消除距离远近或补光灯强弱对颜色本身的影响,并将范围伸缩到 0~255。
RGB 转 HSV:
H (Hue 色相):计算 RGB 三者最大值与最小值之差(▲),将三原色比例映射为 0°~360° 的色彩圆盘角度(如 0° 为红,120° 为绿,240° 为蓝)。
S (Saturation 饱和度):根据色彩极值差计算颜色的鲜艳程度。
V (Value 明度):取 RGB 中的最大值代表亮暗。
4. 逻辑分类判定 (getRecognizedColor)
按照“光强/明度→饱和度→色相”的优先级进行层层筛选:
先判无光/黑色:如果总光强 C < 150 或明度 V < 0.25,说明光线被大量吸收或无物体,直接判为黑色。
再判无色系(白/灰):如果饱和度 S < 0.20(说明 RGB 三色非常接近,没有偏向某种鲜艳色彩),明度高则是白色,明度低则是灰色。
最后判有色系:对剩下的鲜艳颜色,直接根据 色相角度 H划分区间:
190°~250°一蓝色
80°~160°一绿色
35°~80°-黄色
330°~360°或0°~15°红色