学物联网,来万物简单IoT物联网!!
TCS34725是一款低成本,高性价比的RGB全彩颜色识别传感器,传感器通过光学感应来识别物体的表面颜色。支持红、绿、蓝(RGB)三基色和明光感应,可以输出RGB三色的数值以还原周围颜色。
本文介绍的颜色传感器外如下图所示:
其管脚定义如下表所示:
管脚名称 | 管脚功能 | 说明 |
---|---|---|
LED | LED开关 | 高电平或悬空LED灯亮、低电平LED灯灭 |
INT | 中断输出 | 低电平有效 |
VCC | 电源正极 | 3.3V-5V |
GND | 电源地 | - |
SCL | I2C接口时钟线 | - |
SDA | I2C接口数据线 | - |
colorDev = TCS34725(i2cObj)
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
i2cObj | I2C | 是 | 传入I2C对象 |
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
TCS34725.getRGB()
此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:, g:, b:
TCS34725.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()
print('r:0x%x, g:0x%x, b:0x%x, c:0x%x' % (r, g, b, c))
colorSensor init done
r:, g:, b:, c:
TCS34725.calculateLux(r, g, b)
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
r | int | 是 | 颜色传感器测量结果原始值中的红色分量, 通过getRawData获取 |
g | int | 是 | 颜色传感器测量结果原始值中的绿色分量, 通过getRawData获取 |
b | int | 是 | 颜色传感器测量结果原始值中的绿色分量, 通过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)
colorSensor init done
luminosity:{L}
TCS34725.calculateCT(r, g, b)
参数 | 类型 | 必选参数? | 说明 |
---|---|---|---|
r | int | 是 | 颜色传感器测量结果原始值中的红色分量, 通过getRawData获取 |
g | int | 是 | 颜色传感器测量结果原始值中的绿色分量, 通过getRawData获取 |
b | int | 是 | 颜色传感器测量结果原始值中的绿色分量, 通过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)
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)
其中:
colorSensor init done
luminosity:{L}
color temperature:{CT}
TCS34725传感器属于光电传感器,光线进入该传感器后会由光电二极管阵列将入射光转换为R、G、B的光电流,再经过放大转换成模拟电压,模拟电压经过模数转换元件转换成代表电压的数字信号,再对该数字信号进行处理来得到R、G、B测量值。该传感器功能外观图如下图所示:
TCS34725传感器的工作过程也是典型的颜色传感器,主要经过光到光电流 -> 电流放大并转化成模拟电压 -> 模拟电压信号转换成数字电压信号几个步骤:
颜色信息转化为数字信息之后,便会存储在芯片内部的寄存器中,主控芯片可以通过传感器对外的接口(TCS34725是通过I2C接口)对颜色信息进行读取。
[1] TCS34725数据手册
[2] 颜色传感器工作原理
[3] [TCS34725颜色传感器购买链接