Smart Cube:基于 Arduino 101 的六面体手势智能家居控制中枢
什么是 Smart Cube?
Smart Cube 是一款便携式智能家居控制器,内置 Arduino 101 (Intel Curie) 与多传感器,通过 蓝牙低功耗 (BLE) 与家庭中控或手机 App 通信。其核心创新在于六面体手势交互:
- 立方体 6 个面分别映射一项功能(灯光、温控、定时器、电视、声控、关闭)
- 内置六轴 IMU (加速度计+陀螺仪) 实时检测“哪个面朝上”
- 某面朝上持续 2 秒 → 激活对应功能(延迟设计防误触)
- 摇晃 2 秒以上 → 关闭上一次激活的功能
- “OFF”面朝上并摇晃 → 一键关闭所有功能(类似手机 Home 键)
六大功能面详解
| 面 | 功能 | 指示/反馈 | BLE 指令 |
|---|---|---|---|
| LIGHTS | 开启所在房间灯光 | 黄色 LED 常亮;摇晃关灯时黄 LED 亮起作寻物灯 | Automation IO Digital 特征值 1=开/0=关 |
| TEMPERATURE | 读取板载温度传感器,自动切换制冷/制热 | 蓝 LED=制冷(雪花) / 红 LED=制热(太阳) | Digital 特征值 1=冷/2=热/0=关 |
| TIMER | LCD 显示倒计时 (默认 2 分 30 秒),蜂鸣器报警 | LCD 蓝底运行,红底超时;摇晃暂停显示剩余时间 | 本地运行,无 BLE 指令 |
| TV | 面朝上激活 3×4 矩阵键盘,发送数字键码 | 键盘仅此面启用,防误触 | Analog 特征值发送按键 ASCII;'O' 开/'C' 关 |
| SOUND | 声控面:板载麦克风驱动绿 LED 亮度随噪音变化 | 绿 LED 亮度实时跟随分贝 | 本地运行,可扩展为拍手触发 |
| OFF | 中性位;摇晃则全关并亮红 LED 作寻物灯 | 红 LED 常亮 | 发送全关指令 |
硬件清单
- Arduino 101 ×1
- Seeed Grove Base Shield V2 ×1
- Grove 模块:LCD RGB 背光、声音传感器、蜂鸣器、温度传感器 ×各1
- 4×4 矩阵键盘 ×1
- LED ×5 (蓝/黄/绿/红×2) + 220 Ω 电阻 ×5
- 9V 电池 + 电池扣 + 3mm MDF 激光切割外壳
电子组装要点
- Grove Base Shield 扣在 Arduino 101 上
- Grove 设备按接线图插座:蜂鸣器 D3、LCD I²C、温度 A0、声音 A1
- 键盘 7 根线按顺序接引脚 10,8,7,6,5,4,2
- 5 颗 LED 阳极经 220 Ω 接引脚 9/11/12/13/A2,阴极共地
- 电池接线做成插头直插 Arduino 电源座,节省内部空间
外壳制作:激光切割 MDF
- 内部边长 9 cm,3 mm MDF 材质
- DXF 文件中红线=雕刻图标,黑线=切割
- 如材料厚度不同,请用 MakerCase 重新生成
- 内部用纸板垫高 LED 使其齐面;键盘、LCD 嵌入开孔
- 组装后用热熔胶固定主板与电池,防摇晃时位移
代码架构解析
主循环 loop() 分四段:
- 姿态检测:移植自 Arduino 官方 CurieIMU 示例,实时得出 0~5 六个朝向值
- 面激活判定:朝向改变 → 记录
millis();同一朝向持续 >2 s 且非上一功能 → 置对应faceX = true,记录lastFUNCTION - 摇晃检测:CurieIMU 震动中断 (7g/2s) 触发 → 关闭
lastFUNCTION对应功能,置faceX = false - 功能执行:仅对
faceX == true的面执行核心逻辑 (BLE 发送、LED 控制、LCD 刷新、温度读取等)
自定义功能只需修改第 4 段对应 if (faceX == true) 块内代码,并同步补充摇晃关闭时的清理代码。
BLE 调试 App
推荐 nRF Connect (Android/iOS):
- 扫描连接 “SmartCubeSketch”
- 展开三个 “Automation IO” 服务,开启持续数据收集
- 观察 Digital/Analog 特征值变化验证指令
项目展望
- 开发“中控网关”接收 BLE 指令,直驱继电器/红外/RS485 等执行器
- 增加红外发射功能直接控制电视(受限于 Arduino 101 IR 库缺失,现通过网关转发)
- 模块化面板设计:想加“自动喂猫”面,只需换一面板改代码即可
完整代码
见附件 SMART CUBE - complete code with comments (500+ 行,逐行注释)。核心库:CurieIMU.h、CurieBLE.h、Wire.h、rgb_lcd.h、Keypad.h。
结语
这是作者首个落地原型,虽非革命性创新,却探索了“姿态+BLE”的全新交互范式。代码完全开源,欢迎按需魔改——把你的奇思妙想装进这个立方体吧!
制造工艺