本设计硬件部分:由OLED液晶显示屏,ADXL345角度传感器,SIM800C短信模块,GPS定位模块。以及心形脉搏测量,以及蜂鸣器报警电路再加上按键电路组成。
设计可实现:
- 心率的测量,按键1,即可开始心率的测量,测量结束,数据会显示到OLED液晶上,若心率超过阈值,同时还会发送报警短信用以提醒。
- 可检测是否摔倒,如若摔倒,则液晶可显示摔倒提示。并产生报警提醒,同时会通过GSM模块获取经纬度信息,发送含有经纬度的报警短信到绑定的手机。如果摔倒后直立,则会发送直立提示短信。
- 同时还可以进行手动的取消摔倒报警,按下按键2,则可以取消本次的摔倒报警。
- 按下按键3,则可以发送含有当前具体经纬度的求助短信。
OLED液晶,可以显示出当前状态,心率数据,以及具体的经纬度数据。
发送短信的手机号,只需第一次使用时发送连接短信,单片机会自动将手机号进行保存。后期不需要再次进行发送。
器件选型:
mcu单片机: STC12C5A60S2
GSM/GPRS: SIM800C
加速度模块: ADXL345
心率: PulseSensor
主程序代码:
#include <STC12C5A60S2.H>
#include "eeprom12.H"
#include "ADXL345.h"
#include "OLED.H"
#include "usercode.H"
#include "SIM800.H"
#include "key.H"
//===================================================================================================================== 保存经纬度
void Memory_data()
{
IapEraseSector(0x0400);
IapProgramByte(0x0401,jing_du/100000000%10);
IapProgramByte(0x0402,jing_du/10000000%10);
IapProgramByte(0x0403,jing_du/1000000%10);
IapProgramByte(0x0404,jing_du/100000%10);
IapProgramByte(0x0405,jing_du/10000%10);
IapProgramByte(0x0406,jing_du/1000%10);
IapProgramByte(0x0407,jing_du/100%10);
IapProgramByte(0x0408,jing_du/10%10);
IapProgramByte(0x0409,jing_du/1%10);
IapProgramByte(0x0412,wei_du/10000000%10);
IapProgramByte(0x0413,wei_du/1000000%10);
IapProgramByte(0x0414,wei_du/100000%10);
IapProgramByte(0x0415,wei_du/10000%10);
IapProgramByte(0x0416,wei_du/1000%10);
IapProgramByte(0x0417,wei_du/100%10);
IapProgramByte(0x0418,wei_du/10%10);
IapProgramByte(0x0419,wei_du/1%10);
IapProgramByte(0x040A,SIM800_Heat);
}
void Read_data()
{
jing_du = IapReadByte(0x0401)*100000000 + IapReadByte(0x0402)*10000000 + IapReadByte(0x0403)*1000000 + IapReadByte(0x0404)*100000 +
IapReadByte(0x0405)*10000 + IapReadByte(0x0406)*1000 + IapReadByte(0x0407)*100 + IapReadByte(0x0408)*10 +
IapReadByte(0x0409) ;
wei_du = IapReadByte(0x0412)*10000000 + IapReadByte(0x0413)*1000000 + IapReadByte(0x0414)*100000 + IapReadByte(0x0415)*10000 +
IapReadByte(0x0416)*1000 + IapReadByte(0x0417)*100 + IapReadByte(0x0418)*10 + IapReadByte(0x0419) ;
SIM800_Heat=IapReadByte(0x040A);
}
//===============