Package: haas-python-tcs34725
HaaS Python介绍HaaS Python是阿里云IoT团队最新研发的一套低代码编程框架，兼容MicroPython编程规范，依托HaaS平台软硬件积木提供AI、支付、蓝牙配网、云连接、UI等物联网场景常用的能力，从而解决了物联网应用开发难的问题。有了Python轻应用框架，物联网编程不再局限于专业软件开发人员，一般的技术员也可以快速实现复杂的物联网需求。
更多HaaS Python介绍和开发资料见HaaS Python官网,创意案例,硬件积木HaaS Python is a set of low-code programming frameworks newly developed by Alibaba Cloud IoT team. It is compatible with MicroPython programming specifications. It relies on the hardware and software building blocks of the HaaS platform to provide capabilities commonly used in IoT scenarios such as AI, payment, Bluetooth network configuration, cloud connection, and UI. Solve the difficult problem of IoT application development. With the Python light application framework, IoT programming is no longer limited to professional software developers, and general technicians can quickly implement complex IoT requirements.
For more HaaS Python introduction and development materials, seeHaaS Python official website,Creative Case,Hardware Building Blocks安装方法在HaaS Python官网下载开发板对应的固件，并完成固件烧录Download the firmware corresponding to the development board atHaaS Python websiteand complete the firmware burning在开发板上运行以下命令完成安装和使用,如果您在使用过程中遇到问题，欢迎在github上向我们提交issue，我们的工程师会及时解答Run the following commands on the development board to complete the installation and use. If you encounter problems during use, please submit an issue to us ongithub, Our engineers will answer in timeimport upip
upip.install("haas-python-tcs34725")
import haas-python-tcs34725颜色传感器 - tcs34725一、产品简介TCS34725是一款低成本，高性价比的RGB全彩颜色识别传感器，传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色和明光感应，可以输出RGB三色的数值以还原周围颜色。本文介绍的颜色传感器外如下图所示：其管脚定义如下表所示：管脚名称管脚功能说明LEDLED开关高电平或悬空LED灯亮、低电平LED灯灭INT中断输出低电平有效VCC电源正极3.3V-5VGND电源地-SCLI2C接口时钟线-SDAI2C接口数据线-二、颜色传感器技术参数工作电压：3.3-5V检测距离：3mm-10mm工作温度：-30°C～+70°C通信接口：I2C，最高频率：400k工作电流：65uA三、软件接口TCS34725颜色传感器HaaS Python驱动：下载地址TCS34725(i2cObj) - 创建颜色传感器驱动对象函数原型：colorDev = TCS34725(i2cObj)参数说明：参数类型必选参数？说明i2cObjI2C是调用此函数前需确保i2cObj对象已经处于open状态返回值：
执行成功，返回颜色传感器对象；创建失败，抛出Exception示例代码：importutimefromdriverimportI2Ci2cObj=I2C()i2cObj.open('colorSensor')colorSensor=TCS34725(i2cObj)print('colorSensor init done')输出：colorSensor init donegetRGB - 获取环境颜色的RGB值函数原型：TCS34725.getRGB()参数说明：
无返回值：
(R,G,B)分别代表红色（R）、绿色(G)和蓝色(B)三个通道上面的亮度此API获取到的返回结果经过了3个算法处理，如果想获取颜色传感器的直接测量结果，请参考getRawData的说明。示例代码：importutimefromdriverimportI2Ci2cObj=I2C()i2cObj.open('colorSensor')colorSensor=TCS34725(i2cObj)print('colorSensor init done')r,g,b=colorSensor.getRGB()print('r:0x%x, g:0x%x, b:0x%x'%(r,g,b))输出：分别是对实际颜色的测量结果colorSensor init done
r:<R>, g:<G>, b:<B>getRawData - 获取颜色传感器原始测量结果函数原型：TCS34725.getRawData()参数说明：
无返回值：
(r, g, b, c)分别代表红色（r）、绿色(g)、蓝色(b)和归一参考值(c)示例代码：importutimefromdriverimportI2Ci2cObj=I2C()i2cObj.open('colorSensor')colorSensor=TCS34725(i2cObj)print('colorSensor init done')r,g,b,c=colorSensor.getRawData()print('r:0x%x, g:0x%x, b:0x%x, c:0x%x'%(r,g,b,c))输出：分别是颜色传感器实际测量结果colorSensor init done
r:<R>, g:<G>, b:<B>, c:<C>calculateLux - 计算亮度值函数原型：TCS34725.calculateLux(r, g, b)参数说明：参数类型必选参数？说明rint是颜色传感器测量结果原始值中的红色分量, 通过getRawData获取gint是颜色传感器测量结果原始值中的绿色分量, 通过getRawData获取bint是颜色传感器测量结果原始值中的绿色分量, 通过getRawData获取返回值：
亮度值，单位：流明示例代码：importutimefromdriverimportI2Ci2cObj=I2C()i2cObj.open('colorSensor')colorSensor=TCS34725(i2cObj)print('colorSensor init done')r,g,b,c=colorSensor.getRawData()lux=colorSensor.calculateLux(r,g,b)print('luminosity:',lux)输出：
{L}代表计算后的亮度值colorSensor init done
luminosity:{L}calculateCT - 计算色温函数原型：TCS34725.calculateCT(r, g, b)参数说明：参数类型必选参数？说明rint是颜色传感器测量结果原始值中的红色分量, 通过getRawData获取gint是颜色传感器测量结果原始值中的绿色分量, 通过getRawData获取bint是颜色传感器测量结果原始值中的绿色分量, 通过getRawData获取返回值：
色温值示例代码：importutimefromdriverimportI2Ci2cObj=I2C()i2cObj.open('colorSensor')colorSensor=TCS34725(i2cObj)print('colorSensor init done')r,g,b,c=colorSensor.getRawData()colorTemperature=colorSensor.calculateCT(r,g,b)print('color temperature:',colorTemperature)输出：
{CT}代表转换后的色温值colorSensor init done
color temperature:{CT}四、接口案例此使用实例在board.json中定义了名为colorSensor的I2C类型的对象。在Python脚本中周期性的量测输入电压并打印到日志中代码：board.json配置如下：{"name":"board-name","version":"1.0.0","io":{"colorSensor":{"type":"I2C","port":1,"addrWidth":7,"freq":400000,"mode":"master","devAddr":41}},"debugLevel":"ERROR","repl":"disable"}importutimefromdriverimportI2Ci2cObj=I2C()# 创建I2C设备对象i2cObj.open('colorSensor')# 打开名为colorSensor的I2C设备节点colorSensor=TCS34725(i2cObj)# 创建颜色传感器对象print('colorSensor init done')whileTrue:r,g,b=colorSensor.getRGB()# 读取RGB测量结果print('r:0x%x, g:0x%x, b:0x%x'%(r,g,b))r,g,b,c=colorSensor.getRawData()# 读取颜色传感器测量的原始数据lux=colorSensor.calculateLux(r,g,b)# 将原始数据转化成亮度值print('luminosity:',lux)CT=colorSensor.calculateCT(r,g,b)# 将原始数据转化成色温值print('color temperature:',CT)i2cObj.close()# 关闭I2C设备delcolorSensor# 删除颜色传感器对象输出：其中：{CT}代表转换后的色温值{L}代表计算后的亮度值colorSensorinitdoneluminosity:{L}colortemperature:{CT}五、工作原理TCS34725传感器属于光电传感器，光线进入该传感器后会由光电二极管阵列将入射光转换为R、G、B的光电流，再经过放大转换成模拟电压，模拟电压经过模数转换元件转换成代表电压的数字信号，再对该数字信号进行处理来得到R、G、B测量值。该传感器功能外观图如下图所示：TCS34725传感器的工作过程也是典型的颜色传感器，主要经过光到光电流->电流放大并转化成模拟电压->模拟电压信号转换成数字电压信号几个步骤。光到光电流的转换动作是由搭配色彩滤波器的光电二极管阵列完成；电流放大并转换成电压则有一个阻抗放大器来完成；模拟电压信号转换为数字信号则是由模拟数字转换器来完成。颜色信息转化为数字信息之后，便会存储在芯片内部的寄存器中，主控芯片可以通过传感器对外的接口（TCS34725是通过I2C接口）对颜色信息进行读取。参考文献及购买链接[1]TCS34725数据手册[2]颜色传感器工作原理[3]购买链接