基于STM32单片机老人体温心率血氧跌倒定位短信报警

本文主要是介绍基于STM32单片机老人体温心率血氧跌倒定位短信报警,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.硬件及设计功能

       以STM32F103C8T6为中央处理器,GPS模块用采集数据,将数据发送给单片机后,单片机根据定位计算公式得出当前位置的经纬度信息和时间信息。经过LCD显示器处理后得出和时间信息SIM800模块发送短信到设定的手机号上,将检测到的经纬度和心率血氧体温等信息展示在短信上。
原理图如下: 


PCB图如下:


二.设计功能

1.电路供电部分:整个电路基本工作电压为5V;通过SIM800模块,将单片机和手机进行短信通信,手机上可以显示采集到的时间和经纬度信息。
2.STM32单片机作为CPU,进行数据的采样以及分析运算。最后通OLED液晶显示屏显示当前的数据信息。
3.通过GPS接收模块,采集到相应的检测到的卫星信号后,可以计算出卫星轨道参数等数据,最后接收机中的微处理器就可以按照定位解算算法进行定位解算,得出机器所在位置的经度、纬度信息。
4.通过ADXL345判断老人是否跌倒,MAX30102心率血氧传感器采集老人当前的心率和血氧值,通过DS18B20进行温度采集。通过这些传感器模块来判断老人当前生理状况。
5.通过GPS模块获取当前的GPS定位,并通过设备上的OLED显示屏可以得到当前测试地的经纬度及时间的信息。

三.程序

int main(void)
{char i, error_num = 0;extern const unsigned char BMP1[];u8 shanshuo=0,count;u8 count2=0,count3=0;DelayInit();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级I2C_Configuration(); //IIC初始化CheckNewMcu();//检测是否为新的单片机OLED_Init(); //OLED初始化KEY_Init(); //按键初始化GPS_rx_flag = 0;Usart1_Init(9600);USART3_Init(9600);DelayMs(200);OLED_CLS();//清屏DS18B20_Init();OLED_DrawBMP(40,0,88,6,(unsigned char *)BMP1);//测试BMP位图显示for(i=0;i<7;i++)OLED_ShowCN(i*16+12,6,i+10,0);//测试显示中文:正在初始化中!gsm_init();//gsm初始化IIC_init();//IIC初始化adxl345_init();//ADXL345初始化Init_MAX30102();//MAX30102初始化memset(STM32_RX1_BUF, 0, STM32_RX1BUFF_SIZE);//清除缓存STM32_Rx1Counter = 0;GPS_rx_flag = 1;while(1){SMS_Receive();//短信接收KeySettings();ShowHomePage();if(setn == 0)//不在设置状态下,读取相关数据{if (rev_stop == 1 && count3++>=5)   //如果接收完一行{if (GPS_RMC_Parse(STM32_RX3_BUF, &GPS)) //解析GPRMC{DisplayLongitudeAndLatitude();    //显示经纬度信息error_num = 0;gps_flag = 0;rev_stop  = 0;GpsInitOkFlag=1;}else{if (error_num++ >= 30) //如果数据无效超过30次{error_num = 30;if(GpsInitOkFlag==1){GpsInitOkFlag = 0;OLED_ShowStr(40, 4, "           ", 2);OLED_ShowStr(40, 6, "           ", 2);}}gps_flag = 0;rev_stop  = 0;}count3=0;}if(GpsInitOkFlag==0&&count++>=5)//无GPS信号,显示搜索信号{count = 0;shanshuo = !shanshuo;if(shanshuo==1){for(i=0;i<4;i++)OLED_ShowCN(i*16+48,4,i+17,0);OLED_ShowStr(40, 6, "    ...    ", 2);}else           {        OLED_ShowStr(40, 4, "           ", 2);OLED_ShowStr(40, 6, "           ", 2);}}DisplayTemperature();     //显示温度FallDetection();          //跌倒检测GetHeartRateSpO2();       //获取心率血氧DisplayHeartRateSPO2();   //显示心率血氧}AlarmAndSendSMS();           //蜂鸣器报警及其发送短信if(count2++>2){Twinkle=!Twinkle;if(FallFlag==1){if(FallTime>0)FallTime--; //当时间减到0,说明跌倒时间持续了5秒(这里只是大概5秒)}count2 = 0;}}
}
​

资料

这篇关于基于STM32单片机老人体温心率血氧跌倒定位短信报警的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015058

相关文章

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

redis防止短信恶意调用的实现

《redis防止短信恶意调用的实现》本文主要介绍了在场景登录或注册接口中使用短信验证码时遇到的恶意调用问题,并通过使用Redis分布式锁来解决,具有一定的参考价值,感兴趣的可以了解一下... 目录1.场景2.排查3.解决方案3.1 Redis锁实现3.2 方法调用1.场景登录或注册接口中,使用短信验证码场

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD