前言
更新一个最近做过的课设项目,思路比较简单明了,方便复现实现。
背景
提供安全保障,减少独居风险
老年人摔倒是一种常见的意外事件,可能导致严重的伤害甚至生命危险。老人防跌倒报警器可以及时发出警报,帮助他们获得及时的救援和医疗帮助,提供安全保障,减少意外风险。
减少护理负担,提高生活质量
对于家庭中的护理者来说,老人防摔倒报警器可以帮助他们及时得知老人的意外情况,减少对老人的监护负担,提供更好的照顾和关爱,让他们能够更加安全、健康地享受晚年生活。
作品概述
正常状态:
电路板处于直立状态时(人处于直立状态时),绿色指示灯亮起,系统无报警,手机APP端界面显示“状态正常”。
异常状态:
电路板倾倒时(人处于跌倒状态时),红色指示灯亮起,蜂鸣器报警,手机端界面出现红色字样提示“已经摔跤,需要救助”。
若为误报警,可按下取消报警按钮,系统初始化,取消报警。
整体结构
电路原理图
ADXL345
详细内容请看芯片手册
一款小而薄的超低功耗3轴加速度计,分辨率高。该器件可将x,y,z轴上的加速度大小转变为电信号,再将其由模拟信号转换为数字信号,通过活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。
HC-05蓝牙模块
无线通信:近距离内进行通信,无需使用其他物理连接。
低功耗:低功耗的通信方式。
多设备连接:一个主设备同时连接多个从设备,实现更灵活的数据传输和通信。
通用性:蓝牙技术在许多设备和应用中得到广泛应用。
安全性:蓝牙技术在不断发展和改进中,以提高其安全性,以防止未经授权的访问和数据泄露。
程序设计
我根据代码画的程序框图,欢迎指正哈
ADXL345读取函数
这是最主要的传感器读取函数(详细代码请移步我主页下载)
void ReadData_x()
{
int dis_data;
Multiple_Read_ADXL345(); //连续读取数据,存储在BUF中
dis_data=(BUF[1]<<8)+BUF[0]; //合成数据
temp_X=(float)dis_data*3.9; //X轴
dis_data=(BUF[3]<<8)+BUF[2]; //
temp_Y=(float)dis_data*3.9; //Y轴
dis_data=(BUF[5]<<8)+BUF[4]; //
temp_Z=(float)dis_data*3.9; //Z轴
以及主函数中的读取传感器和分类情况的部分代码
if(ReadAdxl345==1)
{
ReadAdxl345=0;
ReadData_x();
CheckNum++;
if((temp_X<550)||(abs(temp_Y)>750))
{
ErrorNum++;
}
if(CheckNum>=5)
{
if(ErrorNum>1)
{
if(reportFlag==0)
{
Delay_Sec=0;
}
reportFlag=1;
}
else
{
reportFlag=0;
Delay_Sec = 0;
}
ErrorNum=0;
CheckNum=0;
if((reportFlag==1)&&(Delay_Sec>=2))
{
hongled=0;
buzzer=0;
Uart1Send(0x05);
DelaySec(2);
}
else
{buzzer=1;hongled = 1; Uart1Send(0x08);}
}
}
结果展示
板子竖起代表直立状态->状态正常
板子平放代表摔倒状态->状态异常并报警
这个手机软件是从网上找的哈,如果没有软件的话,可以在手机应用商城里下载串口调试助手,通过UASRT可以实现相似功能。