基于Arduino® UNO™ Q开发板的实用资产追踪系统
本项目演示了开发者如何利用各种高通技术以及在Arduino® UNO™ Q开发板基础上搭建的蓝牙®低功耗(Bluetooth® Low Energy)资产追踪器,构建低功耗物联网资产追踪解决方案。该方案将低功耗蓝牙网络连接与实时位置和状态监测相结合,展示了如何为日常资产开发智能追踪应用。该项目重点呈现了开发过程中的关键环节,包括硬件集成、软件设计以及创建联网追踪设备所需要的端到端工作流程。
在本项目中,您将构建一款低功耗蓝牙资产追踪器,可以扫描低功耗蓝牙信标标签,通过RSSI(信号强度)数值估算接近程度,并在贴有标签的物品在不同接近区域之间移动时,触发本地硬件反馈(RGB LED灯、舵机闸门和蜂鸣器)。
此项构建任务充分体现了搭载高通跃龙处理器的UNO Q开发板所采用的双域设计:在一块统一的开发板上,支持Linux操作系统的微处理器(MPU)负责处理扫描、状态逻辑和编排任务,而实时微控制器(MCU)则负责处理即时物理响应,所有功能均作为单个Arduino App Lab项目进行部署。
完整硬件设置:附着在毛巾上的低功耗蓝牙信标标签(型号FSC-BP106A)、舵机闸门摆臂、搭载Modulino蜂鸣器和板载RGB LED灯的Arduino UNO Q开发板。
目标
在本项目结束后,您将获得一台可正常运行的资产追踪原型设备,它可适配各种工具、演示套件、库存物资、背包,或您需要监控的任何物品。
所需设备零件清单/工具
系统架构
本应用程序由三个相互协作的模块组成。理解这种拆分设计的原因能为您节省开发时间,这种设计反映了Arduino App Lab当前存在的实际限制,而并非单纯的设计选择。
1. 低功耗蓝牙扫描器服务(Linux Shell环境,App Lab外部)
Linux Shell环境 • App Lab外部
利用Bleak库编写的Python语言脚本持续扫描您的信标设备发出的低功耗蓝牙广播信号。该服务以systemd服务的形式运行在开发板的Debian Linux系统中(通过SSH完成一次性安装),并在5000端口以JSON格式对外输出最新的读取数据。
2. App Lab Python组件库
Linux微处理器 • App Lab内部
每2秒轮询一次扫描仪的 /latest 接口,将RSSI(接收信号强度指示值)映射为接近状态(NEAR(近距离)、MEDIUM(中距离)、FAR(远距离)或 OFF(关闭)),并调用 Bridge.call("set_beacon_state", state, rssi) – 仅在状态发生变化时调用。
重要提示:App Lab中的Python语言组件库运行在独立的网络命名空间中。App Lab内部的127.0.0.1并非开发板的本地回环地址,全程必须使用开发板的实际局域网IP地址进行通信。
3. 微控制器固件程序
Zephyr实时操作系统 • 实时控制
通过Bridge.provide_safe()注册状态处理函数,并对每一次状态变化做出即时响应:驱动RGB LED灯和舵机,以反映接近程度,并在区域切换时触发蜂鸣器警报。
构建该系统的原因
UNO Q开发板将跃龙Linux处理核心与实时微控制器集成于同一块开发板上,而本项目正是这种架构分离重要性的实际例证。由于Arduino App Lab尚未提供蓝牙模块,因此在Arduino App Lab应用程序内部“原本”无法直接实现低功耗蓝牙追踪。本项目通过Linux侧的一项轻量级后台服务绕过这一功能限制,再利用Arduino路由器桥接模块仅将有意义的状态变更传递给MCU,从而实现即时、零延迟的物理响应。
这对开发者而言才是真正的收获:利用UNO Q开发板,您现在就可以将沙盒尚未正式支持的Linux侧工具与稳定可靠的实时微控制器控制能力整合进同一个应用程序里使用。如果您此前一直想将沙盒尚未正式支持的Python语言程序库引入到Arduino项目中,这就是可以采用的模式。
您可以从代码仓库中获取完整的源代码、接线和设置步骤,一小时内就能让您的追踪器开始闪烁: GitHub链接。
项目导览
让我们直接开始实操。
步骤1:启动UNO Q开发板与Arduino App Lab
打开UNO Q开发板电源开关,并打开Arduino Lab for Modules软件。界面中会提供三种可选的操作模式:
步骤2:安装低功耗蓝牙扫描器服务
此步骤需在开发板的Debian Linux Shell中通过SSH运行,而非通过App Lab运行,因为该步骤需要对低功耗蓝牙(BLE)和D-Bus总线进行直接访问。
找到开发板的局域网IP地址
scp -r ble_scanner_service/ arduino@<board-ip>:~/
将文件复制到开发板上
nmcli -g IP4.ADDRESS device show eth0
# or for Wi-Fi:
nmcli -g IP4.ADDRESS device show wlan0
配置您的信标MAC地址
nano ~/ble_scanner_service/ble_scanner_service.py
TARGET_MAC = "78:9F:38:09:9B:4E"
ASSET_NAME = "Towel"
NEAR_RSSI = -60 # dBm threshold for near
MEDIUM_RSSI = -80 # dBm threshold for medium
STALE_AFTER_SECONDS = 8
安装并验证
cd ~/ble_scanner_service
sudo ./install.sh
# Verify:
curl http://127.0.0.1:5000/latest
信标在范围内时的预期响应:
{
"status": "ok",
"asset_name": "Towel",
"mac": "78:9F:38:09:9B:4E",
"rssi": -58,
"proximity": "near",
"zone": "inside",
"timestamp_utc": "2026-07-19T20:00:00Z"
}
步骤3:构建App Lab Python组件库
在Arduino App Lab中打开python/main.py文件。将API_URL参数设置为您在步骤2中获取的开发板局域网IP地址:
API_URL = "http://<board-lan-ip>:5000/latest"
核心设计模式是在send_to_mcu函数中实现变更检测:桥接模块仅在接近状态发生变化时才触发调用,而非每2秒轮询都执行一次。过期的扫描读数会被保留10秒后才发送OFF(关闭)状态,避免低功耗蓝牙广播短暂中断时出现状态快速闪烁的问题。
步骤4:添加微控制器固件程序
Arduino固件程序将set_beacon_state注册为可通过桥接模块调用的函数,并将每一种接近状态转换为对应的LED灯颜色、舵机位置和蜂鸣器动作。
注意:该固件程序包含了本项目未实际使用的传感器库(VL53L4CD、VL53L4ED、LSM6DSOX、LPS22HB、HS300x、LTR381RGB)的 #include 指令。这些指令必不可少,因为UNO Q开发板采用 Zephyr LLEXT 架构 – 固件程序需编译为可加载模块。若缺少这些包含指令,主机固件将不会导出Arduino_RouterBridge在链接阶段所需要的C++语言运行时符号,从而引发“未定义引用”错误。
步骤5:通过App Lab打包并部署
在Arduino Lab for Modules中将 ble-tracker-servo-leds文件夹作为App Lab项目打开,并点击“运行”。App Lab会将固件程序与Python组件作为一个统一的工作流进行编译并同步启动,同时低功耗蓝牙扫描器将在后台运行。
项目结构
ble-tracker-servo-leds/
app.yaml
sketch/
sketch.ino # MCU firmware
sketch.yaml # board + library config
python/
main.py # Python brick
assets/
index.html # browser dashboard
构建时间:首次构建属于Zephyr冷编译过程,耗时约10–20分钟。后续构建利用缓存机制加速,通常在1分钟内完成。如果出现“core.a: file truncated”错误提示,请删除缓存文件后重新尝试构建:
rm -rf ~/ArduinoApps/ble-tracker-servo-leds/.cache
预期运行效果
部署完成且信标设备在附近开机后,板载LED灯会变为绿色,舵机转动至90°,同时蜂鸣器发声一次。当您携带信标逐渐走远,LED灯会先变为蓝色(中距离),再变为红色(远距离),舵机同步逐步转动至45°和0°;当状态切换到“远距离”时,蜂鸣器会发声5次。如果信标超出检测范围的时长超过10秒,所有输出设备将全部关闭。
实际应用场景
这套架构可适配各类实用的追踪与监控场景,包括:
- 工具追踪:对车间或实验室内的设备进行状态监控
- 库存管控:实现防丢失与库存管理
- 背包追踪:对个人物品进行状态监测
- 演示套件管理:在活动现场对硬件资产进行追踪
- 智能办公空间:实现基于区域的权限管控与告警
- 签到系统:搭建资产的签到/签出工作流
资源
此处所发布内容中表达的观点均为原作者的个人观点,并不一定代表高通公司及其子公司(“高通”)的观点。本内容仅供参考,不构成高通或任何其他方的认可或声明。本网站还可能提供指向非高通网站及资源的链接或引用。对于本网站可能引用、可访问或链接的任何非高通网站或第三方资源,高通不作任何陈述、保证或其他承诺。
高通品牌产品均为高通技术公司和/或其子公司的产品。Arduino与UNO为Arduino股份有限公司的商标或注册商标。
项目作者
阿克沙亚·哈桑·纳格纳德拉,高通技术公司软件应用工程师
更多推荐


所有评论(0)