2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00
2026-02-05 13:22:38 +08:00

🚑 智能拐杖:跌倒检测与定位报警系统

📖 项目简介

本项目是一个基于 STM32F103RCT6 微控制器的便携式智能拐杖原型机,旨在为老年人或行动不便者的户外出行提供安全防护。系统核心功能是自动检测使用者跌倒状态,并在第一时间通过4G 短信精准位置信息发送至预设的紧急联系人,同时支持手动一键报警。项目采用 USB 虚拟串口VCP 进行调试,并通过 HAL 库 进行开发,兼顾了开发效率与系统稳定性。

核心功能

  • 智能姿态识别:基于 LIS3DHTR 三轴加速度计数据,融合阈值算法,实时区分正常行走、静坐、跌倒等多种状态。
  • 跌倒自动报警:检测到跌倒后,系统自动触发报警流程。
  • 手动紧急求助:配备实体紧急按钮,使用者可在任何感觉不适时主动求助。
  • 4G 定位与短信报警:集成E108-GN03DGPS/北斗双模)定位模块获取经纬度,通过Air780e 4G 模块将包含位置信息(经纬度及网络地图链接) 的报警短信发送给监护人。
  • 低功耗运行:通过 IP5306 电源管理芯片与软件休眠策略,结合 502030 软包电池,优化系统续航。

🛠️ 硬件系统架构

主要组件清单

模块 选用型号 关键说明
主控制器 STM32F103RCT6 核心主控,负责数据处理、逻辑控制与各模块调度。
姿态传感器 LIS3DHTR 采用 I2C/SPI 通信,提供三轴加速度数据,功耗较低。
定位模块 E108-GN03D (亿佰特) GPS/北斗双模定位模块,提供高精度位置信息。
通信模块 Air780e (M100P) (合宙/银尔达) 支持 4G Cat.1 通信,用于发送报警短信,兼容 AT 指令。
电源管理 IP5306 集成充电管理、升压输出、电量显示等功能,效率高。
电池 502030 软包锂电池 (250mAh) 紧凑型电池,满足便携式设备对体积和容量的要求。
调试接口 USB 虚拟串口(VCP) 通过 STM32 内置 USB FS 接口实现,方便调试与固件升级。
人机交互 紧急按钮、蜂鸣器 用于手动报警和本地声音提示。

系统框图

     [502030 250mAh电池]
            ↓
       [IP5306电源管理] → [电量指示LED]
            ↓ (稳定5V/3.3V输出)
   ┌─────────────────────────────────────┐
   │           STM32F103RCT6 主控        │ ← [紧急按钮(外部中断)]
   │      (USB FS for Virtual COM)       │
   └───┬─────────┬─────────┬─────────┬───┘
       │         │         │         │
       ↓         ↓         ↓         ↓
[LIS3DHTR] [E108-GN03D] [Air780e] [蜂鸣器]
加速度计    定位模块      4G模块    声音报警
(I2C/SPI)   (UART)       (UART)

💾 软件设计与实现

开发环境

  • IDE/编译器: STM32CubeIDE / Keil uVision
  • 固件库: STM32CubeMX HAL 库 (项目基于 HAL 库开发)
  • 编程语言: C 语言
  • 关键驱动: USB CDC (Communication Device Class) 用于实现虚拟串口。

程序目录结构(建议)

Smart_Cane_FW_F103RCT6/
├── Core/
│   ├── Inc/
│   ├── Src/
│   ├── main.c
│   └── stm32f1xx_it.c
├── Drivers/
│   ├── STM32F1xx_HAL_Driver/
│   └── CMSIS/
├── USB_DEVICE/
│   ├── App/                 # USB VCP应用层代码
│   ├── Target/
│   └── Class/CDC/
├── Modules/
│   ├── lis3dhtr/           # LIS3DHTR加速度计驱动
│   ├── gnss_parser/        # E108-GN03D NMEA协议解析
│   ├── air780e_at/         # Air780e 4G模块AT指令控制
│   ├── ip5306_pwr/         # IP5306电源状态读取可选
│   └── button_buzzer/      # 按键与蜂鸣器驱动
├── Algorithm/
│   └── fall_detection.c    # 核心跌倒检测算法
├── Middlewares/
│   └── ST/STM32_USB_Device_Library/ # USB库文件
└── README.md

核心算法流程

  1. 数据采集:通过 I2C/SPI 定时(如 20Hz读取 LIS3DHTR 的加速度数据。
  2. 预处理与特征计算
    • 对原始数据进行低通滤波,消除高频噪声。
    • 计算合成加速度向量幅值(SVM)SVM = sqrt(ax^2 + ay^2 + az^2)
  3. 跌倒状态判断(双阈值法)
    • 冲击检测:若 SVM 瞬间超过高阈值(如 2.8g,判定为发生剧烈冲击,进入“疑似跌倒”状态。
    • 姿态判断:在冲击后的时间窗内(如 1 秒),若计算出的静态倾斜角持续超过角度阈值(如 60°,判定身体处于非正常姿态。
    • 综合判决:同时满足以上两个条件,则最终判定为跌倒发生
  4. 报警触发流程
    • 系统由低功耗模式被传感器中断紧急按钮中断唤醒。
    • 若判定跌倒或按键按下,立即启动蜂鸣器进行本地提示(可给用户取消误报的缓冲时间)。
    • 开启定位模块,解析有效的NMEA语句获取经纬度。
    • 开启 4G 模块,通过 AT+CMGS 指令将包含位置和地图链接的报警短信发送至预设号码。
    • 任务完成后,所有外设断电,主控进入停机(STOP)模式等待下次唤醒。

🔌 硬件连接关键引脚(基于 STM32F103RCT6

STM32 引脚 连接模块/功能 通信接口/说明
PA9, PA10 Air780e (4G 模块) USART1_TX, USART1_RX (AT 指令)
PA2, PA3 E108-GN03D (定位模块) USART2_TX, USART2_RX (NMEA 数据)
PB6, PB7 LIS3DHTR (加速度计) I2C1_SCL, I2C1_SDA
PC13 紧急按钮 外部中断 (下降沿触发)
PB8 蜂鸣器 GPIO 输出 (推挽输出)
PA11, PA12 USB FS USB_DM, USB_DP (用于虚拟串口)
PB12 Air780e_PWRKEY GPIO 输出 (控制模块开关机)
PB13 GNSS 模块使能 GPIO 输出 (控制定位模块电源)

📱 报警短信格式示例

【智能拐杖紧急报警】
状态:检测到跌倒!
位置E 121.472341°, N 31.236587°
时间2024-05-27 10:30:45
地图链接https://www.google.com/maps?q=31.236587,121.472341
请尽快确认老人安全!

(注:地图链接可根据接收方习惯更换为百度地图等。)

🔋 低功耗与电源管理策略

  1. 硬件管理IP5306
    • IP5306 提供完整的锂电池充电、升压输出(至 5V、负载检测和 4 颗 LED 电量显示功能。
    • 配置 IP5306 在轻载时自动进入待机,降低静态功耗。
  2. 软件策略
    • 分时供电:通过 GPIO 控制 MOSFET仅在使用时为定位模块4G 模块供电。
    • 主控休眠:在空闲时,调用HAL_PWR_EnterSTOPMode()使 STM32 进入停机模式,此时功耗极低。可由 RTC 闹钟加速度计中断紧急按钮外部中断 唤醒。
    • 外设时钟管理:不使用时,通过__HAL_RCC_USARTx_CLK_DISABLE()等宏关闭外设时钟。

📁 仓库文件清单

  • Hardware/
    • Schematic/ - 原理图文件 (.pdf, .sch)
    • PCB/ - PCB 布局文件 (.pcb 或 Gerber 文件)
    • BOM/ - 元件清单 (.xlsx.csv)
  • Firmware/ - 完整的 STM32CubeIDE/Keil 工程源代码 (结构如上所示)
  • Documents/
    • Design_Report.pdf - 详细设计报告
    • AT_Command_Set.md - 针对 Air780e 和 E108 模块整理的 AT 指令集
    • User_Manual.pdf - 用户使用手册
  • Tools/ - 可能用到的测试脚本或工具
  • README.md - 本文件

🚀 快速开始指南

  1. 硬件准备与焊接
    • 根据原理图焊接所有元件,注意IP5306的反馈电阻配置(决定输出电压)。
    • Air780e 模块插入板载 SIM 卡座,并安装天线。
  2. 固件编译与烧录
    • 用 STM32CubeIDE 打开 Firmware 目录下的工程。
    • 使用 ST-LinkUSB DFU 将编译好的固件烧录至 STM32。
  3. 配置与测试
    • 通过 USB 虚拟串口 连接电脑,使用串口助手查看系统日志和调试信息。
    • air780e_at.c 文件中修改DEFAULT_PHONE_NUMBER为你的紧急联系电话。
    • 为电池充电,然后在户外开阔地测试定位和短信发送功能。
  4. 阈值校准
    • 在实际使用场景下(如不同地面),通过 USB 串口输出传感器数据,微调fall_detection.c中的加速度阈值角度阈值,以平衡灵敏度与误报率。

⚠️ 重要注意事项

  • 首次定位时间E108-GN03D模块冷启动时,需在户外空旷处等待1-3 分钟以获取卫星星历。
  • SIM 卡与网络:确保 Air780e 模块中插入的 SIM 卡已开通4G 数据短信功能,并已关闭 PIN 码验证。
  • 天线安装:务必安装好4G 天线GNSS 天线,并确保其位置不被金属严重遮挡,否则将严重影响信号质量。
  • 电池安全502030 软包电池需做好物理防护,避免刺穿或过度弯折。充电电路应严格按照 IP5306 datasheet 设计。
  • 误报处理:算法中加入了一个短暂的本地蜂鸣提示期,若为误报(如用力放下拐杖),用户可在此期间按下紧急按钮取消短信发送。

📚 参考资料

  1. M100P-C 产品资料

  2. DTU/RTU 产品技术售后处理

  3. GPS 模块文档

📄 许可证

本项目采用 MIT License

🤝 贡献与联系

欢迎提交 Issue 和 Pull Request 来改进代码或文档。 如有任何技术问题或建议,可通过仓库的 Issues 页面发起讨论。


让精准的感知与及时的通信,成为长者出行的安心守护。

FreeRTOS任务划分建议 任务名称 优先级 堆栈大小 功能描述 Sensor_Task 3 512字节 LIS3DHTR数据采集与跌倒算法 GPS_Task 2 1024字节 定位数据获取与解析 Comm_Task 4 2048字节 GSM短信发送阻塞操作多 Key_Task 5最高 256字节 手动报警按键检测 Power_Task 1 512字节 电池管理与低功耗控制 Monitor_Task 2 512字节 系统状态监控与LED指示

Description
智能拐杖:跌倒检测与定位报警系统
Readme 70 MiB
Languages
C 97.9%
Assembly 1.9%
C++ 0.2%