物联网AI MicroPython传感器学习 之 TCS34725颜色识别传感器

学物联网,来万物简单IoT物联网!!在这里插入图片描述

一、产品简介

TCS34725是一款低成本,高性价比的RGB全彩颜色识别传感器,传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色和明光感应,可以输出RGB三色的数值以还原周围颜色。
本文介绍的颜色传感器外如下图所示:
image.png
其管脚定义如下表所示:

管脚名称管脚功能说明
LEDLED开关高电平或悬空LED灯亮、低电平LED灯灭
INT中断输出低电平有效
VCC电源正极3.3V-5V
GND电源地-
SCLI2C接口时钟线-
SDAI2C接口数据线-

二、颜色传感器技术参数

  • 工作电压:3.3-5V
  • 检测距离:3mm-10mm
  • 工作温度:-30°C~+70°C
  • 通信接口:I2C,最高频率:400k
  • 工作电流:65uA

三、软件接口

TCS34725(i2cObj) - 创建颜色传感器驱动对象

  • 函数原型:

colorDev = TCS34725(i2cObj)

  • 参数说明:
参数类型必选参数?说明
i2cObjI2C传入I2C对象
  • 返回值:
    执行成功,返回颜色传感器对象;创建失败,抛出Exception
  • 示例代码:
from machine import I2C,Pin          # 导入machine驱动库
import tcs34725

i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
colorSensor = tcs34725.TCS34725(i2cObj)
print('colorSensor init done')
  • 输出:
colorSensor init done

getRGB - 获取环境颜色的RGB值

  • 函数原型:

TCS34725.getRGB()

  • 参数说明:
  • 返回值:
    (R,G,B)分别代表红色(R)、绿色(G)和蓝色(B)三个通道上面的亮度

此API获取到的返回结果经过了3个算法处理,如果想获取颜色传感器的直接测量结果,请参考getRawData的说明。

  • 示例代码:
from machine import I2C,Pin          # 导入machine驱动库
import tcs34725

i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
colorSensor = tcs34725.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)和归一参考值©
  • 示例代码:
from machine import I2C,Pin          # 导入machine驱动库
import tcs34725

i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
colorSensor = tcs34725.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获取
  • 返回值:
    亮度值,单位:流明
  • 示例代码:
from machine import I2C,Pin          # 导入machine驱动库
import tcs34725

i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
colorSensor = tcs34725.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获取
  • 返回值:
    色温值
  • 示例代码:
from machine import I2C,Pin          # 导入machine驱动库
import tcs34725

i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
colorSensor = tcs34725.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}

四、接口案例

  • 示例代码:
from machine import I2C,Pin          # 导入machine驱动库
import tcs34725
import utime

i2cObj = I2C(1, scl=Pin(22), sda=Pin(21), freq=400000)
colorSensor = tcs34725.TCS34725(i2cObj)
print('colorSensor init done')

while True:
    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)
    utime.sleep_ms(200)
  • 输出:

其中:

  • {CT}代表转换后的色温值
  • {L}代表计算后的亮度值
colorSensor init done

luminosity:{L}
color temperature:{CT}

五、工作原理

TCS34725传感器属于光电传感器,光线进入该传感器后会由光电二极管阵列将入射光转换为R、G、B的光电流,再经过放大转换成模拟电压,模拟电压经过模数转换元件转换成代表电压的数字信号,再对该数字信号进行处理来得到R、G、B测量值。该传感器功能外观图如下图所示:
image.png
TCS34725传感器的工作过程也是典型的颜色传感器,主要经过光到光电流 -> 电流放大并转化成模拟电压 -> 模拟电压信号转换成数字电压信号几个步骤:

  • 光到光电流的转换动作是由搭配色彩滤波器的光电二极管阵列完成;
  • 电流放大并转换成电压则有一个阻抗放大器来完成;
  • 模拟电压信号转换为数字信号则是由模拟数字转换器来完成。

颜色信息转化为数字信息之后,便会存储在芯片内部的寄存器中,主控芯片可以通过传感器对外的接口(TCS34725是通过I2C接口)对颜色信息进行读取。

参考文献及购买链接

[1] TCS34725数据手册
[2] 颜色传感器工作原理
[3] [TCS34725颜色传感器购买链接

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值