基于 Arduino MKR GSM 1400 和 Hologram IoT 的智能腕带
组件与物料
| Arduino MKR GSM 1400 | ×1 |
| 蜂窝/LTE 天线 | ×1 |
| Hologram 全球物联网 SIM 卡 | ×1 |
| DFRobot 心率传感器 | ×1 |
| 红外测温传感器 | ×1 |
| 3.7V 锂聚合物电池 | ×1 |
所需工具与设备
| 电烙铁(通用) |
应用与在线服务
| Arduino IDE |
| Arduino Web Editor |
| Microsoft Azure |
| Microsoft Power BI |
| Hologram Data Router |
项目简介
项目概览
我花了大量时间思考如何在疫情脆弱时期帮助世界,寻找能带来改变、助我们在动荡中生存的方案。关注点落在轻症患者身上——这类患者虽不幸感染,但症状较轻,往往被忽视。然而他们的健康状况极不稳定,可能在几小时内恶化,必须详细监测。
各国应对策略不同:有的集中收治(导致医院挤满本可离院监测的患者),有的要求居家隔离。但居家隔离存在隐患——患者病情可能迅速恶化,且缺乏监测手段。

现有重型监测设备昂贵、笨重,无法大规模部署。且部分患者可能“逃离”隔离,危及自身与他人,需监管确保其留在家中。

SmartWristband 是一款腕戴设备,能监测患者生命体征与地理位置,守护其在家抗疫安全。设备搭载 Arduino MKR GSM 1400,配备 红外测温与心率传感器,采集关键健康数据。体温升高、心率异常是病情进展的信号,患者可能无法及时察觉,SmartWristband 旨在实时安全地将数据流式传输至医院。
设备还会追踪用户位置,确保患者始终居家。所有数据汇聚至可扩展数据库,支持数千设备国际化部署。

医院可通过仪表盘一览所有患者健康状况,并查看每位患者的详细报告。机器学习算法预测患者近期体温和心率趋势,帮助医生判断何时需住院治疗。
患者也有移动端仪表盘,可查看心率、体温及电池续航提醒。

设备佩戴舒适,可日夜佩戴无感。若用户取下设备,系统会检测并报警通知医院。SmartWristband 是低成本、可扩展、开源的解决方案,用于监测居家轻症患者病情发展,通过机器学习和简易仪表盘在病情恶化时预警医护人员。
项目总结
数据采集
设备每 5 分钟采集一次数据,兼顾准实时性与低功耗。采集两类数据:生命体征(心率、体温)和地理位置。设备不在本地处理数据,仅通过 GSM 透传至 Azure 云端处理。
为何采集这些数据?

体温和心率趋势可指示病情恶化。研究表明心率不齐、高热提示病毒存在;若生命体征随时间恶化(如体温逐渐升高),预示病情加重。患者可能晚些才察觉,设备能早期捕捉信号。
地理位置数据用于确保患者足不出户遵守隔离。Azure 判定用户是否在家并在医生仪表盘上报告。
设备外观

原型设计以舒适为先,可戴左/右手腕。心率和红外测温传感器伸出底部贴合皮肤,提供精准测量且不适感。为进一步提高测温精度,传感器可置于腋下垫片处。设备通过心率传感器原始数据判断是否佩戴:接触皮肤时输出特定波形,缺失该波形即判定为未佩戴。
电池续航

实测单次充电续航 8 天。若监测两周,仅需充电一次。充电期间可继续佩戴。若将采集间隔改为 10 分钟,续航可翻倍(休眠功耗极低)。患者端和医生端仪表盘均显示剩余电量及续航小时数。
开发成本

单设备一次性成本约 €70(含外壳)。后端经常性成本:Hologram 数据传输 €5/两周/设备,后端流式处理与数据库 €30/两周(随设备数扩展)。100 台设备总成本约 €7,035,且设备可复用。批量采购和定制电路可大幅降本。
医生仪表盘
医院需实时监测居家患者健康并在异常时获警报。仪表盘展示所有患者生命体征概览及详细报告,医生可快速定位问题患者并深入查看。
当患者不在家、未佩戴设备、体温或心率异常时,医生将收到邮件通知和仪表盘警报。


报告分三部分:患者(生命体征详情)、位置(地理位置及是否在家)、设备(电量、ID)。机器学习预测近期健康趋势,辅助医生判断病情走向。
患者仪表盘
患者也应了解自身状况。提供桌面端和移动端体验,随时获取数据。

预测数据和地理位置不在患者端显示(避免过度焦虑)。

量产与扩展性
设备成本低、易构建,适合量产和全球部署(只要有蜂窝覆盖)。
100% 开源
所有资产、库均为开源,确保项目无官僚阻碍快速发布。完整代码托管于 GitHub。
数据隐私
设备采集地理位置等敏感数据,但不在本地处理,依赖云端安全处理,防止数据劫持。与 Azure 数据库的连接加密,保障数据安全。
后续展望
- 无需改动硬件即可采集血氧饱和度(SpO2),该指标反映病毒对肺部损害程度。
- 可将心率传感器贴片置于胸部等部位获取更精准体温。
- 未来迭代将开发 3D 打印外壳,大幅缩小体积、提升佩戴舒适度。
应用前端架构

设备每 5 分钟执行:采集数据 → 判断是否佩戴 → 打包经 GSM 发送至后端。设备还会同步时间:首次唤醒或关机后重启时,从指定服务器获取时间同步板载 RTC。
应用后端架构

设备数据经 Azure IoT Hub 安全接收 → 流分析作业 提取数据推入 Cosmos DB → 患者/医生 Power BI 报表 定时查询数据库、运行机器学习算法并展示。医生仪表盘汇总所有患者健康摘要。
为何选择 Azure? 易用、导航友好、提供优秀免费开发套餐,UI 佳且与微软生态集成良好。

市场调研
台湾利用手机定位追踪隔离患者;其他国家也有监测方案,但无产品能在小巧舒适的封装中同时采集生命体征和位置。
目标人群:经医院确诊为轻症或无症状、被要求居家隔离的人群。
SmartWristband 优势
- 确保居家隔离患者足不出户
- 无需住院即可监测生命体征
- 释放医院床位给重症患者
- 7×24 小时预警医生关注异常患者
- 为患者提供舒适监测方案
- 提供患者健康趋势预测
- 通过移动/桌面端告知患者自身健康
- 高性价比且可扩展
项目实施指南
步骤 1:准备所有组件与服务
硬件: Arduino MKR GSM 1400、GSM 天线(随板附带)、DFRobot 心率传感器、红外测温传感器、3.7V 锂聚合物电池(我用 800mAh)、Hologram SIM 卡。

云服务准备: Arduino IDE/Web Editor、创建 Hologram 账号并激活 SIM、创建 Azure 账号、创建 Power BI 账号。
步骤 2:配置 MKR GSM 连接 Azure IoT
需在设备上生成并存储证书以验证后端连接。参考 Hackster 上 MKR NB 的教程(从头按步骤操作,生成证书后停止),保存 SHA1 指纹字符串备用。
步骤 3:硬件接线
按原理图接线。注意:测温传感器接 A4,心率传感器接 A5,别忘了装 SIM 卡!

步骤 4:创建 IoT 中心
在 Azure 门户创建资源 → 搜索 "IoT Hub" → 创建。示例使用免费层,生产部署建议升级到 S1/S2/S3。创建资源组并命名 IoT 中心。部署完成后打开资源。





在 "IoT 设备" 中添加新设备,将主/辅助指纹替换为步骤 2 获得的 SHA1 值。

步骤 5:创建 Cosmos DB 数据库
创建资源 → 搜索 "Cosmos DB" → 选择与 IoT Hub 同资源组、同区域(避免跨区费用)。部署完成即可。



步骤 6:创建流分析作业
连接 IoT Hub 与 Cosmos DB,实现数据实时入库。创建 "Stream Analytics Job",流单元设为 1(大规模部署可增加)。配置输入:选择 IoT Hub;配置输出:选择 Cosmos DB,数据库名 "SmartWristband",容器名 "data"。在查询编辑器粘贴以下代码将所有字段映射为 JSON 存储:
SELECT
time as time,
id as name,
geoLat as latitude,
geoLng as longitude,
isWorn as isWorn,
heartrate as heartrate,
temperature as temperature,
battery as battery
INTO
[universum-smartwristband-db]
FROM
[universum-smartwristband-hub]

保存查询,返回概览页启动流作业。
步骤 7:所需库
所有库均为开源,请预先下载安装:
- MKRGSM Library - GitHub
- RTCZero Library - GitHub
- Arduino Bear SSL Library - GitHub
- ArduinoECCX08 Library - GitHub
- Arduino MQTT Client Library - GitHub
- Arduino Low Power Library - GitHub
- DFRobot Heartrate Library - GitHub
步骤 8:配置变量
打开 GitHub 仓库代码,编辑 secrets.h:
- 从 IoT Hub 复制 主机名 填入
SECRET_BROKER - 复制设备名称填入
SECRET_DEVICEID - 设置
DEVICE_ID区分不同设备(可用患者姓名) MODE选项:DEVELOP_MODE(开发模式,串口详细日志,10 秒采集一次);RELEASE_MODE(发布模式,脱机运行,5 分钟采集一次)。先保持开发模式。



步骤 9:烧录开发版本测试
USB 连接设备上传代码,打开串口监视器观察日志。首次配置较慢,确认数据正常发送至 IoT Hub。随后检查 IoT Hub 指标确认数据接收。如需帮助可通过 Hackster 联系我。
步骤 10:发布正式版本
将 secrets.h 中 MODE 改为 RELEASE_MODE,重新上传代码,连接锂电池并拔掉 USB。板载 LED 每 10 分钟闪烁一次表示运行周期。检查 IoT Hub 和 Cosmos DB 确认数据流通。确保后端已有数据再继续(仪表盘制作需要样本数据)。
步骤 11:制作仪表盘
仪表盘制作繁琐耗时,此处讲解 Power BI 数据处理,不涉及界面设计细节(见文末教程链接)。
医生仪表盘
安装 Power BI Desktop(Mac 用户可用在线版)。获取数据 → Azure → Cosmos DB,粘贴 Cosmos DB URI,输入主键,勾选 data 表加载。




点击 "转换数据" 展开字段,调整数据类型,关闭并应用。




从 GitHub 仓库 Stream Analytics Script 文件夹复制 DAX 度量值代码(需安装 VS Code 扩展 "DAX for Power BI")。必须针对每位患者编辑的文件:Address.dax、Age.dax、Gender.dax。在 Power BI 中依次创建新度量值,粘贴代码,设置格式和数据类别(如纬度字段设为 Latitude)。




参考教程设计仪表盘:Basic Power BI、Complete Guide to Power BI、Free Udemy Course on Power BI、Forecasting data (ML) in Power BI(用于体温、心率、电量预测)。

发布至 Web(我的工作区),数据随用户打开自动刷新。在浏览器打开报表,将患者状态卡片固定到新仪表盘:姓名、状态、体温、心率。



在体温卡片设置警报(阈值 37.5℃),心率卡片设置警报(阈值 100 bpm)。

患者仪表盘
复制医生仪表盘,移除体温/心率预测(避免焦虑)和位置板块(患者知晓自身位置)。制作移动端布局:视图 → 移动布局 → 拖拽现有磁贴至手机画布。



再次发布,通过 Power BI App 分享给患者,提供移动端和网页端访问。
步骤 12:制作外壳

理想情况是 3D 打印,因无打印机我用塑料板手工拼装。已有 3D 设计文件。当前原型较大,量产版会显著缩小(为复用元件未做 PCB 焊接)。


反思
我非常享受这个项目的制作过程。3 月头脑风暴抗疫点子,比赛启动后投入最有潜力的 SmartWristband。很荣幸参与全球协作,提供低成本可扩展方案助力抗疫。灵感源自台湾的智能追踪系统,我希望在确保隔离合规的基础上,增加生命体征监测进一步保障患者安全。
新冠疫情是棘手挑战,需要全球合作与奉献。我相信该方案可全球落地,监测轻症患者健康,让他们安心居家,腾出医院资源救治重症。
最享受设计仪表盘的过程(我是视觉控)。曾因证书过期时间设成 2 分钟导致 MKR GSM 连不上 Azure IoT,排查许久才发现。希望您喜欢这篇分享,感谢阅读,愿您平安健康。


代码
GitHub 仓库
https://github.com/Andrei-Florian/SmartWristband
自定义零件与外壳
(3D 设计文件见上文)
原理图
schematics_HcrW1SiwfW.fzz

制造工艺
- 集成电路 (IC):微观世界里的算力引擎与制造极限
- 树莓派 + MCP9808 + InfluxDB + Grafana:家庭温度监测系统
- 低成本情绪传感器与 EEG:实时情绪检测硬件方案
- 多位置温度传感器系统,助力智能家居集成
- UnifiedWater v1 — 基于 Arduino MKR GSM 1400 的完整水质监测套件
- MotionSense:基于 Arduino 与 ESP8266 的智能入侵检测系统
- MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
- Arduino MKR IoT 套件打造智能密码盒:Blynk 远程设密、舵机开锁
- Arduino Nano 多传感器气象站:BMP280 + DHT11 + GUVA-S12SD + DS3231 + OLED
- 基于 Arduino 与 DSM501A 传感器的空气质量监测仪
- MOSMusic 套件:MOSFET + Arduino 打造音乐同步灯光控制系统
- 氧传感器 (O2) 详解:作用、位置与故障征兆