1、颜色传感器
颜色传感器是一种能够检测物体颜色的传感器。它通常使用光电二极管或光敏电阻等组件来感知物体反射的光线。当光线照射到物体表面时,颜色传感器会测量光线的强度和波长,然后根据测量结果确定物体的颜色。
颜色传感器可以用来检测产品表面的颜色,通过检测光的反射和吸收来识别不同的颜色,然后将其转化为信号输出。这些信号可以用来控制机器人、自动化生产线和其他自动化设备,以识别和分类不同的产品。例如:在机器人的视觉导航系统中,颜色传感器可以用来识别和跟踪不同颜色的标记和物体。这些传感器可以帮助机器人避开障碍物,并识别特定颜色的目标,从而更有效地完成任务。
一些常见的颜色传感器包括RGB传感器和色度计。RGB传感器可以测量红、绿、蓝三原色的光线强度,通过这三个通道的数值来确定物体的颜色。色度计则可以测量光线的色温和色相,可以更精确地描述物体的颜色。
2、TCS34725
TCS3472 器件提供红色、绿色、蓝色 (RGB) 和清晰光感测值的数字返回。 IR阻塞滤波器,集成在芯片上并定位到颜色感应光电二极管,最大限度地减少红外光谱入射光的组成部分,并允许准确地进行颜色测量。灵敏度高,宽动态范围和 IR 阻挡滤波器使 TCS3472 成为理想的颜色传感器解决方案,适用于不同的照明条件和通过衰减材料。
TCS3472 颜色传感器具有广泛的应用,包括 RGB LED 背光控制、固态照明、健康/健身产品、工业过程控制和医疗诊断设备。除此之外IR 阻挡滤波器使 TCS3472 能够执行环境光感测 (ALS)。环境光感测应用广泛用于基于显示的产品,如手机、笔记本电脑和电视,以感知照明环境和启用自动显示亮度以获得最佳观看效果和节能效果。 TCS3472 本身可以输入一个光感测之间的低功耗等待状态,以进一步降低平均功耗。
该模块具有一个3x4光电二极管阵列和四个ADC转换器,可将光到光电二极管的电流转换为16位数值。还具有RGB和色敏元件,该色敏元件集成片裁和局部化的红外遮光滤光片,减小了入射光的红外频谱成分,让颜色管理更加精确。
3、TCS34725与树莓派连接
TCS34725颜色传感器模块共有7个引脚,各引脚的作用如下:
LED:可接发光二极管。
INT:中断输出。
SDA:I2C数据引脚,连接开发板的I2C数据线
SCL:I2C时钟引脚,连接开发板的I2C时钟线
3V3:提供3.3V 电源输出。
GND:电源地。
VIN:电源正极,工作电压为5V。特别注意的是电压要大于3.8V,3.3不行。
在开始接线前,切断树莓派的电源,将传感器的VIN和GND引脚分别连接树莓派3.3V电源和GND引脚,再把该传感器的SCL和SDA引脚分别连接树莓派的5号物理引脚(SCL引脚)和3号物理引脚(SDA 引脚)。
安装adafruit-circuitpython-tcs34725库pip install adafruit-circuitpython-tcs34725
4、实验代码与现象
import time
import board
import busio
import adafruit_tcs34725
# 初始化I2C对象
I2C = busio.I2C(board.SCL, board.SDA)
print(I2C)
# 创建一个tcs34725对象
tcs34725 = adafruit_tcs34725.TCS34725(I2C)
# 打印读取到的范围
def tcs34725_detect():
while True:
# 读取传感器的颜色、色温和照度
color = tcs34725.color_rgb_bytes
temp = tcs34725.color_temperature
lux = tcs34725.lux
print('颜色: {0}, {1}, {2}'.format(*color)) # RGB格式
print('色温: {0}K'.format(temp))
print('照度: {0}'.format(lux))
time.sleep(2)
if __name__ == '__main__':
try:
tcs34725_detect()
except KeyboardInterrupt:
print("程序结束!")
RGB值: RGB即是代表红、绿、蓝三个通道的颜色 ,人类肉眼所感知的所有颜色都可以通过这三种颜色的不同组合所表现,例如 256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216。通常也被简称为1600万色或千万色 。
色温: 色温是表示光线中包含颜色成分的一个计量单位, 色温的单位是“K”(开尔文 )。通俗点讲 颜色越红,色温越低,颜色越蓝,色温越高。 Core的库函数会自动帮用户计算好色温并输出结果,算法参考此处
光照强度: 光照强度是一种物理术语,指单位面积上所接受可见光的光通量。简称照度 ,单位勒克斯(Lux或lx)。用于指示光照的强弱和物体表面积被照明程度的量。
这是我用手遮挡的RGB值变化的效果。
请注意,颜色计算非常复杂,并且涉及到颜色理论和数学,实际转换通常需要使用专门的库。