基于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单片机老人体温心率血氧跌倒定位短信报警
一.硬件及设计功能 以STM32F103C8T6为中央处理器,GPS模块用采集数据,将数据发送给单片机后,单片机根据定位计算公式得出当前位置的经纬度信息和时间信息。经过LCD显示器处理后得出和时间信息SIM800模块发送短信到设定的手机号上,将…...
【测评】雨云香港三区云服务器,2核2G 5兆,仅需38元/月
写在前面 雨云香港三区云服务器,高性能的 AMD EPYC 处理器 企业级 NVME SSD 高性能云服务器。2核2G 10兆 400G防御,仅需38元/月,年付7折仅 319.2元/年。 官网:https://www.rainyun.com 本次测评服务器配置如下: C…...
如何应对Android面试官 -> 玩转 Fragment
前言 本章主要讲解下 Framgent 的核心原理; 基础用法 线上基础用法,其他的可以自行百度 FragmentManager manager getSupportFragmentManager(); FragmentTransaction transaction manager.beginTransaction(); transaction.add(R.id.contentlayout,…...
sdbusplus:通过文件描述符传递数据
有的时候需要传递大量的数据,如果将数据通过dbus传递,会消耗大量的带宽。可以通过传递一个文件描述符替代传递数据: 以下的service通过文件描述符接收数据: //fd_service.cpp #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/asio/object_server…...
HyperLPR3 车牌识别
Linux 之前安装了python3 apt install python3.8-venv cd /root python3 -m venv HyperLPR3 REM cd HyperLPR3 source HyperLPR3/bin/activate 参考 https://www.jb51.net/article/222885.htm python -m pip install hyperlpr3 里面有fastapi,opencv等 错误&#x…...
面试的内容
1.C的三大特性:封装,继承,多态 2.C11的特性 3.NULL与Nullptr的区别: nullptr是一个特殊的空指针常量,不能被隐式转换为其他类型。 NULL 在一些情况下可能会发生隐式类型转换 4.智能指针 5.stl/Qt stl stl容器包含哪些&…...
剪映网页版
https://www.capcut.cn/web 免费,免安装,跨平台,视频云合成,简直太好用了!...
pgsql
创建分区表: PostgreSQL分区表_pg分区表-CSDN博客 创建list分区的函数 create or replace function create_list_fq(tb_name char, row_name char) returns int AS $$ declares char; beginraise notice CREATE TABLE if not exists %_% PARTITION OF % FOR VALU…...
Kotlin学习笔记 泛型
在 Kotlin 中,T 通常用作类型参数的占位符,它在实例化或传递参数时会被替换成具体的类型。 Kotlin 支持泛型,这意味着您可以编写可以与多种数据类型一起工作的代码,而不必为每种数据类型编写单独的代码。 ### 泛型类和函数 在 …...
开发者必看:Linux终端的10大装逼神器,让你的命令行炫酷起来!
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...
20 VUE学习:插件
介绍 插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。下面是如何安装一个插件的示例: import { createApp } from vueconst app createApp({})app.use(myPlugin, {/* 可选的选项 */ })一个插件可以是一个拥有 install() 方法的对象,也可以直接…...
python之any用法
写法对比 代码一: any(i for i in [0,1]) 代码2: any([i for i in [0,1]]) 优劣 结论:代码一写法更好 解释: 在 Python 中,any() 函数可以接受一个可迭代对象作为参数,并返回 True 如果可迭代对象…...
【前端学习——react坑】useState使用
问题 使用useState 时,例如 const [selectedId, setSelectedId] useState([false,true,false]);这样直接利用,无法引发使用selectedId状态的组件的变化,但是selectedId是修改了的 let tempselectedId;temp[toggledId]selectedId[toggledId…...
【前端每日基础】day28——async/await
async/await 是ES2017(ES8)引入的用于处理异步操作的语法糖,基于Promise实现。它使得异步代码看起来像同步代码,从而提高了代码的可读性和可维护性。以下是对 async/await 的详细讲解。 基本语法 async 函数 在一个函数前加上 as…...
错误记录:从把项目从Tomcat8.5.37转到Tomcat10.1.7
错误信息:在本地Servlet项目里没有报错,但是浏览器跳转该servlet时报错 型 异常报告 消息 实例化Servlet类[com.wangdao.lx.MyServlet1]异常 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 jakarta.servlet.ServletExceptio…...
AJAX基础知识
定义 Ajax 异步 JavaScript 和 XML ( async javascript and xml ),使用 Ajax 技术网页应用能够快速地将数据更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操…...
xcode依赖包package已经安装,但是提示No such module ‘Alamofire‘解决办法
明明已经通过xcode自带的swift包管理器安装好了依赖包,但是却还是提示:No such module,这个坑爹的xcode,我也只能说服气,但是无奈,没办法攻打苹果总部,只能自己想解决办法了 No such module Ala…...
基于Centos7 安装k8s一主两从
一、资源准备 mac下虚拟机环境搭建 1、使用搜狐的iso源 http://mirrors.sohu.com/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso 下载 iso镜像。 2、https://www.macwk.com/soft/vmware 下载 mac vm虚拟机 3、搭建一主两从集群所需虚拟机 4、新建虚拟机…...
基于java实现图片中任意封闭区域识别
需求: 在浏览器中给用户呈现一张图片,用户点击图片中的某些标志物,需要系统给出标志物的信息反馈,达到一个交互的作用。 比如下图中,点击某个封闭区域时候,需要告知用户点击的区域名称及图形形状特性等等。…...
闭包是什么?有什么特性?对页面有什么影响?
闭包是指在一个函数内部定义的函数,并且该函数可以访问到外部函数的变量。闭包可以将外部函数的变量保持在内存中,并且不会被释放。 闭包具有以下特性: 1. 函数内部定义的函数可以访问外部函数的变量。 2. 外部函数的变量可以保持在内存中&a…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
