一根装着全志 V851S 和 BMI088 的赛博魔杖,用神经网络认出挥动手势,再通过 Wi-Fi 和 MQTT 把结果交给本地 Home Assistant,去关顶灯、开台灯、一键观影。本文按视频里的制作顺序,聊硬件分区、多人数据采集、外形雕刻,以及为什么让魔杖只负责说出手势,把设备调度留给自动化。
视频演示
我不信有谁能拒绝一根笔直、又带点魔力的棍子。
可惜翻完麻瓜世界这本字典,结论挺扫兴。咒语念得再标准,灯也不会自己灭。
在我心里,像样的魔法就该是点火熄灯、操纵家电。躺在床上一抬手,顶灯就灭了,睡前再也不用下床。
魔法失效,那就科技来补。
于是有了这根赛博魔杖。外面是一根雕出纹路的魔杖,肚子里塞着一块细长的电路板,板上跑着 Linux,认得我挥出来的手势。挥对了,消息顺着 Wi-Fi 送到家里的 Home Assistant,灯、空调、投影就跟着动起来。

视频里它干的活不少。躺在床上挥一下关顶灯,对着桌面挥一下开台灯,空调、摄像头、蒸煮锅、电饭煲,甚至电蚊香,都被它点过名。还有一个「一键观影」,一挥之后,投影直接把片单铺到了墙上。
果然,懒惰才是人类进步的阶梯。
这篇就按视频里的顺序,把这根棍子拆开聊聊。硬件怎么塞进去,手势怎么认出来,外壳怎么来的,还有为什么我没让魔杖自己去控制每一台设备。
先把一块 Linux 板子塞进棍子里
魔杖的主控是全志 V851S。翻开它的数据手册,第一页写着 IP Camera SoC,本职是给网络摄像头当大脑的。一颗给摄像头准备的芯片,最后住进了一根魔杖,大概是它入职时没想到的岗位。
选它的理由很实在。视频里写了,它跑在 900MHz,可以稳定运行 Linux,还支持 SSH 远程开发。对一根最后要封进外壳的棍子来说,这点挺重要,能通过网络进去改东西,就能少拆几次壳。

板子做得又细又长,好塞进杖身。原理图按功能分了区,读起来像一张魔杖的器官表。
| 分区 | 器件 | 在魔杖里做什么 |
|---|---|---|
| 主控 | 全志 V851S,配无源晶振 | 跑 Linux 和手势识别 |
| 姿态传感 | BMI088,SPI 连接 | 采集加速度和角速度 |
| 存储 | W25N01GVZEIG | 1Gbit SPI NAND,存放系统和程序 |
| 充电 | LTC4054ES5-4.2 | 从 Type-C 取电,给单节锂电池充电 |
| 电源管理 | EA3059 | 四路降压,给主控和外设分出不同电压 |
| 调试 | CH343P | USB 转串口,查看系统日志 |
| 烧录 | FEL 按键 | 让 V851S 进入 USB 下载模式 |
| 交互 | 功能按键、拨动开关、LED | 操作、电源通断和状态指示 |
无线走的是 Wi-Fi。魔杖和家里的服务器之间,靠的就是这一路网络。
BMI088 值得多说一句。它是博世的六轴惯性传感器,一个封装里放着加速度计和陀螺仪两个独立的传感器。原理图上能看到它们各有一根片选线,CSB_ACCEL 管加速度,CSB_GYRO 管陀螺仪,共用同一组 SPI 时钟和数据线。主控想读哪个,就把哪根片选拉低。

加速度记录手往哪个方向使劲,角速度记录手腕转得多快。一次挥动,在它眼里就是六条随时间起伏的曲线。
电源这块也没少花心思。V851S 需要好几路电压,EA3059 负责四路降压,原理图旁边还专门标了一句「RC 延时电路,满足上电时序」。几路电压谁先上、谁后上是有讲究的,顺序乱了,芯片可能根本起不来。这种细节不会出现在演示画面里,板子能不能亮,却全看它。
原理图里还有一个分区,被我起名叫「点灯大师」,里面就一颗 LED。嵌入式人的老传统,先点亮一颗灯,再谈别的。

让棍子认得手势
硬件只是让魔杖能感觉到动作,要让它看得懂,还得教。
教的办法很朴素,大量采集六轴传感器数据,再拿去训练神经网络。
这一步偷不了懒。同一个手势,每个人挥出来的速度、幅度和手腕角度都不一样,数据要是只来自一个人,模型很可能只认得这一个人的手。视频里能看到好几个人举着魔杖在屋里比划,还有人跑到楼外的空地上接着挥。

采回来的每一次挥动,都是一段带时间顺序的六轴数据。神经网络要做的,就是从这一段曲线里分辨出它属于哪一个手势。训练好的模型放回魔杖,挥完一下,板子自己给出结果。

视频里这一段,我配了一句「接下来就是考验人类和主机大脑的时刻了」。人类负责一遍遍地挥,主机负责一遍遍地算,谁先累还真不好说。
系统这边用的是全志的 Tina Linux。视频里那段飞快滚动的编译日志来自它的 SDK,目录叫 tina-v853-docker,一个个软件包都放在 openwrt/package 底下编译。
外形是一点点雕出来的
电路板管的是魔法的内核,魔杖总得长得像根魔杖。
外形是用数位板在三维软件里一点点雕出来的。杖身修长,握柄那段做出了树皮一样的粗糙纹路,远看像是从对角巷的魔杖店里挑回来的,近看才知道里面装着一块 Linux 板子。

魔杖只说一句话,剩下的交给 Home Assistant
做到这里,有个问题绕不过去。家里的设备往往来自不同品牌,各有各的协议和 App。要是让魔杖挨个去学它们的方言,这根棍子很快就会变成一个塞不下的翻译官。
所以魔杖只做一件事,认出手势,然后把结果说出去。
说话用的是 MQTT。这是一种发布、订阅模式的轻量消息协议,中间有一个消息代理负责转发。魔杖把手势结果发布出去,谁关心,谁就去订阅。
听的那一方,是跑在本地服务器上的 Home Assistant。它本来就能接入各家的智能设备,也有现成的 MQTT 集成。收到魔杖的消息以后,触发哪条自动化、开哪盏灯、关哪台设备,全由它决定。

| 环节 | 谁负责 | 做什么 |
|---|---|---|
| 感知 | 魔杖上的 BMI088 | 记录一次挥动的六轴数据 |
| 识别 | 魔杖上的 V851S | 判断这一下是哪个手势 |
| 传话 | Wi-Fi 和 MQTT | 把手势结果送到本地服务器 |
| 决策 | Home Assistant | 按自动化规则调度设备 |
| 执行 | 灯、空调、投影等 | 真正动起来 |

这样分工有个很大的好处。魔杖不用知道「一键观影」具体要开几台设备,想换玩法,只要在 Home Assistant 里改自动化,棍子本身不用重新烧录。视频里那句「所有自动化流程,你可以随意编排」,底气就在这里。
视频里我把话说得比较满,理论上,它可以控制所有联网的设备。这句话还得补两个前提。设备要先接进 Home Assistant,魔杖也要连得上网、找得到这台服务器。两头都接上了,一挥之后发生什么,就交给自动化去编排。
有段时间我特别沉迷《黑神话:悟空》,没日没夜地玩。西方的魔杖,借进东方的神话里挥两下,好像也说得过去。
它也不一定非得是一根棍子。视频快结尾时露了一眼手套的样子,把手势识别装进手套里,用手势去控制别的设备。当然,这是后话了。
搁置了一年的魔法
这个项目从 2024 年年初冒出想法,中间放弃又捡起了好几次,因为各种各样的事,搁置了一年,冬装夏装都换过了一轮。
好在最后,它还是完整地做完了。脑洞先落地,细节慢慢打磨,这根魔杖算是把这句话老老实实走了一遍。
回到开头那根棍子。
它还是笔直的,也确实带了点魔力。只不过魔力不来自咒语,来自一块细长的电路板、一大堆挥出来的数据,和家里那台安安静静待命的服务器。
麻瓜没有魔法,但麻瓜会画板子。
参考资料
鸿尘客 Honchic · 把脑洞焊到电路板上