DIY 巫师手杖:Arduino 101 + RGB 灯带手势交互
元器件与物料
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino 101 (Intel Curie) | 1 | 内置 6 轴 IMU 与蓝牙 |
| Pololu 5V 降压稳压模块 ($4) | 1 | 3×AA 电池盒供电,效率高 |
| 3×AA 电池盒 (含开关) | 1 | |
| AA 电池 | 3 | 任意类型 |
| 公/母 DC 插头对接头 | 各1 | 快速拔插供电 |
| WS2812B 可寻址灯带 (60 LED/m, 1米) | 1 | NeoPixel 兼容 |
| 运动绷带/布胶带 | 1卷 | 固定电子元件兼作手柄 |
| 橡皮筋若干 | 1包 | 临时定位 |
| 手杖主体 (扫把杆/水管/实木拐杖) | 1 | 长约 1.2-1.5 米 |
软件与在线服务
- Arduino IDE (需安装 Intel Curie Board 支持)
项目原理
利用 Arduino 101 内置 IMU 的冲击检测功能,识别手杖在三轴上的剧烈加速度脉冲,通过组合序列触发三种“咒语”灯效。无需复杂的模式匹配引擎,仅计算单位时间内各轴主导脉冲的次数与顺序。
施法手势定义
- 启动:垂直方向快速双击(轻敲地面或空中双抖),白光闪烁确认。
- 选择咒语(1 秒内完成):
- 前/后猛推 → 咒语 1 (绿光)
- 左/右倾斜 → 咒语 2 (蓝光)
- 第三次垂直点击 → 咒语 3 (红光)
- 释放:选定后灯带显示对应颜色常亮,再次垂直点击触发剧烈跑马/呼吸灯效。
每步间隔超 1 秒自动复位,防止误触发。
视觉反馈
- 双击后白光快闪 = 已进入施法模式
- 选定咒语后常亮对应色 = 确认选择
- 释放时跑马/渐变 = 咒语生效
电子部分制作
步骤 1:灯带引线准备
剪下灯带末端约 1 cm,剥离红/绿/黄三线(红=VCC,黄=GND,绿=DIN)。

步骤 2:稳压模块引脚焊接
将稳压模块弯脚排针拆解,焊两根直针至 GND 与 VOUT;绿/黄信号线各焊一根弯针,便于插入 Arduino 排针孔。

步骤 3:灯带供电线接插头
电池盒红/黑线接公头 DC 插座 (+/-);灯带红/黄线接母头 DC 插头 (+/-)。


步骤 4:连接 Arduino 101
- 绿线 (DIN) → D6
- 黄线 (GND) → GND (靠近 D13 侧)
- 稳压模块 GND → GND,VOUT → VIN
⚠ 极性勿反!反接会烧毁稳压模块与 Arduino。

步骤 5:上传代码测试
关闭电池盒,USB 连接电脑,Arduino IDE 选择 "Arduino/Genuino 101" 上传示例代码。拔掉 USB,开启电池盒,USB 口朝下、排针朝向持握者,垂直四连抖测试红咒语。
代码核心逻辑
- IMU 震动中断累计三轴冲击计数 (
tap/lr/fb)。 - 170 ms 窗口内取主导轴作为一个“手势原语”:1=垂直,2=左右,3=前后。
- 状态机 (
state) 跟踪序列:0→1(首击)→2(双击闪白)→3/4/5(三选一)→0(释放触发对应tapspell/leftspell/forwardspell)。 - 超时 1 秒或序列错误回
state=0。 - 灯效用
theaterChase跑马灯,颜色/速度可自定义。
手杖组装
- 选杆:扫把杆、PVC 管或实木拐杖,缠一段运动绷带作工作区。
- 橡皮筋在杆上套几圈,便于临时固定。
- Arduino 101 USB 口朝下,橡皮筋固定。
- 灯带螺旋缠绕杆身,两端用橡皮筋扣住。
- 运动绷带全包裹固定 Arduino 与电池盒,预留电池盒开关操作口。
- 灯带外加薄纱/透明热缩管/塑料瓶切片做漫射,效果更梦幻。







完整代码
完整代码见 GitHub,含 CurieIMU 中断初始化、DMP 姿态解算、状态机与三种咒语灯效函数。关键校准参数 LED_OFFSET (0-23) 需根据灯带安装角度调整,使启动白闪方向与手杖垂直方向对齐。
制造工艺