颜色/RGB识别传感器 — 展厅"识物辨色"互动的判色小能手

2026-07-12 接口:I2C/开关量 R2
你将学到
  • 搞懂光电二极管加 RGB 滤光片如何测出颜色,以及 RGB 与 HSV 判色的差别
  • 理解环境光和补光对判色的决定性影响,学会用打光罩把变量控住
  • 会为识物分拣、颜色配对、道具识别选合适的判色方案
  • 掌握 I2C 就近读和做成开关量色标两种工程接法,把信号送进采集与中控
  • 学会白平衡标定和阈值分档,把"差不多的颜色"稳定分开

第一次做"彩色积木识别"互动栽的跟头,现在还记得:实验室调得好好的,红黄蓝白都能准确认出来,一到现场展厅全乱套。后来才反应过来——现场头顶是暖色射灯,展台又靠窗有天光,环境光把传感器看到的颜色整个"染"了一遍。颜色传感器最大的敌人从来不是颜色本身,是光。

颜色传感器在展厅里的活儿是:判断放上来的东西是什么颜色,然后触发对应的内容。识物分拣、颜色配对游戏、不同颜色道具切不同剧情,都是它的主场。这篇把测色原理、环境光这个大坑、两种接法和标定讲透,帮你把"实验室能用、现场翻车"的经典陷阱绕过去。

R2 内容,涉及传感器选型与接线。颜色传感器的积分时间、增益、I2C 地址、输出量程以所用型号的官方 datasheet 为准;工业采集与中控链路以科星官方文档为准。


原理:把反射光拆成 RGB 再判色

颜色传感器(以常见的 TCS34725 一类为例)本质是一组 带滤光片的光电二极管阵列 + 积分器。它的工作分几步:

  1. 板载一颗白光 LED 补光,把待测物照亮(这一步很关键,后面细说)。
  2. 物体表面把光反射回来,进入传感器的光电二极管阵列。
  3. 阵列前分别覆盖了红、绿、蓝三种滤光片(外加一路无滤光的 Clear 通道测总亮度),各通道只让对应颜色的光通过。
  4. 每个通道在一段积分时间内累积光子转成电荷,得到 R、G、B、C 四个原始计数值。
  5. 把 R:G:B 的比例(而不是绝对值)算出来,就得到颜色信息。

拿到 RGB 之后怎么判色,有两条路:

  • 直接比 RGB 比例:简单,但对亮度变化敏感——同一个红色,光强不同 RGB 绝对值差很多。
  • 转成 HSV 再判:把 RGB 转成色相(Hue)、饱和度(Saturation)、明度(Value),用色相 H 判颜色。H 基本只跟"是什么颜色"有关,跟明暗关系小,抗亮度波动能力强很多。展厅判色优先用 HSV 的色相加阈值
📌 说明

记住一个反直觉的点:颜色传感器给的原始 RGB 是"这块物体在当前光照下反射出来的样子",不是物体的"真实颜色"。同一个物体换个光,读数就变。所以判色永远是相对的、要标定的,别指望上电就有绝对准确的颜色名。


颜色传感器能感知什么

感知能力 说明
RGB 三原色分量 红绿蓝各通道的光强计数,判色的原料
明度/总亮度(Clear) 无滤光通道,反映整体反射强度,也可做有无物体判断
色相(换算 HSV 后) 由 RGB 换算,判"什么颜色"最稳的量
颜色分档判定 把连续 RGB/HSV 按阈值归到有限几种预设颜色

展厅场景基本都是"分档判定":不需要精确色号,只要把放上来的东西稳定归到红/黄/蓝/绿/白等有限几类,触发对应内容即可。所以工程重点不是"测得多准",是"分得多稳"。


优势与局限

优势:

  • 能分辨具体颜色,不像普通光电开关只能判有无/明暗。
  • 近距离下判色稳定,配好补光和光罩,红黄蓝这种差异大的颜色能分得很干脆。
  • 有 I2C 数字接口,读原始 RGB 方便,判色逻辑放中控/采集侧灵活调。

局限(诚实说):

  • 受环境光影响极大:这是头号问题,不控光基本没法稳定用。
  • 距离敏感:物体离传感器远近变了,反射光强跟着变,判色会飘。要固定检测距离。
  • 只能近距离:典型工作距离就是贴近的几毫米到几厘米,别指望隔空、远距离、大视野判色
  • 相近色难分:浅蓝和浅绿、深红和棕,这种色相接近的靠阈值容易串档。设计互动时就该选色差大的道具,别给自己出难题。
  • 反光/透明/金属面翻车:镜面反光、透明玻璃、金属,反射特性怪异,判色不可靠。
💡 提示

一条能救命的设计原则:从互动策划阶段就把判色难度压下去——用饱和度高、色相拉开的纯色道具(正红/正蓝/正黄),别用马卡龙色系、别用带反光涂层。传感器再好也架不住"人眼都要凑近分辨"的相近色。


展厅工程级接法

颜色传感器有两种典型落地方式,按需求选。

方案 A:I2C 就近读原始 RGB

待测物(放置区,固定距离 + 补光罩)
  │
颜色传感器(I2C:SDA/SCL)
  │  I2C 是短距总线,就近接
  ▼
就近的采集/网关(带 I2C 的边缘网关,或先转 485/网口)
  │
  ▼
中控软件(SoftControl)── 读 RGB → 判色 ──▶ 触发对应内容

方案 B:本地判色 → 做成开关量色标

传感器就近接一个小的判色单元(把 RGB 分档逻辑固化在本地),每种颜色对应一路开关量输出,再把这几路开关量接进工业 DI 采集:

颜色传感器 → 本地判色单元 → 多路开关量(红=DO1 / 蓝=DO2 / 黄=DO3 …)
  → 工业开关量采集(科星)→ 中控读状态位触发

接线要点

  1. I2C 是短线总线:SDA/SCL 拉线别太长(几十厘米内为宜),长了要降速率或加驱动。就近接采集/网关,别指望 I2C 拉几米过去。
  2. 固定检测距离和位置:给待测物做一个定位卡槽/托盘,保证每次放的位置和离传感器的距离一致,这是判色稳定的前提之一。
  3. 必须加补光 + 遮光罩:用传感器自带或额外白光 LED 稳定补光,外面套一个遮光罩把环境光挡住——让传感器看到的光基本只来自可控的补光。这一步做好,现场和实验室的差异就小了。
  4. 共地、信号远离强电:I2C 和开关量都是弱信号,走弱电、共地。
  5. 判色逻辑放哪:要现场灵活调阈值,放中控(方案 A);要链路简单、只认几种固定色,做成开关量色标(方案 B)进 DI 更省心。
💡 提示

遮光罩 + 固定距离这两条,比换更贵的传感器管用得多。见过太多人一遇判色不准就想升级硬件,其实是没把光和距离这两个变量控住。


调节 / 标定要点:白平衡是必修课

颜色传感器上线前一定要做白平衡/基准标定,否则读数没法用:

  • 取白基准:在实际安装环境、开着补光、盖着光罩的条件下,放一张标准白卡,记下此时的 RGB 读数作为"白"的基准,后续判色以此归一化,抵消补光颜色偏差和环境残光。
  • 采样各目标色:把每种要识别的道具依次放上去,各记录多次 RGB/HSV 读数,看它们的色相分布,在相邻两色的分界处划阈值,并留出安全间隔(死区),避免边界抖动串档。
  • 调积分时间和增益:光弱、颜色暗就加长积分时间或调高增益(读数更足但更慢/噪声大);反射强就反过来。以型号可调范围和 datasheet 为准。
  • 换环境要重标:换了展厅灯光、换了安装位置、补光 LED 老化了,都可能要重标白平衡。把标定做成现场一键流程,省得每次翻手册。

选型对比表

维度 颜色传感器(I2C RGB) 普通光电开关 工业视觉判色
能判具体颜色 是(近距、需标定) 否(只判有无/明暗) 是(远距、多目标、更强)
工作距离 近(毫米~厘米级) 近~中 中~远
抗环境光 弱(必须遮光补光) 较强(可控光源+算法)
相近色分辨 一般(靠阈值) 不适用
成本 很低
接口 I2C / 转开关量 开关量 网口/工业协议
展厅典型场景 单件道具识色触发 有无物体检测 复杂分拣/多色多目标

相机视觉判色属于另一条技术路线,复杂多目标场景才考虑,普通"放一件认一色"用颜色传感器即可。具体参数以型号 datasheet 为准。


故障排查表

现象 最可能原因 处理方法
实验室准、现场乱 环境光干扰 / 没做现场标定 加遮光罩挡环境光;在现场光照下重做白平衡
同一物体读数忽大忽小 检测距离不固定 / 物体没放稳 加定位托盘固定距离和位置
相近两色老是认错 色相太接近 / 阈值死区不够 换色差更大的道具;阈值间加死区;改用 HSV 色相判
白色/浅色都判成一样 补光太强饱和 / 增益过高 缩短积分时间、降增益;重标白基准
暗色/深色读不出 补光不足 / 积分时间太短 加长积分时间或增益;加强补光
I2C 读不到 地址错 / 线太长 / 上拉缺失 核对 I2C 地址;缩短走线;确认 SDA/SCL 上拉电阻
反光/透明物判色乱 镜面反射/透光特性异常 这类材质本就不适合,改道具材质或换识别方式

进阶 / 应用案例

  • 颜色配对游戏:参观者从一堆色块里挑出和屏幕提示同色的放上去,传感器判色对了就加分——判色阈值要设稳,别让"差不多的颜色"误判扫了兴致。
  • 识物分拣互动:几种不同颜色代表不同类别的道具,放上对应颜色触发对应的科普内容或动画,比按钮选择更有参与感。
  • 道具识别切剧情:给不同角色/关卡配不同颜色的实体令牌,放上去切换整段体验内容——本质是用颜色当低成本的"实体选择器"。
  • 多工位色标流水线:用方案 B 把每个工位的颜色判定做成开关量进 DI,中控统一读多工位状态,做团队协作类的拼色互动。

动手挑战

  1. 拿一颗 TCS34725 一类的模块,用 I2C 读原始 R/G/B/C,把红黄蓝白几个色块分别在开灯/关灯/盖光罩三种光照下各读一遍,亲眼看看环境光把读数改动了多少——这一遍做完你就再也不会忘记加遮光罩。
  2. 把读到的 RGB 转成 HSV,只用色相 H 给几种色块划阈值,故意拿两个相近色测边界,看看死区留多大才不串档。

本节学到的知识

  • 颜色传感器(TCS34725 一类)= 带 RGB 滤光片的光电二极管阵列 + 积分器,加一路无滤光的 Clear 通道测总亮度,输出 R/G/B/C 四个原始计数
  • 板载一颗白光 LED 补光是判色前提;测的是反射光,读到的永远是"当前光照下的样子",不是物体真实颜色,所以判色是相对的、必须标定
  • 判色两条路:直接比 RGB 比例(对亮度敏感)或转 HSV 用色相 H 判;展厅优先 HSV 色相 + 阈值,抗亮度波动强得多。
  • 头号敌人是环境光,其次是距离;工作距离就是贴近的毫米到厘米级,别指望隔空、远距离、大视野判色。
  • 稳定判色三件套:遮光罩 + 固定检测距离(定位卡槽/托盘)+ 白平衡标定,比升级硬件管用;相近色、反光/透明/金属面它搞不定,要在策划阶段就规避。
  • 接口 I2C / 开关量两选一:I2C 是短线总线(SDA/SCL 走线几十厘米内为宜,长了降速率或加驱动、确认上拉电阻),弱信号走弱电、共地、远离强电。
  • 两种工程接法:方案 A I2C 就近读原始 RGB 让中控灵活判色;方案 B 本地判色做成多路开关量色标(红=DO1/蓝=DO2…)进工业 DI 采集,链路简单、只认固定几色更省心。
  • 白平衡标定:现场开补光、盖光罩下放标准白卡取基准归一化;各目标色多次采样在相邻色分界处划阈值 + 留死区防串档;积分时间/增益按光强调(暗加长/调高,强反之),换灯光或安装位要重标。以型号 datasheet 为准。

小结 · 你掌握了什么

  • 颜色传感器用 RGB 滤光片加积分测反射光的三原色配比,读到的是"当前光照下的样子",判色永远是相对的、要标定的。
  • 判色优先转 HSV 用色相,抗亮度波动比直接比 RGB 稳得多。
  • 头号敌人是环境光,其次是距离——遮光罩 + 固定距离 + 白平衡标定三件套做好,比升级硬件管用。
  • 别对它提过分要求:只近距、色差大的道具才稳;相近色、反光透明金属面它搞不定,这些要在策划阶段就规避。
  • 工程接法两条路:I2C 就近读原始 RGB 让中控灵活判色,或本地判色做成开关量色标进 DI,按链路复杂度选。

要把"认出的颜色"接进抢答、配对、计分这类互动逻辑,中控答题系统是承接层——了解 Quiz 互动答题系统

📄 来源 / 自校链接

本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。

需要展厅软硬件方案或定制开发?