Gravity: 色温照度传感器

产品简介

Gravity: 色温照度传感器是一款高性能的光源感知传感器,专为精确测量和控制光照环境而设计。它能直接输出色温和光照强度两个关键光学物理量,使您对环境光的理解更为准确。

该传感器支持I2C和UART两种通讯方式,经过出厂校准,能够快速、准确地测量环境中多种光源数据。借助这些精准的数据,您可以实现如家庭灯光色温同步、色温照度艺术交互项目等多种应用,让您的光照环境更加符合需求。

色温

色温是一种用来描述光源颜色特性的物理量,单位为开尔文(K)。它的定义来源于物理学中的黑体辐射理论,即当黑体被加热到某个温度时,会发出特定颜色的光,这个温度就被定义为这种颜色的色温。

在我们的日常生活中,色温的概念无处不在。例如,我们常说的暖光灯和冷光灯,其实就是指的光源的色温不同。暖光灯的色温较低,通常在2000K-3000K,发出的光偏向红色或暖色;而冷光灯的色温较高,通常在5000K以上,发出的光偏向蓝色或冷色。天气阴晴、一天中不同时间的光线色温也不同,这款色温照度传感器可以将这些环境的光转化为标准的物理量(开尔文,K)。

光照强度

光照强度,也称为照度,是描述光源在特定距离或面积上的亮度强度的物理量,单位为勒克斯(Lux)。它反映了光线照射到单位面积上的光通量,也就是我们通常所说的“明亮程度”。例如,在一个阳光充足的户外环境,光照强度可能高达10,000 Lux,而在一个昏暗的室内环境,光照强度可能只有几十或几百 Lux。在照明设计、摄影、植物光合作用研究等领域,光照强度都是一个重要的参数。

产品特性

应用场景

规格参数

功能示意图

标号 接口名称 说明
1 D/T I2C数据线SDA或串口UART发送端TXD
2 C/R I2C时钟线SCL或串口UART接收端RXD
3 GND 电源负极
4 VCC 电源正极(3.3~5V)
5 通讯模式选择开关 选择I2C/UART通讯模式

注:拨动通讯选择开关时需要断电

尺寸图

串口通信说明

出厂参数

命令表:

设备地址 输入寄存器地址 波特率地址 读取光照强度地址 读取色温数据地址 读取色坐标x地址 读取色坐标y地址
0x0032 0x0004 0x0003 0x0006 0x0007 0x0008 0x0009

发送指令的格式为:设备地址 + 功能码 + 寄存器起始地址 + 寄存器个数 + CRC校验。

读取串口波特率

主机通过串口读取模块的波特率,主机发送:32 04 00 03 00 01 C4 09 //读取波特率为:32 04 02 00 03 FD 35

设备地址--------------------32
功能码----------------------04//读输入寄存器
寄存器起始地址----------------00 03//读取模块波特率寄存器地址
寄存器个数-------------------00 01
CRC校验---------------------C4 09

模块返回的串口波特率数据为:32 04 02 00 03 FD 35

设备地址--------------------32
功能码----------------------04//读输入寄存器
字节数----------------------02//返回数据字节的数量
读取数据---------------------00 03//9600bps
CRC校验---------------------FD 35

波特率表:

2400bps 4800bps 9600bps 14400bps 19200bps 38400bps 57600bps 115200bps 115200bps
0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 Other

注意:CRC校验码是通过一种叫做循环冗余校验(Cyclic Redundancy Check)的算法计算出来的。这种算法会对数据进行一系列的位操作,包括异或、移位等,最终得到一个校验码。校验码可以用来检查数据在传输过程中是否出现错误。

读取光照强度

主机通过串口读取模块测得的光照强度。

主机发送32 04 00 06 00 01 D4 08 //读取到光照强度32 04 02 00 A4 BC 8F

设备地址--------------------32
功能码----------------------04//读输入寄存器
寄存器起始地址----------------00 06//读取光照强度寄存器地址
寄存器个数-------------------00 01
CRC校验---------------------D4 08

模块读取的光照强度为:32 04 02 00 A4 BC 8F

设备地址--------------------32
功能码----------------------04//读输入寄存器
字节数----------------------02//返回数据字节的数量
读取数据---------------------00 A4//换算成十进制为164lux
CRC校验---------------------FD 35

读取色温数据

主机通过串口读取模块测得的色温数据

主机发送32 04 00 07 00 01 85 C8 //读取到色温数据32 04 02 21 05 65 67

设备地址--------------------32
功能码----------------------04//读输入寄存器
寄存器起始地址----------------00 07//读取色温寄存器地址
寄存器个数-------------------00 01
CRC校验---------------------85 C8

模块读取的色温数据为:32 04 02 21 05 65 67

设备地址--------------------32
功能码----------------------04//读输入寄存器
字节数----------------------02//返回数据字节的数量
读取数据---------------------21 05//换算成十进制为8453K
CRC校验---------------------65 67

读取色坐标x

主机通过串口读取模块测得的色坐标x

主机发送32 04 00 08 00 01 B5 CB //读取到色坐标x为32 04 02 0A 87 FB F6

设备地址--------------------32
功能码----------------------04//读输入寄存器
寄存器起始地址----------------00 08//读取色坐标x寄存器地址
寄存器个数-------------------00 01
CRC校验---------------------B5 CB

模块读取的色坐标x为:32 04 02 0A 87 FB F6

设备地址--------------------32
功能码----------------------04//读输入寄存器
字节数----------------------02//返回数据字节的数量
读取数据---------------------0A 87//0x0a87/1000
CRC校验---------------------FB F6

读取色坐标y

主机通过串口读取模块测得的色坐标y

主机发送32 04 00 09 00 01 E4 0B //读取到色坐标y为32 04 02 0C 22 38 2D

设备地址--------------------32
功能码----------------------04//读输入寄存器
寄存器起始地址----------------00 09//读取色坐标y寄存器地址
寄存器个数-------------------00 01
CRC校验---------------------E4 0B

模块读取的色坐标y为:32 04 02 0C 22 38 2D

设备地址--------------------32
功能码----------------------04//读输入寄存器
字节数----------------------02//返回数据字节的数量
读取数据---------------------0C 22//0x0c22/1000
CRC校验---------------------38 2D

Arduino使用教程

软硬件准备

使用I2C读取数据

接线图

样例代码

注意:波动选择开关时需要断电

#include "DFRobot_ColorTemperature.h"
DFRobot_ColorTemperature CT(&Wire);

void setup()
{
  Serial.begin(115200);
  while(CT.begin() != 0){
    Serial.println(" Sensor initialize failed!!");
    delay(1000);
  }
  Serial.println(" Sensor  initialize success!!");
}

void loop()
{
  Serial.println("-------------------------------");
  Serial.print("LUX: ");
  Serial.println(CT.readLUX());
  Serial.print("CCT: ");
  Serial.println(CT.readCCT());
  Serial.print("X: ");
  Serial.println(CT.readX());
  Serial.print("Y: ");
  Serial.println(CT.readY());
  Serial.println("-------------------------------");
  delay(500);
}

结果

打开串口监视器,得到最终的色温、光照强度及X、Y色坐标的数据。

使用UART读取数据

接线图

样例代码

注意:波动选择开关时需要断电

#include "DFRobot_ColorTemperature.h"
#include <SoftwareSerial.h>

SoftwareSerial mySerial(/*rx =*/4, /*tx =*/5);
DFRobot_ColorTemperature CT(/*s =*/&mySerial);

void setup()
{
  mySerial.begin(9600);
  Serial.begin(115200);
  while(CT.begin() != 0){
    Serial.println(" Sensor initialize failed!!");
    delay(1000);
  }
  Serial.println(" Sensor  initialize success!!");
}

void loop()
{
  Serial.println("-------------------------------");
  Serial.print("LUX: ");
  Serial.println(CT.readLUX());
  Serial.print("CCT: ");
  Serial.println(CT.readCCT());
  Serial.print("X: ");
  Serial.println(CT.readX());
  Serial.print("Y: ");
  Serial.println(CT.readY());
  Serial.println("-------------------------------");
  delay(500);
}

结果

打开串口监视器,得到最终的色温、光照强度及X、Y色坐标的数据。

API函数

class DFRobot_ColorTemperature: public DFRobot_RTU{
public:
    #define COLORTEMPERATURE_ADDR     0x32 ///<设备地址
    #define COLORTEMPERATURE_ADDR_REG 0X02 ///<设备地址寄存器
    #define COLORTEMPERATURE_LUX_REG  0X06 ///<照度寄存器
    #define COLORTEMPERATURE_CCT_REG  0X07 ///<色温寄存器
    #define COLORTEMPERATURE_X_REG    0X08 ///<色坐标X寄存器
    #define COLORTEMPERATURE_Y_REG    0X09 ///<色坐标Y寄存器

  /**
   * @fn DFRobot_ColorTemperature
   * @brief DFRobot_ColorTemperature构造函数
   * @param pWire 指向TwoWire流的I2C指针,在演示中需要调用begin来初始化Arduino的I2C配置。
   * @param addr  SEN0611设备的I2C通信地址
   */
  DFRobot_ColorTemperature(TwoWire *pWire);

  /**
   * @fn DFRobot_ColorTemperature
   * @brief DFRobot_ColorTemperature构造函数
   * @param addr 主机和SEN0611从设备通信的设备地址
   * @param s 指向Stream的串口指针,在演示中需要调用begin来初始化Arduino主控的通信串口配置,以符合SEN0611设备从机的配置。
   * @n SEN0611串口配置:9600波特率,8位数据位,无校验位,1停止位,参数不能更改。
   */
  DFRobot_ColorTemperature(Stream *s);
  ~DFRobot_ColorTemperature(){};
  /**
   * @fn begin
   * @brief 初始化
   * @return 初始化状态
   * @retval 0  成功
   * @retval -1 失败
   */
  int8_t begin(void);

  /**
   * @fn readLUX
   * @brief 获取传感器照度
   * @return 获得的照度
  */
  uint16_t readLUX(void);

  /**
   * @fn readCCT
   * @brief 获取色温数据
   * @return 获得的色温
  */
  uint16_t readCCT(void);

  /**
   * @fn readX
   * @brief 获取色坐标X
   * @return 获得的色坐标X
  */
  float readX(void);

  /**
   * @fn readY
   * @brief 获取色坐标Y
   * @return 获得的色坐标Y
  */
  float readY(void);

更多资料下载

常见问题(FAQ)

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

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

DFshopping_car1.png DFRobot商城购买链接