从原理图到代码,手把手教你做一块能救命的开发板(附完整硬件清单))
独居老人摔倒后无人发现,是养老场景里最揪心的事。我国每年有超过 4000 万老年人至少跌倒一次,跌倒也是 65 岁以上老人伤害致死的首位原因。如果有一块巴掌大的开发板,能在老人摔倒后自动语音呼救、并把 GPS 位置推送到子女手机,救援的黄金时间就抢回来了。
这篇文章把我做这套「老人跌倒监测报警系统」的完整过程写出来:硬件怎么选、成本多少钱、电路怎么连、核心代码怎么写、我踩过哪些坑,全部摊开讲。做完这套系统,你对 STM32 + 多传感器 + 物联网上云的整套链路会有一次完整的实战。
一、系统做了什么
一句话:老人摔倒 → 设备本地语音呼救 → 同时把报警和定位推送到监护人的手机。
具体功能拆解:
| 功能 | 实现方式 | 对应硬件 |
|---|---|---|
| 跌倒检测 | 三轴加速度变化检测 | ADXL345(IIC) |
| 心率监测 | 光电脉搏采集 | PulseSensor(ADC) |
| 定位 | 卫星定位上报 | ATGM336H(UART) |
| 本地呼救 | 语音播报"有人跌倒,请求帮助" | JR6001(UART) |
| 远程报警 | MQTT 上报云端 → 手机端 | ESP8266-01S(UART) |
| 现场显示 | 心率/状态实时显示 | 0.96 寸 OLED12864(IIC) |
| 主控 | --- | STM32F103C8T6 |
二、硬件选型与成本清单
做硬件项目,先算账。整套系统物料成本约 60~80 元(不含 PCB 打样与外壳):
| 器件 | 型号 | 数量 | 参考单价 | 说明 |
|---|---|---|---|---|
| 主控 | STM32F103C8T6 | 1 | ~10 元 | 72MHz Cortex-M3,资源足够 |
| 加速度传感器 | ADXL345 | 1 | ~8 元 | 三轴,IIC 输出,±16g 量程 |
| 心率传感器 | PulseSensor | 1 | ~15 元 | 模拟输出,接 ADC |
| GPS 模块 | ATGM336H | 1 | ~20 元 | 串口输出 NMEA,配无源天线 |
| WiFi 模块 | ESP8266-01S | 1 | ~10 元 | MQTT 上云 |
| 语音模块 | JR6001 | 1 | ~12 元 | 串口指令触发播报 |
| 显示屏 | OLED12864 0.96寸 | 1 | ~10 元 | IIC |
| 其他 | 蜂鸣器/按键/电源等 | 若干 | ~10 元 | --- |
选型理由讲两句(这是和"只贴清单"的文章拉开差距的地方):
- 为什么用 ADXL345 而不是 MPU6050?跌倒检测只需要加速度特征(失重→冲击→静止),ADXL345 便宜、IIC 两根线、自带活动/自由落体中断,省掉 MPU6050 的姿态解算开销。如果你的方案要做"倒地后姿态判断"再考虑带陀螺仪的方案。
- 为什么 GPS 用 ATGM336H?国产、便宜、串口直出 NMEA-0183 协议,解析简单。
- 语音模块选 JR6001 而不是自己做 DAC 播放:一条串口指令
UART1Write("B0")触发预置语音,开发量最小。
三、电路设计要点
原理图用 Altium Designer 绘制。连线关系归纳成一张表,接线和排查时照着对:
| 模块 | 接口 | 连接到 STM32 引脚 | 备注 |
|---|---|---|---|
| ADXL345 | IIC | PB6/PB7(SCL/SDA) | 总线需 4.7kΩ 上拉 |
| OLED | IIC | 与 ADXL345 共总线 | 地址不冲突(0x3C / 0x53) |
| ATGM336H | UART | USART2 | 9600bps,NMEA 语句 |
| ESP8266-01S | UART | USART3 | 注意 3.3V 电平一致 |
| JR6001 | UART | USART1 | 指令触发播报 |
| PulseSensor | ADC | PA1(ADC1通道) | 模拟信号 |
布线三个坑(都是实际踩过的):
- ESP8266-01S 必须独立 3.3V 供电。它在 WiFi 发射瞬间峰值电流能到 300mA+,直接从 STM32 最小系统的 3.3V 引脚取电,会出现"模块一联网单片机就复位"的灵异现象,加一颗 470uF 电容或独立 LDO。
- IIC 上拉电阻不能省。ADXL345 和 OLED 挂同一条总线时,上拉电阻只保留一组,两套板子各自带上拉会导致电平异常。
- GPS 天线要朝天、避开屏蔽。放在 PCB 电池下方或金属外壳里,定位时间从 30 秒变成 10 分钟都搜不到星。
四、核心代码实现
4.1 主程序框架
注意 #include 一律用英文引号,直接复制编译通过:
#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "key.h"
#include "OLED_I2C.h"
#include "Control_Report_To_Police.h"
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 2位抢占 + 2位响应
delay_init();
Usart1_Init(9600); /* JR6001 语音模块 */
TIM4_Init(300, 7200); /* 系统节拍 */
switch_Init();
Beep_init();
OLED_Init();
OLED_CLS();
Adc_Init(); /* PulseSensor 心率采集 */
KEY_Init();
TIM2_Int_Init(1999, 71);
while (ADXL345_IIC_GPIO_Init()) /* ADXL345 初始化,失败重试 */
{
}
ALi_ESP8266_GPIO_Init(); /* ESP8266 上电使能 */
MQTT_Buff_Init(); /* MQTT 报文缓冲 */
AliIoT_Parameter_Init(); /* 云平台三元组参数 */
while (1)
{
OLED_Display_Cotrol(); /* 界面刷新 + 业务调度 */
}
}
4.2 跌倒判断:从"加速度异常"到"确认报警"
跌倒的加速度特征是三段:自由落体(合加速度骤降)→ 着地冲击(骤升)→ 长时间静止(合加速度回到 1g 附近但姿态异常)。只判"冲击"会把手拍桌子、坐下都误报,所以要做三段联合判定:
/* 跌倒状态机:FALL_FREE(失重) -> FALL_IMPACT(冲击) -> FALL_STILL(静止确认) */
typedef enum { NORMAL = 0, FALL_FREE, FALL_IMPACT, FALL_STILL } FallState;
/*
* 判定阈值参考(需按实际佩戴方式标定):
* 合加速度 < 0.4g 持续 > 100ms -> 进入失重态
* 合加速度 > 2.5g 500ms 内出现 -> 进入冲击态
* 合加速度 0.8~1.2g 静止 > 30s -> 确认跌倒
*/
void Fall_Detect_Process(void)
{
float g = ADXL345_GetTotalG(); /* x/y/z 合加速度 */
switch (fall_state)
{
case NORMAL:
if (g < 0.4f) fall_state = FALL_FREE;
break;
case FALL_FREE:
if (g > 2.5f) fall_state = FALL_IMPACT;
else if (g > 0.8f) fall_state = NORMAL; /* 误触发回退 */
break;
case FALL_IMPACT:
if (Is_Still(30000)) /* 30s 静止确认 */
fall_state = FALL_STILL;
break;
case FALL_STILL:
Fall_Alarm(); /* 语音呼救 + 上报云端 + GPS定位 */
fall_state = NORMAL;
break;
}
}
4.3 报警链路
确认跌倒后,按"先本地、后远程"的顺序触发:
void Fall_Alarm(void)
{
UART1Write("B0"); /* 1. JR6001 播报"有人跌倒,请求帮助" */
UART1Write("AF:35"); /* 音量设为 35 */
Beep_On(); /* 2. 本地蜂鸣器同步响 */
GPS_GetLocation(gps_buf); /* 3. 取当前经纬度 */
MQTT_PublishAlarm(gps_buf, /* 4. MQTT 上报云端 -> 监护人手机 */
heart_rate);
}
五、总结
这套系统的价值不在单个模块,而在完整走通"传感采集 → 本地判断 → 双通道报警(语音 + 云端)"的物联网闭环。做毕业设计,它有算法(跌倒状态机)、有硬件(七类外设混合总线)、有云端(MQTT 上报),答辩内容足够;做产品原型,60~80 元的 BOM 也留出了商业化空间。
下一步可以迭代的方向:低功耗(跌倒检测用 ADXL345 中断唤醒主控,电池续航能从小时级提到天级)、加 NB-IoT 摆脱 WiFi 依赖、云端加"静默期确认"(报警后 30 秒内按键可取消,防误报骚扰)。
六、资料内容完整工程资料(原理图、PCB、代码、元件清单)


七、资料获取方式


扫一扫咨询客服