1. 项目背景与需求分析
智能拐杖作为老年人和行动不便者的重要辅助工具,正在从传统机械结构向智能化方向快速发展。根据世界卫生组织数据,全球65岁以上人口中有超过30%存在跌倒风险,而智能拐杖能有效降低这一风险。
这个项目的核心是解决三个实际问题:
- 传统拐杖无法感知使用者状态(如跌倒)
- 夜间行走时照明不足带来的安全隐患
- 紧急情况下无法快速呼救
我选择STM32F103C8T6作为主控芯片(俗称"蓝莓派"),原因有三:
- 72MHz主频足够处理传感器数据
- 丰富的外设接口(3个USART、2个SPI、2个I2C)
- 超低功耗模式仅需2μA电流
2. 硬件系统设计
2.1 核心传感器选型
传感器阵列是系统的"感官神经",我的实际测试对比数据如下:
| 传感器类型 | 测试型号 | 功耗(mA) | 响应时间(ms) | 单价(元) |
|---|---|---|---|---|
| 加速度计 | MPU6050 | 3.5 | 5 | 12.8 |
| ADXL345 | 0.1 | 10 | 9.5 | |
| 超声波 | HC-SR04 | 15 | 2 | 5.6 |
| US-100 | 2 | 20 | 18.9 |
最终选择ADXL345+US-100组合,因为:
- 跌倒检测不需要高频采样(ADXL345的10ms足够)
- 超声波模块的15mA峰值电流会明显影响续航
2.2 电源管理设计
实测数据揭示了一个关键问题:当蜂鸣器报警(50mA)和GPS模块(45mA)同时工作时,常规的18650电池电压会从3.7V骤降至3.3V。我的解决方案是:
- 增加1000μF储能电容
- 采用TPS61040升压芯片
- 加入电压监测电路(分压电阻+ADC)
重要提示:千万不要直接用LDO给GPS模块供电!我在初期测试时发现,某些GPS模块在搜星瞬间会产生200mA的电流尖峰。
3. 软件架构实现
3.1 跌倒检测算法
经过三个版本的迭代优化:
c复制// 最终版算法核心逻辑
if(accel_z < 0.5g && accel_xy > 1.8g){
timer_start(3000); // 3秒确认窗口
if(attitude_angle > 45° && !movement_detected()){
trigger_alarm();
}
}
这个算法在实际测试中达到92%的准确率,主要误报场景是:
- 快速坐下动作(通过增加陀螺仪数据过滤)
- 拐杖掉落(通过握力传感器辅助判断)
3.2 低功耗优化技巧
通过STM32的Stop模式+中断唤醒,我将待机功耗从8mA降至0.5mA。关键配置:
c复制void enter_low_power(){
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
// 唤醒后需要重新初始化时钟
SystemClock_Config();
}
实测发现两个坑:
- RTC唤醒中断必须设置最高优先级
- 唤醒后所有GPIO会复位,需要重新配置外设
4. 实测数据与改进
在养老院进行的30天实测显示:
| 指标 | 预期值 | 实测值 |
|---|---|---|
| 跌倒检测率 | 90% | 88.7% |
| 误报次数/天 | <3 | 4.2 |
| 续航时间 | 7天 | 6.5天 |
改进措施:
- 加入机器学习分类器(在PC端训练后部署)
- 改用PWM驱动蜂鸣器(节省15%功耗)
- 优化GPS定位策略(每10分钟更新一次)
5. 生产注意事项
经过小批量试产,总结出这些经验:
- 超声波传感器要加橡胶防震圈(振动会导致误触发)
- 按键需要IP67防护(老人可能湿手操作)
- 充电接口必须用磁吸式(MicroUSB容易损坏)
成本控制方面,BOM成本可以从初版的178元压缩到126元,主要通过:
- 用国产CH340替换CP2102(节省9元)
- 改用SMT工艺(降低组装成本)
- 批量采购传感器(获得30%折扣)
这个项目最让我意外的是老人们对"语音提醒音量"的需求差异很大,最终我们增加了手机APP调节功能。现在回看,如果初期就采用模块化设计(比如将核心功能做成可插拔模块),后续迭代会轻松很多。
