大家好,欢迎来到IT知识分享网。
0 简介
Hi,大家好,这里是嵌入式xff,
今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计
基于STM32单片机的心率血氧检测与远程定位报警装置
单片机-嵌入式毕设选题大全及项目分享:扫码进群领资料(进群即可免费领取)
任务
本系统设计了一个可以进行心率、血氧实时监测、GPS经纬度数据获取的装置,并能够通过无线通信模块将监测数据发送给岸上救生人员配备的无线救生装置中,救生人员能够根据接收到的信息迅速启动应急措施。本章节用于完成救生装置硬件模块的选型和电路的设计。
设计要求如下:

(1)采用心率血氧监测模块:通过MAX30102检测使用者的心率和血氧数据,采集的心率血氧信息通过串口传输到单片机中。该传感器输入电压支持3.3~5.0V,默认上拉电压3.3V,内置ADC精度:16bit。
(2)当佩戴该装置下水时,在水中若检测到用户心率血氧处于不正常水平,可以控制二氧化碳充气救护衣(采用继电器模块控制开启和关闭,继电器模块工作电压为3.3V,高电平关闭,低电平开启),实现漂浮功能。
(3)当佩戴该系统下水时,正常情况下救护系统是没有充气的(继电器关闭),方便用户自由泳。
(5)实现用户自救功能:当用户自我感觉无法自由泳时,且检测系统没有打开充气功能(继电器开启),此时用户可通过按钮手动打开充气功能实现自救。
(6)实现远程控制功能:当用户处于溺水时,岸上救生员可以通过远程控制功能实现充气(远程按键按下,继电器打开,远程传输使用GT-38模块,433M无线通信频率,可传输距离理论为1200米,串口通信),实现及时救生。

(7)当心率和血氧监测异常时,系统配置多颗LED灯发光(心率指示一个红色LED,血氧一个红色LED,报警指示红色LED,正常指示绿色LED,LED灯工作电压3.3V,高电平关闭,低电平点亮),做到提示用户所在位置的功能,方便施救人员及时发现并救助。
(8)当心率和血氧监测异常时,实现蜂鸣器报警(对应LED亮起,同时报警指示红色LED亮,正常指示绿色LED灭,蜂鸣器模块工作电压3.3V,低电平工作,高电平停止)。
(9)实现GPS定位功能,岸上救生员可以通过液晶屏显示的用户GPS坐标寻找水中用户位置(GPS模块工作电压3.3V,串口通信,NMEA协议,定位精度2.5米内,初次上电寻星时间小于40秒,具备记忆功能)。
(10)屏幕采用LCD显示GPS坐标和救生系统状态信息。
本系统设计要求心率监测的误差在±2次/分,当心率发生急速突变超过设定的心率血氧阈值时系统能够自动启动报警功能;血氧饱和度精度为±0.2%,当血氧含量低于设定的阈值时,则启动系统报警功能;本系统设置了远程可控功能用于接收游泳者的身体信息以供水边救生人员人为检测以及远程模块具备按键输入控制游泳者救生系统的功能,当游泳者身体参数突发异常时,救生人员可以通过远程按键及时手动触发救生系统。

本设备配备了LCD屏幕心率和GPS坐标显示,当本设计的报警系统被触发时,远程设备能够接收到从游泳者佩戴的救生系统发出的警报信息、身体血氧、心率指标信息以及GPS坐标信息,并能够在远程设备的LCD显示屏上进行显示。故本系统采集信息需要使用到GPS模块获取GPS坐标,心率血氧模块获取佩戴者心率血氧数据,无线通信模块进行数据通信,LCD显示模块进行数据的可视化显示,按键模块进行配置设置。
本系统采集心率血氧传感器数据,采集GPS经纬度数据,将采集的数据显示到OLED屏幕上,当将手指放入心率传感器采集的位置后,传感器采集对应的心率血氧值,通过串口传输给单片机,单片机通过接收和解析程序,成功解析后,将数据显示到屏幕上,GPS采集方法与血氧传感器类似,都是串口方式,不同的就是协议以及内容有所差别。

LCD屏幕显示使用的是串口屏幕,通过指令发送对应信息就可以完成显示功能,如字体大小,颜色等。如图5.4所示为本次通过单片机向液晶屏发的指令,格式为字符串形式。内容为DC16即发送的显示内容字体大小为16 * 16,往后的数字如0,11为显示的位置,0代表X轴方向第0个像素点,11代表Y轴方向第11个像素点,位置是从0开始,屏幕像素大小为128 * 64即宽度为128像素点,高度为64像素点,屏幕支持旋转,本次设置为竖向,即X轴取值范围为0-63,Y轴取值范围为0-123。
再往后的单引号括起来的为显示内容,最后放的是显示字体的颜色。本系统通过GT38无线传输模块将主从机信息进行同步,当处于接收范围之内,主机采集的信息会被同步显示到从机,如下图所示为本系统硬件整体显示情况,将手指放在传感器上进行采集后,可以看到采集信息是同步的(为了增加对比度,本次采用了黑色背景,白色字体显示)。

硬件设计
主机


心率血氧传感器模块
MAX30102是一个集成了脉搏血氧仪和心率仪的生物感器模块[3]。本次采用的心率血氧模块为MAX30102[12],该模块采用了一个STM32F07单片机,该单片机是STM32系列的低功耗产品,芯片封装小,性能高,使用该单片机用于读取心率血氧值,然后通过算法处理后,通过模块引出的串口接口传输出去,该模块的串口通信波特率可调,且该模块使用了AT指令的通讯协议。该模块的心率测量范围宽,为20-200次/分钟,血氧的测量范围:50%-100%,该模块使用串口输出,因此无需操心MAX30102的数据读取和处理,主控单片机只需要通过串口发送AT指令来获取心率血氧值即可,这样极大的方便了心率血氧程序的设计。
该模块的基本信息如下图所示,从原理图可以看出,该模块是MAX30102传感器和STM32F070F6P6单片机组成,由STM32F070F6P6单片机采集MAX30102的数据,经处理后通过串口使用AT协议进行输出。由此,本系统使用单片机的串口3接口PB10和PB11连接到该传感器模块对应的串口引脚,以获得通信数据,解析其中的心率血氧内容即可。

GPS模块
本设计需要对游泳者的位置数据进行采集,当游泳者出现身体异常时,系统能够及时上报用户位置供救生员准确救援。本次使用的GPS定位模块为ATGM336H-5N。ATGM336H-5N模块具有非常高的灵敏度,功耗很低,其运行时电流仅仅为25mA[4],该模块上电首次定位时间相对来说还是比较短的,在空旷的地方32秒能即可完成首次定位。
模块内置了天线检测和天线短路保护的功能。ATGM336H-5N模块输出方式为串口传输。 ATGM336H-5N模块基本情况如下图所示。本系统使用单片机的串口1的接收引脚RXD对应的PA10口和该模块相连。

无线传输模块
本系统使用GT38作为无线通信模块。该模块在空旷地无遮挡的情况下最大的通信距离为1200米,模块的功耗比较低,最大功率为100mW。 如图所示,GT38无线通信模块通过串口线进行交叉连接,即串口的TX连接到其它模块串口的RX,相应的,RX连接到其它模块串口的TX,模块不支持同时收发数据,故仅能工作在半双工状态,收完数据再进行发送即可。本系统使用该模块将主控板上测得的使用者的心率、血氧以及GPS经纬度数据传输给从机,采用此无线传输模块传输距离远。模块通信采用串口,故本次设计使用主控单片机的串口2,从控单片机的串口1来发送或接收数据,连接原理图如图所示。

部分代码如下:
心率血氧采集驱动部分代码
#ifndef __XINLV_H #define __XINLV_H #include "stm32f10x.h" #define XinLv_Buffer_Length 200 #define XinLv_Length 5 #define XueYang_Length 5 #define false 0 #define true 1 typedef struct { char XinLv_Rec_Buffer[XinLv_Buffer_Length]; char isGetData; //是否获取到数据 char isParseData; //是否解析完成 char XinLv[XinLv_Length]; //心率值,字符串形式存储 char XueYang[XueYang_Length]; //血氧数据 char isUsefull; //信息是否有效 int count_erroTime; } _XinLvData; extern _XinLvData XinLv_Data; void XinLv_RecHandle(u8 Res); void parseXinLvBuffer(void); #endif
完整代码可进群免费领取!!!
嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!
点击这里找小助理0元领取:扫码进群领资料

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/187751.html