【K230/K230D 新技能点亮】握拳灯灭、张手灯亮:用 K230/K230D 打造 AI 手势灯

嘉楠开发者 2026-09-04 08:00
【K230/K230D 新技能点亮】握拳灯灭、张手灯亮:用 K230/K230D 打造 AI 手势灯图1

想象一下:不碰开关、不找遥控器,也不用打开手机 App,只需张开手掌或轻轻握拳,就能让灯光随手势明暗变化。


这一次,我们基于 K230/K230D 的端侧 AI 能力,打造了一套“基于视觉的远程灯光交互系统”。摄像头负责捕捉手部动作,AI 模型实时识别手部和 21 个关键点,再通过 PWM 控制 LED 亮度。整个过程在设备端完成,响应直接,交互自然。

【K230/K230D 新技能点亮】握拳灯灭、张手灯亮:用 K230/K230D 打造 AI 手势灯图2


▶️ 先看运行效果视频

https://www.bilibili.com/video/BV1kwhA64ECC



一、这个项目能做什么?


这套系统把摄像头变成了灯光控制界面,主要支持以下功能:


  • 隔空调节亮度:握拳对应 0%,完全张开对应 100%,手掌张开程度决定 LED 亮度。

  • 分别控制两路灯光:可单独选择 LED1、LED2,也可同时控制两路 LED。

  • 三分区控制:画面被划分为左、中、右三个区域,分别对应 LED2、两灯联动和 LED1。

  • 意图锁定:只有手部稳定停留并被系统判定为主动控制时,操作才会生效。

  • 多人安全保护:多只具有控制意图的手同时指向同一目标时,系统自动冻结控制,避免灯光误跳变。

  • 实时性能显示:屏幕可同步显示 FPS、CPU 负载、推理耗时、内存、PWM 占空比及端到端延迟。

这不仅是一个“识别手势后开关灯”的小实验,更是一套具备菜单选择、用户意图判断、安全仲裁和状态反馈的完整交互系统。



二、准备材料


硬件

  • K230/K230D 开发板

  • 与开发板适配的摄像头模块

  • LCD 显示屏,也可根据配置使用 HDMI

  • LED 模块 × 2

  • SD 卡

  • 若干杜邦线

软件

  • CanMV IDE

  • CanMV 最新固件

下载地址:https://download.kendryte.com/developer/releases/canmv_k230_micropython/daily_build/?lang=zh



三、连接两路 LED


项目默认使用两路硬件 PWM 驱动 LED,因此支持连续亮度调节,而不只是简单地亮灭。


LED

信号引脚

PWM 通道

LED1

IO42

PWM0

LED2

IO43

PWM1


两路 LED 的 VCC 接开发板 3V3,GND 接开发板 GND,IN 分别连接 IO42 和 IO43。


接线前请确认所用 LED 模块支持 3.3V 控制,并核对开发板引脚定义。不要直接用 GPIO 驱动超过引脚额定电流的负载;控制大功率灯具时,应增加合适的驱动或隔离电路。



四、三步完成部署



第 1 步:烧录 MicroPython 固件

将与开发板型号匹配的 MicroPython 镜像烧录到设备。完成后启动开发板,并确认 CanMV IDE 可以正常连接。




第 2 步:准备项目文件

拉取完整 SDK 后,示例代码位于:


src/canmv/resources/examples/27-Gesture-controlled-light/


无需手动复制示例目录。升级固件后,构建系统会自动将示例打包到 SD 卡的 /sdcard/examples/ 目录,设备上的运行路径为:


/sdcard/examples/27-Gesture-controlled-light/


main.py 会将该绝对路径加入模块搜索目录。




第 3 步:运行程序

在 CanMV IDE 中打开 /sdcard/examples/27-Gesture-controlled-light/main.py,连接开发板并运行。初始化完成后,显示屏上会出现四扇区径向菜单。



五、如何用手势控制灯光?




1. 选择控制模式

将手移动到径向菜单的目标扇区,该扇区会高亮显示。随后竖起大拇指并保持约 400 ms,等待进度弧线走完即可确认。


菜单包含四种模式:


  • LED1:单独控制 LED1

  • BOTH:同时控制 LED1 和 LED2

  • LED2:单独控制 LED2

  • REGION:进入三分区控制模式




2. 调节亮度

进入 LED1、LED2 或 BOTH 模式后:


握拳  →  0%亮度半张  →  约50%亮度张开  →  100%亮度


系统会连续计算手掌张开度,并平滑映射到 PWM 占空比,因此灯光可以自然地渐亮、渐暗。




3. 使用三分区模式

选择 REGION 后,画面会分成三个垂直区域:


左侧区域

中间区域

右侧区域

控制 LED2

控制两路 LED

控制 LED1


把手放入某个区域,再改变手掌张开程度,即可控制对应灯光。




4. 返回菜单

在任一控制模式中竖起大拇指,即可重新打开径向菜单。系统设置了姿态释放时间和菜单冷却时间,长时间保持同一手势不会连续误触发。



六、为什么路过的人不会误触?


普通手势识别系统只要“看到手”就可能执行命令,但真实环境中经常有人从镜头前经过。为此,本项目加入了逐帧意图判断机制。


系统会跟踪手部运动速度,并将其划分为三个状态:


  • PASS(灰色):快速移动,判定为路过,忽略操作。

  • SEEN(琥珀色):手部正在减速,控制意图逐渐形成。

  • LOCK(绿色):手部低速稳定保持约 400 ms,获得控制权。

只有进入 LOCK 状态的手才能操作菜单或改变灯光。如果两只或更多有效手同时控制同一目标,系统会显示红色的 SAFETY LOCK 提示并冻结输出。



七、按自己的习惯调一调


常用参数集中在 config.py 中:

LED_PINS = (("LED1", 42, 0),            ("LED2", 43, 1))PWM_FREQ = 1000
CURL_CLOSED = 1.10CURL_OPEN   = 1.95SMOOTH      = 0.30
INTENT_ENABLED = TrueINTENT_TIME_MS = 400INTENT_SLOW    = 0.50INTENT_FAST    = 1.60


  • 手型差异较大时,可调整 CURL_CLOSED 和 CURL_OPEN。

  • 想让灯光变化更柔和,可适当减小 SMOOTH。

  • 想让亮度响应更灵敏,可适当增大 SMOOTH。

  • 如果意图锁定太慢或太容易触发,可调整 INTENT_TIME_MS 及速度阈值。

  • 如果更换接线,可修改 LED_PINS 中的 IO 引脚和 PWM 通道。

建议每次只调整一个参数,观察效果后再继续校准。



八、还能用在哪里?


手势控制不仅有趣,也适合许多不方便触碰开关的场景:


  • 医院、实验室及洁净室中的非接触控制

  • 厨房和食品加工环境中的卫生操作

  • 会议室、演播室的快速调光

  • 智能家居和无障碍交互

  • 戴手套的工业现场

  • 展厅、橱窗和互动装置


还可以继续扩展继电器、灯带、舵机等外设,把手势识别变成更多设备的自然交互入口。涉及市电或大功率负载时,务必使用符合安全规范的驱动与隔离方案。



写在最后


从手部检测、关键点估计,到意图过滤、径向菜单和 PWM 调光,这个项目展示了 K230/K230D 在端侧视觉交互中的完整能力。


一块开发板、一个摄像头、两盏 LED,就能让“挥挥手控制灯光”从想法变成现实。打开项目,接好灯光,一起解锁 K230/K230D 的 AI 视觉新玩法吧!


关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
AI
more
868 亿!黄仁勋官宣收购 Hugging Face,全球最大 AI 开源平台一夜易主
戴森这把 3899 元的 AI 牙刷,用摄像头盯着你的牙缝喷水
有人@你,二进制半导体邀您解码AI风向标!
存储器推升iPhone 18系列成本,AI与定价成换机关键
腾讯WorkBuddy开放平台上线,构建AI Agent生态新范式
营收大增44.72%!杰华特加码AI+汽车双黄金赛道
直播预告|openEuler智能诊断Agent,AI+人怎么分析一次问题诊断?
登顶世界!紫山龙霖GalaxSphere数据智能引擎全面荣登MLPerf® Storage v3.0四大AI场景之榜首
英伟达35亿美元投资联发科,两大巨头在下怎样一盘AI大棋?
Mac mini逆袭数据中心:AI Agent时代的“隐形算力”与苹果的商业悖论
Copyright © 2025-成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号