颜色传感器TCS34725

简介

TCS34725是一款低成本,高性价比的RGB全彩颜色识别传感器,传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色,支持明光感应,可以输出对应的具体数值,帮助您还原颜色本真。
为了提高精度,防止周边环境干扰,我们特意在传感器底部添加了一块红外遮光片,最大程度减小了入射光的红外频谱成份,让颜色管理更加准确。板载自带四个高亮LED,可以让传感器在低环境光的情况下依然能够正常使用,实现“补光”的功能。模块采用I2C通信,拥有PH2.0和XH2.54(面包板)两种接口,用户可以根据自己的需求来选择接口,更加便利。

产品参数

  • 工作电压:3.3-5V
  • 工作电流:65uA
  • 检测距离:3-10mm
  • 时钟频率:0-400KHZ
  • 接 口:I2C接口和2.54间距接口
  • I2C地址:0x29
  • 温度范围:-30℃ ~ +70℃
  • 尺 寸:18.5 mm * 23 mm
  • 重量:12 g

引脚说明

标号 名称 功能描述
1 I2C I2C接口:SDA SCL GND VCC
2 SDA I2C数据信号
3 SCL I2C时钟信号
4 VCC 电源正极3.3-5V
5 GND 电源负极
6 LED 控制传感器附近的4个LED灯,高信号或者悬空时LED灯亮,低信号灭
7 INT 中断输出,低电平有效

注意:

  1. 本模块的I2C地址是0x29
  2. 使用XH2.54(面包板兼容)接口时,需要自行焊接
  3. 底部红外遮光片上的一层保护纸可以撕下来

使用教程

将颜色传感器放在色卡10mm处,检测不同的颜色,RGB灯显示出与色卡相应的颜色。

准备

  • 硬件
    • UNO x1
    • 颜色传感器 x1
    • RGB灯模块 x1
    • 4P传感器线 x1
  • 软件

接线图

颜色传感器TCS34725

将传感器放置于被测物体正面,间距控制在3~10mm之间。

样例代码

DFRobot_TCS34725 Arduino库(Github)
如何安装库?

/*!
 * @file  colorview.ino
 * @brief Gets the ambient light color
 * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @license     The MIT License (MIT)
 * @author      PengKaixing(kaixing.peng@dfrobot.com)
 * @version     V1.0.0
 * @date        2022-03-16
 * @url         https://github.com/DFRobot/DFRobot_TCS
 */
#include "DFRobot_TCS34725.h"

DFRobot_TCS34725 tcs = DFRobot_TCS34725(&Wire, TCS34725_ADDRESS,TCS34725_INTEGRATIONTIME_24MS, TCS34725_GAIN_1X);
void setup() 
{
  Serial.begin(115200);
  Serial.println("Color View Test!");

  while(tcs.begin() != 0)
  {
    Serial.println("No TCS34725 found ... check your connections");
    delay(1000);
  }
}

void loop() {
  uint16_t clear, red, green, blue;
  tcs.getRGBC(&red, &green, &blue, &clear);
  tcs.lock();  
  Serial.print("C:\t"); Serial.print(clear);
  Serial.print("\tR:\t"); Serial.print(red);
  Serial.print("\tG:\t"); Serial.print(green);
  Serial.print("\tB:\t"); Serial.print(blue);
  Serial.println("\t");
  
  // Figure out some basic hex code for visualization
  uint32_t sum = clear;
  float r, g, b;
  r = red; r /= sum;
  g = green; g /= sum;
  b = blue; b /= sum;
  r *= 256; g *= 256; b *= 256;
  Serial.print("\t");
  Serial.print((int)r, HEX); Serial.print((int)g, HEX); Serial.print((int)b, HEX);
  Serial.println();
}


Mind+ 上传模式编程

  1. 下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
  2. 切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
  3. “扩展”中选择“主控板”中的“Arduino Uno”或者“microbit”等其他支持的主控板,“传感器”中加载“颜色识别传感器”。 详细教程:Mind+基础wiki教程-加载扩展库流程
  4. 进行编程,程序如下图:
  5. 菜单“连接设备”,“上传到设备”
  6. 程序上传完毕后,打开串口即可看到数据输出。详细教程:Mind+基础wiki教程-串口打印

程序下载:点击下载

结果

<File:TCS34725串口.png>

红色R的值高于蓝色B和绿色G,RGB灯的的颜色偏红色。

Mind+ Python模式编程(行空板)

Mind+Python模式为完整Python编程,因此需要能运行完整Python的主控板,此处以行空板为例说明

连接图

操作步骤

1、下载及安装官网最新软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装

2、切换到“Python模式”。“扩展”中选择“官方库”中的“行空板”和“pinpong库”中的”pinpong初始化“和“颜色识别传感器”。切换模式和加载库的详细操作链接

3、进行编程

4、连接行空板,程序点击运行后,可在终端查看数据。行空板官方文档-行空板快速上手教程 (unihiker.com)

代码编程

以pinpong库为例,行空板官方文档-行空板快速上手教程 (unihiker.com)

#  -*- coding: UTF-8 -*-

# MindPlus
# Python
from pinpong.libs.dfrobot_tcs34725 import TCS34725
from pinpong.board import Board
import time


Board().begin()
p_tcs34725 = TCS34725()
print("Initialize until successful")
while True:
	if p_tcs34725.begin():
		print("Found sensor")
		break
	else:
		print("No TCS34725 found ... check your connections")
		time.sleep(1)


while True:
    p_tcs34725list = p_tcs34725.get_rgbc()
    print((str("R:") + str(int((p_tcs34725list[0]/p_tcs34725list[3])*256))))
    print((str("G:") + str(int((p_tcs34725list[1]/p_tcs34725list[3])*256))))
    print((str("B:") + str(int((p_tcs34725list[2]/p_tcs34725list[3])*256))))
    print("")
    time.sleep(0.1)

常见问题

手动白平衡方法参考

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!

更多

TCS35725 Arduino 库
原理图
元件布局图
TCS34725 Datasheet

DFshopping_car1.png DFRobot商城购买链接