【测评TCS3472】写个上位机测试 TCS3472 丝滑程度-Arduino中文社区 - Powered by Discuz! Archiver

t3486784401 发表于 2020-4-18 05:14

【测评TCS3472】写个上位机测试 TCS3472 丝滑程度

首先感谢 M5Stack 团队这次给试用 TCS3472 颜色识别模块!
在接下来的日子中我会逐步发表测评帖子,记录项目“色控电子琴”的开发历程。

本帖是第 2 篇测评,内容为使用 PC+UNO 联合测试 TCS3472 色度分辨丝滑程度。

--------------------------------------------------------------------

【背景】
由于最终目标要实现“色空电子琴”,需要直观感受下 TCS3472 在颜色分辨的丝滑程度。
即随着颜色的变化,采样数据是否出现锯齿状阶跃(不丝滑)。

为了直观感受 TCS3472 的颜色分辨能力,需要把色度坐标和马蹄图叠加起来看,
这就催生了这个上位机联合测试的由来。

【代码编写】
整个系统设计成上下位机联合的形式:
下位机(UNO)负责采样 TCS3472 并上传 RGB;
上位机(PC)负责接收数据,计算 RGB->XYZ 转换,并把色度坐标画到一张 CIE-1931 马蹄图上。

下位机编程就不多说了,Lady Ada 代码拿来删减一下只上传 RGB 。
为了兼顾 FPS 速率,设定了 154ms 的采集频率。

上位机用 VS MFC 搞一下,主要内容涉及: ①串口访问,②GDI 绘图,③色度空间换算;
截个图,简单耐用的 VS2005:


【可执行程序】
所有的代码我都编译通过了,打包了可执行文件及关键代码。

下位机(UNO)的是 INO/HEX:
上位机(PC)的是 EXE:

由于PC端使用了标准的 Windows GDI 库,因此在 XP/Vista/Win7/8/10 上全兼容,随便运行。
大家如果有兴趣,可以放在自己的 PC 上和 UNO 进行联合测试。

【运行效果】
上位机运行后,需要设定 UNO 的端口号(我的是COM3)及通讯参数(115200,N,8,1),
点击“Connect”即连上 UNO 开始接收 R/G/B 数据。
收到正确的数据后,标题栏会有显示(RGB, XY, 串口包计数),马蹄图区域十字标指示当前色度 (X,Y)。

下图是 TCS3472 空闲时的状态,十字标位置接近白色,TCS3472 白平衡正常:


下图是检测到了偏红色以后,十字标移动至对应的色度坐标区域:



为了证实整个系统的丝滑程度,我录制了两段视频,分别是反射颜色识别、照射色光识别。
由于论坛附件不能太大,我用了最新的 H265/HEIC 压缩 MP4,若不能播放请升级播放器解码包。

视频总共三个分卷压缩,放一起方可解压:





【结论】
录完视频才发现,TCS3472 丝滑程度远超想象,和 M5Stack 这外壳太搭调了。
我只是用了 154ms 采样速率(约么 7FPS),十字标就已经没啥抖动、阶跃了。

相信这个丝滑程度足够后期折腾“色控电子琴”了。

--------------------------------------------------------------------

以上,写了一套 Windows 上位机界面,与 UNO 联合测试 TCS3472 丝滑程度,结果令人满意。
欢迎大家在自己的 PC+UNO+TCS3472 上运行帖子中的固件,如有 BUG 欢迎来踩: )

祝大家 DIY 愉快,万事如意!

vany5921 发表于 2020-4-20 15:16

:lol写的挺好,有技术含量

t3486784401 发表于 2020-4-22 02:32

vany5921 发表于 2020-4-20 15:16
写的挺好,有技术含量

感谢版主的肯定!祝万事如意!

zawdfgy 发表于 2020-12-4 13:47

感谢楼主分享,支持一下!
页: [1]
查看完整版本: 【测评TCS3472】写个上位机测试 TCS3472 丝滑程度