Skip to main content

Grove - I2C 颜色传感器

该模块基于具有数字输出 I2C 的颜色传感器 TCS3414CS。基于 8*2 滤波光电二极管阵列和 16 位模数转换器,您可以测量环境光的颜色色度或物体的颜色。在 16 个光电二极管中,4 个具有红色滤光片,4 个具有绿色滤光片,4 个具有蓝色滤光片,4 个没有滤光片(透明)。通过同步输入引脚,外部脉冲光源可以提供精确的同步转换控制。

note

请注意,最新版本 V2.0 已将 IC 替换为 TCS3472,旧库也已更新。如果您使用的是 V2.0 版本,请使用新库

特性

  • Grove 兼容接口
  • 16 位数字输出,支持 I2C
  • SYNC 输入将积分周期同步到调制光源
  • 工作温度范围 -40°C 至 85°C
  • 可编程中断功能,具有用户定义的上下阈值设置
  • 符合 RoHS 标准
tip

有关 Grove 模块的更多详细信息,请参考 Grove 系统

规格参数

参数值/范围
PCB 尺寸2.0 cm * 4.0 cm
接口2.0mm 间距排针
VCC3.3 - 6.0 V
I2C 速度400 kHz

支持的平台

ArduinoRaspberry Pi
caution

上述提到的支持平台是/是该模块软件或理论兼容性的指示。在大多数情况下,我们只为 Arduino 平台提供软件库或代码示例。不可能为所有可能的 MCU 平台提供软件库/演示代码。因此,用户必须编写自己的软件库。

入门指南

以下文档帮助用户开始使用 Grove。

硬件连接

Grove 产品拥有一个生态系统,所有产品都具有相同的连接器,可以插入 Grove Base Shield。将此模块连接到 Base Shield 的 I2C 端口。但是,您也可以通过跳线将 Grove - I2C 颜色传感器连接到 Arduino,而无需 Base Shield。

Arduino UNOGrove - I2C 颜色传感器
5VVCC
GNDGND
SDASDA
SCLSCL

软件安装

下载 Arduino 并安装 Arduino 驱动程序

Seeeduino/Arduino 入门指南

演示

该模块可用于检测光源的颜色或物体的颜色。当用于检测光源颜色时,应关闭 LED 开关,光源应直接照射传感器。当用于检测物体颜色时,应打开 LED,并将物体紧贴外壳顶部放置。感测物体颜色的原理是反射感测理论。如下图所示。

颜色传感器库

我们创建了一个库来帮助您快速开始使用 Seeeduino/Arduino,在本节中我们将向您展示如何设置库。

设置

  1. 从 Grove_I2C_Color_Sensor github 页面下载库代码的 zip 文件。如果您使用的是最新版本 V2.0(IC 是 TCS3472),请使用这个新库
  2. 将下载的文件解压到您的 …/arduino/libraries 目录中。
  3. 将解压的文件夹重命名为 "Color_Sensor"
  4. 启动 Arduino IDE(如果已打开则重新启动)。

功能描述

这是库中最重要/最有用的功能,我们邀请您自己查看 .h 和 .cpp 文件以了解所有可用的功能。

通过库函数读取 RGB 数据

readRGB(int *red, int *green, int *blue)

  • red: 保存 R 值的变量地址。
  • green: 保存 G 值的变量地址。
  • blue: 保存 B 值的变量地址。
void loop()
{
int red, green, blue;
GroveColorSensor colorSensor;
colorSensor.ledStatus = 1; // 当打开颜色传感器 LED 时,ledStatus = 1;当关闭颜色传感器 LED 时,ledStatus = 0。
while(1)
{
colorSensor.readRGB(&red, &green, &blue); //将 RGB 值读取到变量中。
delay(300);
Serial.print("The RGB value are: RGB( ");
Serial.print(red,DEC);
Serial.print(", ");
Serial.print(green,DEC);
Serial.print(", ");
Serial.print(blue,DEC);
Serial.println(" )");
colorSensor.clearInterrupt();
}
}

颜色传感器示例/应用

此示例展示了如何使用 Grove - I2C 颜色传感器的功能,并通过可链接 RGB LED Grove 显示检测到的颜色。

note

如果您之前没有将 Grove-可链接 RGB LED 库 下载到您的 Arduino IDE 中,请先下载并设置该库。

  • 打开 File->Examples->Color_Sensor->example->ColorSensorWithRGB-LED 示例以获取完整示例,或将下面的代码复制并粘贴到新的 Arduino 草图中。

描述:此示例可以测量环境光的颜色色度或物体的颜色,并通过可链接 RGB LED Grove 显示检测到的颜色。

您也可以使用其他显示模块来显示 Grove - I2C 颜色传感器检测到的颜色。

#include <Wire.h>
#include <GroveColorSensor.h>
#include <ChainableLED.h>

#define CLK_PIN 7
#define DATA_PIN 8
#define NUM_LEDS 1 //可链接 RGB LED 的数量

ChainableLED leds(CLK_PIN, DATA_PIN, NUM_LEDS);

void setup()
{
Serial.begin(9600);
Wire.begin();
}

void loop()
{
int red, green, blue;
GroveColorSensor colorSensor;
colorSensor.ledStatus = 1; // 当打开颜色传感器 LED 时,ledStatus = 1;当关闭颜色传感器 LED 时,ledStatus = 0。
while(1)
{
colorSensor.readRGB(&red, &green, &blue); //将 RGB 值读取到变量中。
delay(300);
Serial.print("The RGB value are: RGB( ");
Serial.print(red,DEC);
Serial.print(", ");
Serial.print(green,DEC);
Serial.print(", ");
Serial.print(blue,DEC);
Serial.println(" )");
colorSensor.clearInterrupt();
for(int i = 0; i<NUM_LEDS; i++)
{
leds.setColorRGB(i, red, green, blue);
}
}
}
  • 将代码上传到开发板。
  • 然后 Grove_-_Chainable_RGB_LED 将显示检测到的颜色。

其他参考

该模块基于颜色传感器 TCS3414CS。TCS3414CS 数字颜色传感器从四个通道返回数据:红色(R)、绿色(G)、蓝色(B) 和透明(C)(无滤波)。来自红、绿、蓝通道 (RGB) 的响应可用于确定特定光源的色度坐标 (x, y)。这些标准由国际照明委员会 (CIE) 制定。CIE 是关注颜色和颜色测量的主要国际组织。为了使用 TCS3414CS 获取给定物体的颜色,我们必须首先将传感器响应 (RGB) 映射到 CIE 三刺激值 (XYZ)。然后需要计算色度坐标 (x, y)。

色度计算过程概述

进行转换的方程式:

转换方程式

  • 当我们获得坐标 (x, y) 时,请参考下图以获得推荐的颜色。

常见问题

Q1: 如何理解这些命令?例如,REG_GREEN_LOW = 0xD0

A1: 从附图中,您可以看到命令中包含的内容。当使用字节协议命令时,必须是 0x80+ADDRESS 的格式。例如,REG_TIMING( 01h ) = 0x81 对于字节和块读取,命令应该是 0xC0+ADDRESS,REG_GREEN_LOW( 10h ) = 0xD0。

Grove-I2C 颜色传感器 Eagle 文件 V1.2

Grove-I2C 颜色传感器 Eagle 文件 V2.0

资源


技术支持与产品讨论

可升级为工业传感器

通过 SenseCAP S2110 控制器S2100 数据记录器,您可以轻松地将 Grove 转换为 LoRaWAN® 传感器。Seeed 不仅帮助您进行原型设计,还为您提供了通过 SenseCAP 系列坚固的工业传感器扩展项目的可能性。

IP66 外壳、蓝牙配置、与全球 LoRaWAN® 网络的兼容性、内置 19 Ah 电池以及来自 APP 的强大支持,使 SenseCAP S210x 成为工业应用的最佳选择。该系列包括土壤湿度、空气温湿度、光照强度、CO2、EC 传感器以及 8 合 1 气象站。为您下一个成功的工业项目尝试最新的 SenseCAP S210x。

Loading Comments...