TCS34725 Color Sensor

来自Waveshare Wiki
跳转至: 导航搜索
TCS34725 Color Sensor
{{{name2}}}
{{{name3}}}
功能简介
特性 颜色传感器、光传感器
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I2C

产品概述

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

产品参数

  • 工作电压: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

使用说明

下载例程

在官网上找到对应产品,在产品资料打开下载路径,在wiki中下载示例程序:
TCS34725-Color-Sensor- (5).png
得到解压包并解压,得到如下文件:
TCS34725-Color-Sensor- (6).png
例程:树莓派 BCM2835、WiringPi、python例程、STM32例程、Arduino例程。

树莓派使用

TCS34725-Color-Sensor- (7).png
将解压文件中RaspberryPi文件夹复制到boot根目录下
TCS34725-Color-Sensor- (8).png
然后弹出U盘,将SD卡插入树莓派中,插上USB上电,查看/boot目录的文件:

ls /boot

TCS34725-Color-Sensor- (9).png
执行如下命令将其复制到用户目录下,并修改其用户权限:

sudo cp -r /boot/RaspberryPi/ ./

TCS34725-Color-Sensor- (10).png

sudo chmod 777 -R RaspberryPi/

进入目录,查看文件:
TCS34725-Color-Sensor- (11).png

安装库函数

运行程序前需要安装对应的函数库(wiringpi, bcm2835, python),否则程序无法正常使用。

  • 安装BCM2835库:

http://www.airspayce.com/mikem/bcm2835/
进入BCM2835的官网下载并把安装包复制到树莓派上,运行如下:

sudo tar zxvf bcm2835-1.xx.tar.gz
cd bcm2835-1.xx
sudo ./configure
make
sudo make check
sudo make install

其中xx代表的是下载的版本号,例如我下载的bcm2835-1.52
那么就应该执行:sudo tar zxvf bcm2835-1.52.tar.gz

  • 安装wiringPi库:
sudo apt-get install git
sudo git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build
  • 安装python库
sudo apt-get install python-pip 
sudo pip install RPi.GPIO
sudo pip install spidev
sudo apt-get install python-imaging
sudo apt-get install python-smbus
  • 打开树莓派I2C接口
sudo raspi-config

TCS34725-Color-Sensor- (12).png

TCS34725-Color-Sensor- (13).png
打开I2C功能后重启树莓派 sudo reboot
运行 i2cdetect -y 1
最后面的是数字1不是字母l,运行后可以看到当前已经正确连接的I2C设备。
TCS34725-Color-Sensor- (14).png

硬件连接

具体连接如下表所示:

TCS34725 Color Sensor 树莓派
VCC 3.3V
GND GND
SDA SDA
SCL SCL
INT 17
LED 18

TCS34725-Pi-WS.jpg

运行程序

  • BCM2835例程
cd bcm2835
sudo ./main
  • wiringPi例程
cd wiringpi
sudo ./main
  • python例程
cd python
sudo python main.py

注:BCM2835、wiringpi程序运行如果提示找不到文件,执行make即可

预期效果

执行BCM2835、wiringpi或者python程序得到的效果类似,下面是python测试红色运行结果:
其中R、G、B是RGB888格式以十进制分开输出,C是没有做任何处理的环境光强数值,RGB565、RGB888分别是对应格式的十六进制输出,LUX是已经处理过的环境光强数字,CT是色温。(http://www.360doc.com/content/17/0629/07/44859260_667365022.shtml),用户如果想测量色温偏差小,建议关闭LED灯。INT是中断,1标识光强超过设定值。
TCS34725-Color-Sensor- (16).png

将数值转换成颜色,可以通过下面连接的工具实现:
https://www.sioe.cn/yingyong/yanse-rgb-16/
或者直接下载:http://www.waveshare.net/w/upload/0/05/Hexacolor3.7z
TCS34725-Color-Sensor- (17).png00px

STM32

下载例程解压,使用Keil uVision5打开。例程使用的是HAL库。测试使用的开发板为微雪XNUCLEO-F103RB,芯片为STM32F103RBT6。例程使用串口2(PA2,PA3)输出数据。串口波特率为115200,其他默认:数据位8位,停止位1位,没有校验。

硬件连接

连接如下表所示

TCS34725 Color Sensor STM32
VCC 3.3V
GND GND
SDA SDA/D14/PB9
SCL SCL/D15/PB8
INT D8/PA9
LED PWM1/D9/PC7

TCS34725-STM32-WS.jpg

预期效果

下图为测试红色输出数据
TCS34725-Color-Sensor- (19).png
将数值转换成颜色,可以通过下面连接的工具实现:
https://www.sioe.cn/yingyong/yanse-rgb-16/
或者直接下载:http://www.waveshare.net/w/upload/0/05/Hexacolor3.7z
TCS34725-Color-Sensor- (17).pngTCS34725-Color-Sensor- (18).png

Arduino

下载例程解压,测试使用的是ARDUION UNO开发板,波特率为115200

硬件连接

TCS34725 Color Sensor Arduino
VCC 3.3V/5V
GND GND
SDA SDA
SCL SCL
INT D8
LED D9

预期效果

下图为测试红色输出数据
TCS34725-Color-Sensor- (20).png

将数值转换成颜色,可以通过下面连接的工具实现:
https://www.sioe.cn/yingyong/yanse-rgb-16/
或者直接下载:http://www.waveshare.net/w/upload/0/05/Hexacolor3.7z
TCS34725-Color-Sensor- (17).pngTCS34725-Color-Sensor- (18).png

文档

程序

软件

数据手册


批量下载教程——请戳Download-icon.png



对于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灯亮度即可。