TCS34725 Color Sensor

来自Waveshare Wiki
Eng50讨论 | 贡献2022年8月11日 (四) 17:23的版本 (文本替换 - 替换“<h1>售后</h1>”为“<h1>技术支持</h1>”)
跳转至: 导航搜索
TCS34725 Color Sensor
{{{name2}}}
{{{name3}}}
功能简介
特性 颜色传感器、光传感器
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I2C

说明

产品简介

本模块是ams AG 的 TCS34725FN彩色光数字转换器为核心的颜色传感器,传感器提供红色,绿色,蓝色(RGB)和清晰光感应值的数字输出。集成红外阻挡滤光片可最大限度地减少入射光的红外光谱成分,并可精确地进行颜色测量。具有高灵敏度,宽动态范围和红外阻隔滤波器。最小化IR和UV光谱分量效应,以产生准确的颜色测量。并且带有环境光强检测和可屏蔽中断。通过I2C接口通信。

产品特性

参数名称 参数
转换芯片 PCF8591
工作电压 3.3V/5V
控制芯片 TCS34725FN
逻辑电压 3.3V/5V
通信接口 I2C
产品尺寸 27X20(mm)

接口说明

引脚 功能
VCC 电源正(3.3V/5V)
GND 电源地
SDA I2C数据输入
SCL I2C时钟输入
INT 中断输出(开漏输出)
LED 发光二极管

硬件说明

芯片

本产品采用TCS34725为核心,是一款基于IIC总线通信的彩色光数字转换器。传感器提供红色,绿色,蓝色(RGB)和清晰光感应值的数字输出,带有集成红外阻隔滤波器。具有高灵敏度,宽动态范围。可在不同的光照条件下都可以实现准确的色彩和环境光线感应,带有可屏蔽中断。

通信协议

从上的得知使用的是I2C通信,I2C 通信,一条数据线,一条时钟线。 I2C 总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。
TCS34725-Color-Sensor- (1).png
开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。

I2C写时序

TCS34725-Color-Sensor- (2).png
首先主机(即树莓派,后面统称为主机)会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合成 8 位的数据发送给从机(即 TSL2581 传感器模块,后面统称为从机),从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机,从机接收到发送响应信号,此时主机发送命令寄存的值,从机回应一个响应信号,直到主机发送一个停止信号,此次 I2C 写数据操作结束。

I2C读时序

TCS34725-Color-Sensor- (3).png
首先主机会发送一个开始信号,然后将其 I2C 的 7 位地址与写操作位组合成 8 位的数据发送给从机,从机接收到后会响应一个应答信号,主机此时将命令寄存器地址发送给从机,从机接收到发送响应信号,此时主机重新发送一个开始信号,并且将其 7 位地址和读操作位组合成 8 位的数据发送给从机,从机接收到信号后发送响应信号,再将其寄存器中的值发送给主机,主机端给予响应信号,直到主机端发送停止信号,此次通信结束。

I2C地址

TCS34725的I2C设备地址为0X29

TCS34725-Color-Sensor- (4).png

TCS34725数据手册第34页

注意:0X29这个设备地址是7位的,8位设备地址需要向高位移一位变成0X52

开启I2C接口

  • 打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config 
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动

RPI open i2c.png
然后重启树莓派:

sudo reboot

安装库

如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用

BCM2835

#打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/

wiringPi

#打开树莓派终端,并运行以下指令
cd
sudo apt-get install wiringpi
#对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错

#Bullseye分支系统使用如下命令:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
# 运行gpio -v会出现2.70版本,如果没有出现说明安装出错

lgpio

#打开树莓派终端,并运行以下指令
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
sudo make install

# 更多的可以参考官网:https://github.com/gpiozero/lg
  • 安装Python函数库
#python2
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-pil
sudo apt-get install python-numpy
sudo pip install RPi.GPIO
sudo pip install spidev

下载测试程序

打开树莓派终端,执行:

sudo apt-get install p7zip-full -y
sudo wget  https://www.waveshare.net/w/upload/a/a1/TCS34725_Color_Sensor_code.7z
7z x TCS34725_Color_Sensor_code.7z -O./TCS34725_Color_Sensor_code
cd TCS34725_Color_Sensor_code/RaspberryPi/

硬件连接

树莓派连接引脚对应关系
TCS34725 Raspberry Pi 功能
Board物理引脚序号
VCC 3.3V 电源输入
GND GND 电源地
SDA 3 I2C数据输入
SCL 5 I2C时钟信号
INT 11 中断输出(开漏输出)
LED 12 发光二极管

TCS34725 RPI 2.jpg

运行测试程序

以下命令请在RaspberryPi下执行,否则不在索引不到目录;

C

  • 重新编译,编译过程可能需要几秒

bcm2835

cd bcm2835
sudo make clean
sudo make 
sudo ./main

wiringPi

cd wiringPi
sudo make clean
sudo make 
sudo ./main

python

cd python
sudo python main.py

现象

在树莓派运行程序后,就会输出检测到的颜色值,目前是检测红色的值,如下图所示:

bcm2835

TCS34725 RPI Bcm 1.jpg

wiringPi

TCS34725 RPI WPI 1.jpg

python

TCS34725 RPI PY 1.jpg

其中R、G、B是RGB888格式以十进制分开输出,C是没有做任何处理的环境光强数值,RGB565、RGB888分别是对应格式的十六进制输出,LUX是已经处理过的环境光强数字,CT是色温。(http://www.360doc.com/content/17/0629/07/44859260_667365022.shtml),用户如果想测量色温偏差小,建议关闭LED灯。INT是中断,1标识光强超过设定值。
将数值转换成颜色,可以通过下面连接的工具实现:
https://www.sioe.cn/yingyong/yanse-rgb-16/
或者直接下载:https://www.waveshare.net/w/upload/0/05/Hexacolor3.7z
TCS34725 RPI 3.jpg

STM32使用教程

我们提供的例程是基于STM32F103RBT6,提供的连接方式是对应的STM32F103RBT6的引脚为例,如果有需要使用其他STM32,请按实际引脚连接

硬件连接

STM32F103RB连接引脚对应关系
TCS34725 STM32 功能
VCC 3.3V 电源输入
GND GND 电源地
SDA PB9 I2C数据输入
SCL PB8 I2C时钟信号
INT PB4 中断输出(开漏输出)
LED PB10 发光二极管

TCS34725 STM32 2.jpg

软件说明

例程是基于HAL库进行开发的。 请在资料里面下载程序,找到STM32程序文件目录,打开TCS34725_Color_Sensor_code\STM32\XNUCLEO-F103RB\MDK-ARM
目录下的TCS34725_Color_Sensoc.uvprojx,即可看到程序。
MQ5 STM32 1.jpg

打开main.c,重新编译下载即可。
MQ5 STM32 2.jpg

下载成功后,运行SSCOM,就可以实时查看传感器的状态啦,当前检测的是红色。
TCS34725 STM32 1.jpg

现象

打开串口调试软件,串口实时输出检测到颜色值。

Arduino使用教程

本例程已经在Arduino uno上测试通过,直接按下表连接Arduino uno即可

硬件连接

您可以对照以下表格连线。

Arduino连接引脚对应关系
PCF8591 Arduino 功能
VCC 5V 电源输入
GND GND 电源地
SDA SDA I2C数据输入
SCL SCL I2C时钟信号
INT D5 中断输出(开漏输出)
LED D6 发光二极管

TCS34725 Arduino 2.jpg

安装编译软件(Windows教程)

arduino IDE 安装教程

运行程序

在我们提供的资料里面下载程序,并解压,再进入TCS34725_Color_Sensor_code/Arduino/Color_Sensor目录下
双击打开Color_Sensor.ino文件。
选择你的开发板,跟对应的端口。

MQ5 Arduino 1.jpg

进行编译下载,如下图:
MQ5 Arduino 2.jpg

下载成功后,打开Arduino串口监视器,就可以实时查看传感器的状态啦,当前为红色的值。
TCS34725 Arduino 1.jpg

现象

打开Arduino串口监视器,串口实时输出检测到的颜色值。

FAQ



对于BCM2835和wiringPi例程出现这样的提示
TCS34725-Color-Sensor- (21).png
Python例程
TCS34725-Color-Sensor- (22).png
如果出现以上问题这是设备数据I2C数据传输错误。大多数是硬件连接错误,请检查硬件连接是否正确,检查硬件连接是否有问题,运行i2cdetect -y 1 如果有显示IIC地址就表示硬件连接无问题。
TCS34725-Color-Sensor- (23).png

如果硬件连接正确那么是不正确的使用树莓派控制可能会导致(详情看下面),重启树莓派即可。


如果运行wiringPi例程正常,再运行python或者BCM2835可能会屏幕无法正常刷新,因为bcm2835库是树莓派cpu芯片的库函数,底层是直接操作寄存器,而wiringPi库和python的底层都是通过读写linux系统的设备文件操作设备,可能导致GPIO口异常,重启树莓派可完美解决。


确认波特率是否设置为115200,对于STM32例程请确认电脑正确连接开发板USART2(PA2,PA3),PA2为TXD,并且选择正确的COM端口。控制面板->硬件->设备管理器。 TCS34725-Color-Sensor- (24).png


请确认器件连接没有问题,如果没问题请按下复位按键。


这种情况是光强超出检查范围,减小增益可以完美解决(在初始里面修改,或者在初始化后面重新写入一个增益设置TCS34725_Set_Gain(TCS34725_GAIN_16X))


因为积分时间决定了RGBC通道数据最大值,修改积分时间会导致颜色偏暗或者偏白。只需要增加或减少LED亮度即可。


中断是和Clear通道里面的数据进行比较,Clear通道里面的数据和积分时间有关系,经过实际测量在增益为60倍情况下 TCS34725-Color-Sensor- (28).png
所以用户如果需要速度比较快的采集数据时,要注意重新设置中断数值。另外在积分时间为2.4ms时RGB数据比较低所以转换出来的颜色与实际颜色有偏差,需要加大LED灯亮度即可。






技术支持


联系人:黄工
QQ:2850151199
EMAIL:2850151199@qq.com
电话:0755-83040712
微信:扫下方二维码添加
Service20-Weichat.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证