智能 3D 传感器:基于 Walabot 与 Alexa 的语音定向灯光控制
组件与材料
| 组件 | 数量 |
|---|---|
| Amazon Echo (Alexa) | 1 |
| Walabot Creator 3D 成像雷达 | 1 |
| Arduino Leonardo(集成于 LattePanda) | 1 |
| 继电器模块 | 2 |
| LattePanda 2G/32GB(Win10 + 内置 ATMega32u4) | 1 |
| LattePanda 7寸 1024×600 IPS 屏 | 1 |
| 台灯 | 2 |
项目动机
智能家居设备多了容易记不住名字,语音指令常被误识别或需强制指定设备名。本项目利用 Walabot 毫米波雷达感知人体位置,结合 Alexa 语音指令,实现“打开这盏灯”式的自然交互:用户靠近哪盏灯、对着哪盏灯说话,系统自动关联并控制对应继电器。
核心硬件架构
- Walabot:可编程 3D 射频成像传感器,通过 RFID 技术追踪人体坐标 (x, y, z),通过 USB 接入 LattePanda
- LattePanda:x86 单板电脑(Intel Atom x8300,Win10),内置 Arduino Leonardo 协处理器(GPIO 直连继电器),一机双用
- Node-RED:可视化流编程工具,运行在 LattePanda 上,连接 Walabot 数据流、Alexa 本地技能节点、Arduino Firmata 控制
软件安装与配置
- Walabot SDK:官网下载安装,配置 Python 环境
- Arduino Firmata:IDE 打开
StandardFirmata,选 Leonardo 板型,上传至 LattePanda 内置 MCU - Node.js + Node-RED:安装 Node.js,
npm install -g node-red,启动node-red访问https://localhost:1880 - Node-RED 关键节点:
node-red-contrib-alexa-local:模拟 Philips Hue 设备,让 Alexa 直接发现“灯”node-red-node-arduino:通过 Firmata 读写 Arduino GPIO
- Python 3:运行 Walabot 数据采集脚本
- 项目代码:GitHub 仓库,
npm install && npm start启动完整流程
数据流向(三步走)
- Walabot 服务 (Python):配置雷达参数(距离 50-400cm、方位 ±45°、俯仰 ±20°、MTI 动态滤波),每帧触发扫描,提取最近目标坐标,打包 JSON 通过 TCP 1890 端口推送
- Node-RED 解析与缓存:TCP 节点接收 JSON,解析
targets[0].x/y/z存入全局变量X/Y/Z - Alexa 指令处理:收到“开灯/关灯”指令,读取最近坐标,根据 X/Y 正负判断用户面向左/右灯,驱动对应 Arduino 引脚控制继电器
关键代码片段
Walabot Python 采集脚本
WalabotAPI.Init(); WalabotAPI.SetSettingsFolder(); WalabotAPI.ConnectAny()
WalabotAPI.SetProfile(WalabotAPI.PROF_SENSOR)
WalabotAPI.SetThreshold(35)
WalabotAPI.SetArenaR(50, 400, 4)
WalabotAPI.SetArenaPhi(-45, 45, 2)
WalabotAPI.SetArenaTheta(-20, 20, 10)
WalabotAPI.SetDynamicImageFilter(WalabotAPI.FILTER_TYPE_MTI)
WalabotAPI.Start()
# TCP 服务端
s = socket.socket(); s.bind(('127.0.0.1', 1890)); s.listen(1)
conn, addr = s.accept()
while True:
WalabotAPI.Trigger()
targets = WalabotAPI.GetSensorTargets()
finds = '{"targets":['
for i, t in enumerate(targets):
if i == 0:
finds += '{"x":"%s","y":"%s","z":"%s"}' % (t.xPosCm, t.yPosCm, t.zPosCm)
finds += ']}'
conn.sendall(finds.encode())
Node-RED 函数节点:解析坐标存全局
var raw = msg.payload.toString('utf8');
var j = JSON.parse(raw);
if (raw.length > 20) {
global.set('X', j.targets[0].x);
global.set('Y', j.targets[0].y);
global.set('Z', j.targets[0].z);
}
return [msg, {payload: j.targets[0].x}, {payload: j.targets[0].y}, {payload: j.targets[0].z}];
使用效果
用户对着任一台灯说 “Alexa, turn on this lamp”,系统根据 Walabot 实时位置自动匹配灯具,无需预设设备名。Node-RED 可视化流程便于扩展更多传感器与执行器。
制造工艺
- 树莓派 3 计算机视觉运动传感器:人脸检测对接 SmartThings
- 树莓派 DIY 红外运动传感器:从原理到代码的完整指南
- 智能垃圾桶:基于蜂窝物联网的自动化废物管理解决方案
- 树莓派 + Python 让 Amazon Alexa 控制 Google Chromecast
- 智能路灯:物联网自适应照明系统
- 树莓派避障机器人搭建指南:新手入门教程
- 智能笔:基于树莓派与 IMU 的实时手写与运动追踪
- 锯切工具全解析:类型、功能与应用场景
- 革命性超灵敏耐用应变传感器赋能智能纺织品
- 革命性超薄传感器增强智能隐形眼镜功能
- 先进TOMOPEX传感器膜实现航空航天实时监测
- 加热服饰:专家揭示智能纺织品首要创新应用