通过 Edge Impulse 的 FOMO 技术构建一个手势控制器:用手操控音乐
手势Spotify控制器是一款完全基于Arduino UNO Q运行的手势音乐遥控器,无需云端、视频流或配套应用程序来监控你。抬起手,做出四种手势之一,你的Spotify播放就会相应响应:播放、暂停、下一首、上一首。摄像头画面始终留在电路板上,所有推断均在设备本地完成。
一款基于边缘人工智能的无接触媒体控制器,利用实时计算机视觉控制Spotify播放。该项目采用Arduino Uno Q双脑架构,结合硬件加速的手势识别(通过USB网络摄像头)与Modulino Pixels和Modulino Buzzer模块实现即时多感官反馈,并与Spotify Web API无缝集成。
我为什么要建造它
我想要的项目,不只是一个连接到云端API的网络摄像头,而是一个真正获得“边缘AI”标签的项目。我先考虑了几种想法——比如垃圾分类器、姿态监测器、室内空气质量传感器、线缆识别器、桌面守卫者——但每一个都面临一个问题:要么需要的数据采集在时间上不切实际,要么听起来像是个噱头,无法让任何人对演示后产生持续兴趣。手势控制完美解决了这两个问题:它确实实用(谁不想在锻炼或做饭时不用碰手机就能跳过某首歌呢?),而且还能清晰展示出在一块微型电路板上实现的实时、本地化计算机视觉技术。
系统架构与亮点
•边缘视觉处理:采用Arduino App Lab的VideoObjectDetection框架,通过标准USB摄像头实时捕捉并识别手势动作,并应用去抖和冷却算法,防止误触多次触发。
•软硬件RPC桥接:Python主机通过UART经由Arduino_RouterBridge与Uno Q微控制器无缝通信,实现即时触觉反馈,同时不阻塞主应用程序循环。
•异步云控制:在非阻塞的后台守护线程中使用spotipy发送Spotify Web API命令(OAuth 2.0 REST请求),确保网络延迟不会导致实时视频采集流卡顿或冻结。
•无头嵌入式OAuth:实现自定义的内存令牌认证处理器(MemoryCacheHandler),可在嵌入式Linux设备上实现后台令牌刷新,无需依赖交互式浏览器提示或文件系统锁限制。
它是如何工作的
•通过观察手势——一个USB摄像头将帧数据传输给UNO Q. Edge Impulse的FOMO(更快物体,更多物体)模型——该模型经过训练,可识别四种手势类别(播放、暂停、下一曲、上一曲),并结合背景负样本帧——系统可在设备上直接逐帧检测和分类手势。
•从检测到执行——App Lab 的 VideoObjectDetection 模块会运行模型,并在手势被准确识别时触发 on_detect_all 回调函数。该回调经过去抖处理,以防止持续按压的手势产生重复的命令。
•跨平台通信——运行Python推理的Linux端通过Bridge RPC与微控制器端通信,使MCU能够驱动Modulino Pixel和蜂鸣器,实现即时的物理反馈:颜色闪烁和蜂鸣声确认手势已被捕捉,而Spotify指令甚至还未完成。
•连接 Spotify — 该系统通过调用官方的 Spotify Web API(使用 spotipy)来控制任何正在播放内容的设备,例如手机、笔记本电脑或扬声器,无论这些设备位于你的 Spotify Connect 账户的哪个位置。认证只需在笔记本电脑上进行一次,生成一个令牌;该令牌随后被复制到 UNO Q 上,使其在无浏览器和无需依赖其他设备开机的情况下,以无头模式运行。
结果是:你可以向桌上的一块小板子挥手,房间中间的音乐就会改变,而识别、反馈和决策全都发生在UNO Q内部。
本文编译自hackster.io





