产品概述
本模块是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 总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。

开始信号:SCL 为高电平时, SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。
I2C写时序

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

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

TCS34725数据手册第34页
|
注意:0X29这个设备地址是7位的,8位设备地址需要向高位移一位变成0X52
使用说明
下载例程
在官网上找到对应产品,在产品资料打开下载路径,在wiki中下载示例程序:

得到解压包并解压,得到如下文件:

例程:树莓派 BCM2835、WiringPi、python例程、STM32例程、Arduino例程。
树莓派使用

将解压文件中RaspberryPi文件夹复制到boot根目录下

然后弹出U盘,将SD卡插入树莓派中,插上USB上电,查看/boot目录的文件:
ls /boot

执行如下命令将其复制到用户目录下,并修改其用户权限:
sudo cp -r /boot/RaspberryPi/ ./

sudo chmod 777 -R RaspberryPi/
进入目录,查看文件:

安装库函数
运行程序前需要安装对应的函数库(wiringpi, bcm2835, python),否则程序无法正常使用。
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
sudo apt-get install git
sudo git clone git://git.drogon.net/wiringPi
cd wiringPi
sudo ./build
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
sudo raspi-config


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

硬件连接

具体连接如下表所示:
TCS34725 Color Sensor |
树莓派
|
VCC |
3.3V
|
GND |
GND
|
SDA |
SDA
|
SCL |
SCL
|
INT |
17
|
LED |
18
|
运行程序
cd bcm2835
sudo ./main
cd wiringpi
sudo ./main
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标识光强超过设定值。

将数值转换成颜色,可以通过下面连接的工具实现:
https://www.sioe.cn/yingyong/yanse-rgb-16/
或者直接下载:https://wiki.diustou.com/w/upload/0/05/Hexacolor3.7z


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
|
预期效果
下图为测试红色输出数据

将数值转换成颜色,可以通过下面连接的工具实现:
https://www.sioe.cn/yingyong/yanse-rgb-16/
或者直接下载:https://wiki.diustou.com/w/upload/0/05/Hexacolor3.7z


Arduino
下载例程解压,测试使用的是ARDUION UNO开发板,波特率为115200
硬件连接
TCS34725 Color Sensor |
Arduino
|
VCC |
3.3V/5V
|
GND |
GND
|
SDA |
SDA
|
SCL |
SCL
|
INT |
D8
|
LED |
D9
|
预期效果
下图为测试红色输出数据

将数值转换成颜色,可以通过下面连接的工具实现:
https://www.sioe.cn/yingyong/yanse-rgb-16/
或者直接下载:https://wiki.diustou.com/w/upload/0/05/Hexacolor3.7z

