首页 动态 版块 商城 我的
 退出
游客  
等级:
金币:
经验值:

TCS34725颜色识别传感器 Python/C++编程 树莓派与ESP32使用例程

  23 
 0
 3
RASPI   ydxhuo.com 
文章主图


一:颜色传感器介绍

TCS34725 是一款由 AMS(艾姆斯半导体)生产的高精度、低功耗 RGB 及明度(Clear)颜色感应芯片,常用于智能设备、显示屏背光调节、机器人颜色识别及工业自动化检测等领域。TCS3472器件提供红、绿、蓝 (RGB) 以及明光感应的数字返回值。 色敏光电二极管集成片裁和局部化的红外遮光滤光片,最大程度减小了入射光的红外频谱成份,让颜色管理更加准确。 高敏感性、宽动态范围以及红外遮光滤光片使得 TCS3472 成为光线条件变化和通过衰减材料条件下的理想色敏元件解决方案。

1.产品特点

内置 IR(红外)阻挡滤光片

普通颜色传感器易受环境光中的红外线(IR)干扰,导致测得的 RGB 偏红。TCS34725 在芯片内部集成了 IR 滤光片,极大地削弱了红外线干扰,能够还原更真实的自然光颜色。


Clear 通道(无滤光光强)

除了 RGBC 中的三原色,Clear 通道可以独立测量环境光总强度,常用于精确计算环境光照度(Lux)或对 RGB 数据进行归一化处理。


高灵敏度与可调增益/积分

通过灵活调整积分时间和增益倍数,既可以在透光率极低的暗色介质下测量,也可以在亮光环境中避免传感器饱和溢出。


硬件中断输出(INT 脚)

允许开发者设定光强上下限阈值。当光强超出设定区间时,INT 引脚会自动拉低,唤醒主控 CPU,从而实现极低功耗的“事件驱动”检测。

2.技术参数

工作电压: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引脚可配置阈值中断

3.技术资料

电路原理图技术手册


二:树莓派例程

1.树莓派Pico接线图

本次以树莓派Pico主板为例按下图接好连接线,务必注意不可接反,默认接3.3V供电,否则会烧毁设备


Image

2.Python程序


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


Image


3.问题建议

调整检测距离:将传感器距离被测物体固定在 0.8cm ~ 1.2cm。太远会被遮挡光线(黑),太近光线暴晒会导致颜色偏白。

微调黑色阈值:如果你的黑色依然被识别成其他颜色,看串口打印的 Clear光强 数值。把代码里的 if c < 150: 改成你测黑色时 Clear 的实际数值(例如 if c < 200:)。

微调蓝色范围:在 HSV 中,标准的蓝色区间是 190° ~ 250°。如果你用的是深蓝色或浅蓝色,把代码中 if 190 <= h <= 250: 的范围稍微拉宽(如 180 <= h <= 260)即可。



三:ESP32例程

1.ESP32接线图

本次以ESP32-S3主板为例按下图接好连接线,务必注意不可接反,否则会烧毁设备。

Image

2.C++程序

1.需要在Arduino IDE中点击左侧栏的 库管理器(Library Manager)(或按 Ctrl + Shift + I),搜索并安装以下库:

Adafruit TCS34725

TCS34725  下载这个源代码直接用Arduino IDE编译上传程序,上打开串口监视查看(如下图)


Image



3.逻辑解析

这段 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°红色



作者签名: www.ydxhuo.com   楼主  2026-08-10 21:06:35
回复列表
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
您的IP: 216.73.216.31 , 2026-08-12 19:48:04
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
(3) 分享
分享

请保存二维码或复制链接进行分享

取消
免责声明
1、本站资源,均来自网络与个人作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !

侵权删除请致信 E-Mail:ydxho@qq.com
已有0次打赏