智能阿尔茨海默症陪伴系统:基于 Arduino 的可穿戴报警装置
组件与物料
| Arduino MKR1000 | ×1 |
| Infineon Sensor Hub Nano 评估板 | ×1 |
| Nokia 5110 LCD | ×1 |
| HC-05 蓝牙模块 | ×1 |
| 面包板 | ×1 |
| 跳线 | 若干 |
| 按钮开关 12mm | ×1 |
| 蜂鸣器 | ×1 |
| FT1235 5W 发射模块 | ×1 |
| FT1236 5W 接收模块 | ×1 |
必需工具
- 电烙铁
应用与在线服务
- Arduino IDE
- Blynk
- IFTTT Maker 服务
项目简介
阿尔茨海默症给患者及家属带来巨大挑战。作为 Maker,我决定制作一款可穿戴设备,同时助力患者与照护者,核心功能:
- 日常任务提醒(服药、锻炼等)
- 室内定位监测
- 紧急情况报警通知照护者
- 显示时间(本质是手表)
- 便携、老人友好、低成本
Infineon Sensor Hub Nano 体积微小、支持 BLE,其 DPS310 气压计可精准测气压/海拔/温度,用于跌倒检测和楼层级定位。核心最小系统:Sensor Hub Nano + MKR1000 + HC-05 + Nokia 5110。
工作原理
Sensor Hub Nano 通过蓝牙发送 DPS310 数据。为摆脱手机中转,MKR1000 经 HC-05 直连 Sensor Hub Nano。HC-05 配置为主机模式,绑定 Sensor Hub Nano MAC 地址,开机自动配对。AT 指令配置详见后文。
向 Sensor Hub Nano 发送 $start_sensor id=1 启动数据流,返回格式:
$1,t,36.9299,1154206 // 温度
$1,p,997.6813,1154206 // 气压
$1,a,130.4305,1154206 // 海拔
数据解析采用串口读取直到特定字符再 parseFloat() 的高效方法。MKR1000 通过 WiFi 将数据推送至 Blynk/Cayenne 等 IoT 平台(最终选用 Blynk)。
蓝牙模块配置
- 用手机配对 Sensor Hub Nano,用 Infineon App 读取 MAC 地址(显示为 IFX_NANOHUB)。
- 上传 AT 指令测试代码,接线 HC-05 到 MKR1000 硬件串口(Serial1)。
- 让 HC-05 进入 AT 模式(按键上电法)。
- 串口监视器 9600 波特率、NL+CR,发送指令:
AT+RMAAD // 删除所有配对
AT+CMODE=0 // 指定 MAC 连接
AT+ROLE=1 // 主机模式
AT+BIND=xxxx,xx,xxxxxx // 绑定 Sensor Hub Nano MAC
AT+UART=115200,0,0 // 波特率 115200,2 停止位,无校验
断电重启退出 AT 模式,开启 Sensor Hub Nano 观察 LED 闪烁模式变化确认连接成功。
裸机测试
- 配置 Blynk App(扫描二维码自动生成控件)。
- 安装库:
Blynk、U8g2lib(驱动显示屏)。 - 修改代码填入 Blynk Auth Token、WiFi 凭据,烧录 MKR1000。
- 按原理图接线,启动 Blynk 项目,上电 MKR1000,屏幕显示 “Waiting for Sensor Hub Nano”,开启 Sensor Hub Nano 后显示连接成功、气压/温度/海拔数据,随后同步网络时间显示日期时间。
个性化功能开发
裸机仅获取数据,需按患者需求定制:
跌倒检测
设定跌倒阈值(海拔差值)± 清除值。实测跌倒值 0.7m,清除值 ±0.2m。因跌倒姿态多样,建议融合加速度计提高准确性(未来工作)。
楼层/房间级定位
海拔差值判断楼层;房间级需融合运动传感器减少误触发。Blynk LED 控件指示位置。
温度报警
DPS310 温度超阈值(如 45℃)报警火灾风险。注意传感器测的是环境温度非体温。
蜂鸣器与按钮
蜂鸣器提醒服药/锻炼;按钮作为紧急求救键,按下触发 Blynk 邮件/IFTTT 短信/电话通知照护者。
显示屏扩展
Nokia 5110 低分辨率,推荐 OLED 高分屏,U8g2 库支持多型号,仅需修改构造函数和字体/坐标。可显示时间(Blynk RTC 控件同步)、传感器数据、服药/锻炼提醒画面。
Blynk Eventor 定时提醒
Eventor 控件设定时间触发虚拟引脚,代码中 BLYNK_WRITE(vEVENTOR_PIN) 响应显示提醒并蜂鸣。
Sensor Hub Nano 模式切换
低功耗/标准/高精度三模式,可通过 Blynk 按钮切换。
Blynk + IFTTT 扩展
Blynk Webhook 触发 IFTTT,实现短信、电话、推特、Facebook 等多渠道通知。配置示例见文中图示。
收尾工作
供电与充电
MKR1000 支持 LiPo 电池直充,或无线充电(Futara 接收/发射模块)。接收端接 Micro-USB 公头供电 MKR1000。
外壳设计
预期外观渲染图(STL 非按比例,待 3D 打印/激光切割)。
未来改进
- 制作正式外壳
- 改用蓝牙 4.0 模块或直接用 DPS310 裸片(省去 Sensor Hub Nano 和 HC-05,降成本)
- 融合加速度计+运动传感器提升跌倒/定位准确性
- 加入心率传感器
- 升级 OLED 高分屏支持图形界面
- 利用 MKR1000 深度睡眠延长续航
感谢阅读,欢迎交流意见!
代码
AT 指令配置代码
// 串口透传 HC-05 AT 指令
char c=' ';
void setup(){ Serial.begin(9600); Serial1.begin(38400); }
void loop(){
if(Serial1.available()){ c=Serial1.read(); Serial.write(c); }
if(Serial.available()){ c=Serial.read(); Serial.write(c); Serial1.write(c); }
}
主程序
#include <BlynkSimpleMKR1000.h> #include <WidgetRTC.h> #include <WiFi101.h> #include <U8g2lib.h> #include <SPI.h>
char auth[]=""; char ssid[]=""; char pass[]="";
// 指令宏定义、阈值、虚拟引脚、变量声明...
U8G2_PCD8544_84X48_F_4W_SW_SPI u8g2(U8G2_R0,7,8,3,5,4);
BlynkTimer timer; WidgetRTC rtc;
void setup(){
Serial.begin(115200); Serial1.begin(115200);
timer.setInterval(1000L, sendSensorValues);
timer.setInterval(3000L, showTimeAndDate);
pinMode(9,INPUT); pinMode(2,OUTPUT); digitalWrite(2,LOW);
u8g2.begin(); showStartMessage(); delay(2000);
while(!BTconnected){ if(digitalRead(9)==HIGH) BTconnected=true; else showWaitingFor(); }
initSensorHub(); Blynk.begin(auth,ssid,pass); rtc.begin(); setBlynkWidgets(); showTimeAndDate(); sendCommand(START);
}
void loop(){ Blynk.run(); timer.run(); getSensorValues(); checkIfFalling(); }
// 其余函数:sendCommand、initSensorHub、getSensorValues、sendSensorValues、
// checkIfFalling、显示函数、BLYNK_WRITE(vEVENTOR_PIN)、setBlynkWidgets、BLYNK_CONNECTED...
自定义零件与外壳
外壳设计意图图,非按比例。
原理图
- HC-05 AT 模式配置接线图
- 裸机系统 Fritzing 图
- HC-05 AT 指令参考文档
制造工艺
- 基于 Edge Impulse 的 TinyML 语言检测器:Arduino Nano 33 BLE Sense 实战
- Arduino Nano 与 MPU-6050 构建实时陀螺仪游戏
- Arduino 数字骰子:LCD 显示随机点数的电子骰子
- 用 Arduino Nano 自制 37 灯珠轮盘赌游戏机
- ATtiny85 迷你街机:贪吃蛇 — 打造掌上 OLED 游戏机
- 便携测距仪 DIY 套件:Arduino Nano + HC-SR04 + 18650 电池 + 3D 打印外壳
- 声控氛围灯:Arduino Nano + 麦克风模块 + WS2812B 灯珠
- Arduino Nano + OpenCV 人脸追踪自主机器人小车
- 个人健康助手(PHA):基于AWS IoT的社区心脏骤停急救智能穿戴方案
- 铜电镀智能系统:基于 Arduino UNO 的可控电解装置
- Arduino Nano 驱动 NeoPixel 矩阵:自制霓虹乒乓游戏
- 使用 Arduino 移位寄存器创建绚丽灯光序列