409浏览
查看: 409|回复: 26

[项目] 【Arduino】168种传感器模块系列实验(193)---TCS34725颜色识别

[复制链接]
本帖最后由 驴友花雕 于 2021-8-9 11:39 编辑

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor


方形紫版


0.jpg

0-.jpg

驴友花雕  初级技神
 楼主|

发表于 2021-8-11 09:00:39

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
  项目之四:使用 TCS34725 模块的 RGB 灯颜色传感器

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
  4.   项目之四:使用 TCS34725 模块的 RGB 灯颜色传感器
  5. */
  6. #include <Wire.h>
  7. #include "Adafruit_TCS34725.h"
  8. #define redpin 3
  9. #define greenpin 5
  10. #define bluepin 6
  11. #define commonAnode false
  12. byte gammatable[256];
  13. Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
  14. void setup() {
  15.   Serial.begin(9600);
  16.   Serial.println("Color View Test!");
  17.   if (tcs.begin()) {
  18.     Serial.println("Found sensor");
  19.   } else {
  20.     Serial.println("No TCS34725 found ... check your connections");
  21.     while (1); // halt!
  22.   }
  23.   // use these three pins to drive an LED
  24.   pinMode(redpin, OUTPUT);
  25.   pinMode(greenpin, OUTPUT);
  26.   pinMode(bluepin, OUTPUT);
  27.   for (int i = 0; i < 256; i++) {
  28.     float x = i;
  29.     x /= 255;
  30.     x = pow(x, 2.5);
  31.     x *= 255;
  32.     if (commonAnode) {
  33.       gammatable[i] = 255 - x;
  34.     } else {
  35.       gammatable[i] = x;
  36.     }
  37.     //Serial.println(gammatable[i]);
  38.   }
  39. }
  40. void loop() {
  41.   uint16_t clear, red, green, blue;
  42.   tcs.setInterrupt(false);      // turn on LED
  43.   delay(60);
  44.   tcs.getRawData(&red, &green, &blue, &clear);
  45.   tcs.setInterrupt(true);
  46.   Serial.print("C:\t"); Serial.print(clear);
  47.   Serial.print("\tR:\t"); Serial.print(red);
  48.   Serial.print("\tG:\t"); Serial.print(green);
  49.   Serial.print("\tB:\t"); Serial.print(blue);
  50.   // Figure out some basic hex code for visualization
  51.   uint32_t sum = clear;
  52.   float r, g, b;
  53.   r = red; r /= sum;
  54.   g = green; g /= sum;
  55.   b = blue; b /= sum;
  56.   r *= 256; g *= 256; b *= 256;
  57.   Serial.print("\t");
  58.   Serial.print((int)r, HEX); Serial.print((int)g, HEX); Serial.print((int)b, HEX);
  59.   Serial.println();
  60.   //Serial.print((int)r ); Serial.print(" "); Serial.print((int)g);Serial.print(" ");  Serial.println((int)b );
  61.   analogWrite(redpin, gammatable[(int)r]);
  62.   analogWrite(greenpin, gammatable[(int)g]);
  63.   analogWrite(bluepin, gammatable[(int)b]);
  64. }
复制代码


回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-9-8 07:55:23

Arduino 系列传感器和执行器模块实验目录清单:
一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)
https://mc.dfrobot.com.cn/thread-280845-1-1.html
连杆形式的腿机构十一种:盘点机器人行走背后的机械原理
https://mc.dfrobot.com.cn/thread-308097-1-1.html
【花雕动手做】超低成本,尝试五十元的麦克纳姆轮小车!
https://mc.dfrobot.com.cn/thread-307863-1-1.html
【花雕动手做】超迷你哦,用徽商香烟盒做个智能小车!
https://mc.dfrobot.com.cn/thread-307907-1-1.html
【花雕动手做】太搞笑啦,一支胶管制成二只蠕动机器人
https://mc.dfrobot.com.cn/thread-308046-1-1.html
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
https://mc.dfrobot.com.cn/thread-308063-1-1.html
【花雕动手做】特别苗条,使用微波传感器控制的纤细小车
https://mc.dfrobot.com.cn/thread-308866-1-1.html
【花雕动手做】脑洞大开、五花八门的简易机器人66种
https://mc.dfrobot.com.cn/thread-307900-1-1.html

实验一百五十八:QMC5883L电子指南针罗盘模块 三轴磁场传感器GY-271
https://mc.dfrobot.com.cn/thread-308195-1-1.html
实验一百六十三:BMI160 6轴惯性运动传感器 16位3轴加速度+超低功耗3轴陀螺仪  I2C/SPI 14LGA
https://mc.dfrobot.com.cn/thread-310371-1-1.html
实验一百六十五:2.4 英寸 TFT LCD 触摸屏模块 XPT2046 PCB ILI9341 240x320 像素 8 位 SPI 串口显示器
https://mc.dfrobot.com.cn/thread-309803-1-1.html
实验一百七十六:6mm大尺寸8x8LED方块方格点阵模块 可级联 红绿蓝白色 可选8级亮度
https://mc.dfrobot.com.cn/thread-309845-1-1.html
实验一百八十三:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议
https://mc.dfrobot.com.cn/thread-310273-1-1.html
实验一百八十五:MAX4466声音传感器 驻极体话筒放大器 麦克风可调功放模块 microphone
https://mc.dfrobot.com.cn/thread-310193-1-1.html
实验一百八十九:TDA1308 硅麦克风 数字咪头放大模块 拾音器放大板 楼氏SUNLEPHANT
https://mc.dfrobot.com.cn/thread-310246-1-1.html
实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
https://mc.dfrobot.com.cn/thread-310209-1-1.html
实验二百:RCWL-0515微波雷达感应开关 人体感应 智能感应探测传感器 12-15米远距离2.7G微波检测模块
https://mc.dfrobot.com.cn/thread-310313-1-1.html
实验二百零三:Air724UG合宙 Cat14G模块 DTU物联网UART串口通信数据TCP透传 核心板组合套餐
https://mc.dfrobot.com.cn/thread-310342-1-1.html
实验二百零九:Gravity: I2C & UART BC20 NB-IoT & GNSS通信模块 NB-IoT广域低功耗无线通信 GPS/北斗精准定位
https://mc.dfrobot.com.cn/thread-310433-1-1.html


回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 18:02:28

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
项目之三:测试Adafruit TCS34725 的突破库

实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
  4.   项目之三:测试Adafruit TCS34725 的突破库
  5.   模块接线:
  6.   TCS34725  Arduino
  7.   VCC        5V
  8.   GND        GND
  9.   SDA        A4
  10.   SCL        A5
  11. */
  12. #include <Wire.h>
  13. #include "Adafruit_TCS34725.h"
  14. /* Initialise with default values (int time = 2.4ms, gain = 1x) */
  15. // Adafruit_TCS34725 tcs = Adafruit_TCS34725();
  16. //使用特定的 int 时间和增益值初始化
  17. Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_614MS, TCS34725_GAIN_1X);
  18. void setup(void) {
  19.   Serial.begin(9600);
  20.   if (tcs.begin()) {
  21.     Serial.println("Found sensor");
  22.   } else {
  23.     Serial.println("No TCS34725 found ... check your connections");
  24.     while (1);
  25.   }
  26.   // 现在我们准备好获取读数了!
  27. }
  28. void loop(void) {
  29.   uint16_t r, g, b, c, colorTemp, lux;
  30.   tcs.getRawData(&r, &g, &b, &c);
  31.   // colorTemp = tcs.calculateColorTemperature(r, g, b);
  32.   colorTemp = tcs.calculateColorTemperature_dn40(r, g, b, c);
  33.   lux = tcs.calculateLux(r, g, b);
  34.   Serial.print("Color Temp: "); Serial.print(colorTemp, DEC); Serial.print(" K - ");
  35.   Serial.print("Lux: "); Serial.print(lux, DEC); Serial.print(" - ");
  36.   Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
  37.   Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
  38.   Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
  39.   Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
  40.   Serial.println(" ");
  41. }
复制代码


回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 10:42:47

本帖最后由 驴友花雕 于 2021-8-9 10:43 编辑


双孔黑版

0--.jpg

0-0.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 11:06:31

01-.jpg

TCS3472 器件提供红色、绿色、蓝色 (RGB) 和清晰光感测值的数字返回。 IR阻塞滤波器,集成在芯片上并定位到颜色感应光电二极管,最大限度地减少红外光谱入射光的组成部分,并允许准确地进行颜色测量。灵敏度高,宽动态范围和 IR 阻挡滤波器使 TCS3472 成为理想的颜色传感器解决方案,适用于不同的照明条件和通过衰减材料。

TCS3472 颜色传感器具有广泛的应用,包括 RGB LED 背光控制、固态照明、健康/健身产品、工业过程控制和医疗诊断设备。除此之外IR 阻挡滤波器使 TCS3472 能够执行环境光感测 (ALS)。环境光感测应用广泛用于基于显示的产品,如手机、笔记本电脑和电视,以感知照明环境和启用自动显示亮度以获得最佳观看效果和节能效果。 TCS3472 本身可以输入一个光感测之间的低功耗等待状态,以进一步降低平均功耗。

回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 11:23:07

TCS34725特征
1、红色、绿色、蓝色 (RGB) ,
并清除光红外阻塞过滤器检测
− 可编程模拟增益和积分时间
− 3,800,000:1 动态范围
− 非常高的灵敏度− 比较适合黑玻璃背后的操作

2、可屏蔽中断
− 可编程的上、下阈值与持久性过滤器

3、电源管理
− 低功耗 — 2.5- A 睡眠状态
− 65- 具有可编程等待的等待状态
状态时间从 2.4 ms 到 > 7 秒

4、I2C 快速模式兼容接口
− 数据速率高达 400 kbit/s
− 输入电压电平与 VDD 兼容
或 1.8 V 总线

5、寄存器组和引脚兼容
TCS3x71系列
01--.jpg

回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 11:27:30

TCS34725功能框图

03.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 11:39:23

02.jpg

TCS3472工作原理
TCS3472 光数字转换器包含一个 3 × 4 光电二极管阵列、四个模数转换器(ADC) 集成光电二极管电流、数据寄存器、状态机和 I2C 接口。 3×4光电二极管阵列由红色过滤、绿色过滤、蓝色过滤和透明(未过滤)光电二极管组成。

此外,光电二极管还涂有红外线阻挡滤光片。四个积分 ADC 同时将放大的光电二极管电流转换为 16 位数字值。转换周期完成后,结果被传送到数据寄存器,这些寄存器是双缓冲的,以确保数据的完整性。全部内部时序以及低功耗等待状态由状态机控制。

TCS3472 数据的通信是通过高达 400 kHz 的快速两线 I2C 串行总线完成的。这行业标准 I2C 总线有助于轻松、直接连接到微控制器和嵌入式处理器。除了 I2C 总线,TCS3472 还提供单独的中断信号输出。当中断是启用,并且超过用户定义的阈值,低电平有效中断被断言并保持断言直到它被控制器清除。这种中断功能简化并提高了系统的效率无需轮询 TCS3472。用户可定义上下中断阈值并应用中断持久性过滤器。中断持久过滤器允许用户定义产生中断之前所需的连续超出阈值事件的数量。中断输出是漏极开路的,因此它可以与其他设备进行线或。

回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 11:43:59

TCS3472 光电二极管光谱响应

04.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 11:44:46

本帖最后由 驴友花雕 于 2021-8-9 14:03 编辑

TCS34725应用
RGB LED 背光控制
光色温测量
用于显示器的环境光感测
背光控制
流体和气体分析
产品颜色验证和分类
最终产品和细分市场
电视、手机、平板电脑、电脑、
和监视器
消费和商业印刷
医疗保健健身
固态照明 (SSL) 和数字
标牌
工业自动化等

01.jpg
相关技术资料(英文版)
http://pdf-html.ic37.com/pdf_file_B/20200531/pdf_pdf/pdf6/AMSCO/TCS3472_datasheet_1159592/188527/TCS347_datasheet.pdf
傲雪电子(中文版)
https://www.waveshare.net/w/upload/3/3c/TCS34725_Color_Sensro_user_manual_cn.pdf




回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 12:08:01

06.jpg

TCS34725颜色传感器模块

【简介】
我是一款颜色传感器,支持通过I2C接口输出RGB颜色数据和光照强度,具有高灵敏度、宽动态范围和测量精确等优点。
【特点】
采用TCS34725FN,内置ADC,高灵敏度,宽动态范围
通过I2C接口通信,不会占用太多接口引脚资源
集成红外阻挡滤光片,可大幅度地减少入射光的红外频谱
支持输出RGB颜色数据,不需要白平衡
支持输出光强度,能够得到近似人眼对光的反应
支持光强中断输出,可编程设置上下限阈值
支持LED灯补光控制,可通过PWM调节亮度
板载电平转换电路,可兼容3.3V/5V的工作电平
提供完善的配套资料手册(Raspberry/Arduino/STM32等示例程序)
【参数】
控制芯片:TCS34725FN
通信接口:I2C
工作电压:3.3V/5V
产品尺寸:27mm × 20mm
分辨率:4通道RGBC,每个通道16位
推荐检测距离:2mm
【用途】
颜色排序、感应与校准环境光、产品颜色识别和分类等。

回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 12:33:51

本帖最后由 驴友花雕 于 2021-8-9 14:30 编辑

TCS34725颜色识别传感器模块电原理图


08.jpg

参考原理图

08-.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 14:08:23

概述
本模块是 ams AG 的 TCS34725FN 彩色光数字转换器为核心的颜色传感器,传感器提供红色,绿色,蓝色(RGB)和清晰光感应值的数字输出。集成红外阻挡滤光片可最大限度地减少入射光的红外光谱成分,并可精确地进行颜色测量。具有高灵敏度,宽动态范围和红外阻滤波器。最小化 IR 和 UV 光谱分量效应,以产生准确的颜色测量。并且带有环境光强检测和可屏蔽中断。通过 I2C 接口通信。

参数
工作电压: 3.3V/5V
控制芯片 TCS34725FN
逻辑电压: 3.3V/5V
通信接口: I2C
产品尺寸: 27X20(mm)

接口说明


07.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 14:29:42

实验硬件连接示意图


09.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 15:10:50

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
  项目之一:简单的颜色识别,串口输出识别情况

  实验开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验一百九十三:TCS34725颜色识别传感器 RGB IIC明光感应模块 ColorSensor
  4.   项目之一:简单的颜色识别,串口输出识别情况
  5. */
  6. #include "DEV_Config.h"
  7. #include "TCS34725.h"
  8. RGB rgb, RGB888;
  9. UWORD   RGB565 = 0;
  10. void setup() {
  11.   Config_Init();
  12.   if (TCS34725_Init() != 0) {
  13.     Serial.print("TCS34725 初始化错误!\r\n");
  14.     return 0;
  15.   }
  16.   Serial.print("TCS34725 初始化成功!\r\n");
  17. }
  18. void loop() {
  19.   rgb = TCS34725_Get_RGBData();
  20.   RGB888 = TCS34725_GetRGB888(rgb);
  21.   RGB565 = TCS34725_GetRGB565(rgb);
  22.   Serial.print("RGB888 :R=");
  23.   Serial.print(RGB888.R);
  24.   Serial.print(" G=");
  25.   Serial.print(RGB888.G);
  26.   Serial.print(" B=");
  27.   Serial.print(RGB888.B);
  28.   Serial.print("\r\n");
  29.   Serial.print("RGB 编号= 0x");
  30.   Serial.println((RGB565), HEX);
  31.   if (TCS34725_GetLux_Interrupt(0xff00, 0x00ff) == 1) {
  32.     Serial.print("Lux_Interrupt = 1\r\n");
  33.   } else {
  34.     Serial.print("勒克斯中断 = 0\r\n");
  35.   }
  36.   Serial.print("\r\n");
  37.   DEV_Delay_ms(1000);
  38. }
复制代码


回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 15:12:28

实验串口返回情况

10.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 15:16:33

实验场景图

11.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 16:23:47

实验开源图形编程(Mind+、Mixly、编玩边学)

项目之二:TCS34725颜色识别

12.jpg

回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 16:25:08

实验串口返回情况

13.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 18:05:47

实验串口返回情况

14.jpg
回复

使用道具 举报

驴友花雕  初级技神
 楼主|

发表于 2021-8-9 18:08:27

最简接线法的实验示意图


15.jpg
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail