社会经济不断发展的过程中,人口老龄化也在不断加速,老年人的健康问题逐渐受到大众的关注。老年人各项生理指标开始衰退,心脑血管疾病频发,作为老年人致死率较为严重的问题之一,跌伤伤害逐渐成为大众性问题。为了加强老年人对于自身健康的关注度,提高突发情况下的救助力度。此次设计利用单片机作为老人防跌倒报警监护系统的控制核心,负责协调各个模块完成整个系统的功能。采用温度传感器来对老人体温进行测量,采用PULSE SENSOR心率传感器来对用户心率进行检测,利用HX711压力检测模块来进行血压检测操作,利用ADXL345陀螺仪传感器来用户的身体状态进行辨别。实际检测中,是时间检测到的心率数据、体温等数据信息通过显示进行显示,便于用户实时观测。当检测到用户摔倒,则触发GSM驱动程序在SIM800C GSM模块的工作下进行报警操作,并显示老人摔倒的具体定位信息,便于及时进行救援工作。在硬件电路设计以及软件功能调试的过程中,完成整体系统设计,同时在实物功能演示中,整体设计基本满足预期目标,能够实现各项数据的检测操作,在实际应用中具有一定的设计意义。
关键词 陀螺仪;GSM;GPS;单片机
1 绪论
1.1 课题写作背景及意义
近年来,我国社会经济发展水平不断提升,人们物质生活条件也日益提高,人们对于自身身体健康意识也在不断加深。近年来我国高血压患者人数增多,由于高血压会引起一系列的并发症,包括心脑血管疾病的,所以对于高血压等慢性疾病需要长期进行观察以及治疗工作。智能化人体各项参数检测仪器也逐渐受到人们的关注,利用各项检测仪器可以进行对自身身体参数进行检测操作,同时通过手机等移动客户端就可以实时看到检测,结果做到智能便捷的设计目的。对于人体进行心率血压监测的工作,具有一定的实际意义,能够有效协助医生针对相关疾病进行整治工作,通过对身体进行实施的监测,能够关注自身健康状况,一旦发现数据情况异常就可以及时就医,避免造成严重的后果。
在对心率监测的过程中,主要是由于心脏在正常状态下的收缩会产生微小的生物电,科研人员利用人体导电这一特性将生物电流通过人体进行传递,这也是
心率监测在设计过程中主要的设计原理。对心率进行实施的监测,能够减少由于心脏功能衰退导致的各类心脏疾病的发生,为了能够对心脏正常功能进行有效监测,利用检测设备进行相应的监测,能够将个人信息数据进行及时上传,能够提高用户在日常生活中对于自身身体情况的诊断,同时避免由于病情拖延导致的手段延误情况的出现。近段时间,新冠病毒疫情严重,跨地区传染范围越来越大,短时间内造成了大范围内的流行,在一定程度上严重对人类健康产生威胁,所以对于自身健康安全的管理工作,也受到了足够的重视。血压和心率作为检测身体健康重要的指标之一,能够方便人们在日常生活中对于自身身体状况进行了解,一旦发生异常情况,能够及时得到医院治疗,避免出现猝死情况的发生,在一定程度上保证了人们生命财产安全。目前,我国社会人口老龄化问题严重,每年老人由于意外摔倒造成的人身伤害占据一定的比例,因此对于老人摔倒过后进行及时的救治具有重要的意义,这次设计不仅针对心率和血压进行及时的监测操作,同时利用传感器对老人说,生活中的身体状况进行及时的监测,避免由于摔倒,导致的严重后果,进一步完善设计的功能完善性。
1.2 国内外的研究现状
在欧美等发达国家,最早用来记录心脏跳动的电流图是由上个世纪80年代英国科学家Einthoven发明的,最早通过毛细血管的静电计来对血液流动记录,随后对心脏跳动电流谢谢广泛的研究,在以往科研人员的研究基础之上,整体研发心电图的使用质量,并发明了弦线式电流计的使用。解决了之前设备仪器误差大使用繁琐的缺点,利用横纵坐标直观反映心电图的影线,时钟显示方式这一方式简洁明了,可以直接反应正常心电图的跳动情况。这也是当今社会使用的标记方法。
在我国,随着电子科学与技术系技术的进步,心率检测技术越发成熟,设备功能逐步完善,资本的投入加快了开发步伐,利用微电子技术也增强了医疗领域的设备先进性,各大生产厂商均在研究上有所突破。从心率检测仪器的发展趋势来看,信息传输能力增强,利用信息存储技术增强了医疗领域的有关心电图数据的存储作用,心电数据在医院整体日常工作过程中扮演着重要的角色。心率以及血压自动化测量缓轻病人紧张情绪,同时远程医疗的可能性,从整体上提升了社会的医疗水平,提高病患生存率,通过远程传输心电数据,能够为专业机构对病情提出专业的诊断结果,实现远程医疗。在实际应用过程中,心率、血压等基础信息的判断,能够为患者自身生理健康作出判断依据。相关医疗器械企业利用患者的基础检测信息,能够生产出符合医疗市场需求的产品,这也是高科技在医疗机械领域带来的技术。而这一带来的无限商机,也将新型数字心率计设
备的设计推向高潮。
老人跌倒是近年来老年人致死率较高的原因之一,因此对于防跌倒技术的研究,受到了社会各界的重视,能够进一步完善老年人护理系统的研究。在欧美等发达国家在以及机构的帮助之下,为了能够提高老年人的生活品质,人性化的设计也逐渐成为研究机构的主要课题。能够实现对老年人姿态进行实时监测,并对是否跌倒进行判定已经成为研发热潮。在电子技术应用日益广泛的基础之上,将相关研究技术应用于防跌倒技术的开发,能够进一步提升系统的实用性,提高老年人的生存率。在我国针对跌倒检测的算法研究处于起步阶段,各大公司研发的人体跌倒报警器分为两种类型,第一种是老年人摔倒时自主进行报警,此种报警器需要用户能够具有自救能力和自主活动能力,摔倒过程中需要保持清醒,才能够实现报警功能。但是,由于摔倒会对身体机能造成损伤,会相应数据启动报警器的行为能力,在这种情况下系统设计的失去了报警功能的实现。第二种是利用视频图像信息检测来对用户摔倒进行系统的报警操作,主要是通过图像信息来对用户身体发生移动或姿态发生变化时,进行自动报警工作。虽然从功能实现上能够实现报警功能,但是使用空间具有一定的局限性,同时自动报警器的应用在一定程度上侵犯了用户的个人隐私,不适合大范围内推广。
2 系统方案设计
2.1 系统整体设计
本次老人防跌倒报警监护系统的设计中,其主要的目标功能如下:1、实时检测当前老人的体温;2.实时检测老人的心率;3、可以实时定位老人的经纬坐标;4、老人摔倒会自动通过GSM模块进行短信报警;5、通过液晶显示相关的信息;6、可以通过手机发送短信指令获取老人的位置、体温、心率信息;
为了实现上述功能,在硬件上采用STM32单片机作为主控制器,负责协调各个模块完成整个系统的功能。其中,包括SIM800C GSM模块,VK2828U7G5LF 模块,ADXL345陀螺仪传感器,DS18B20温度传感器,OLED128液晶等。
在软件上,主要采用KEIL软件进行程序的编写,语言则采用C语言。通过在该平台上分别编写GSM驱动程序,GPS驱动程序,摔倒检测等各个模块的子程序来完成所有的功能。
如图2.1所示为系统整体框架图
图2.1 系统整体框架图
在系统方案的设计过程中,需要综合考虑多方面的因素,首先为了保证系统能够进行使用并且切换模式应当保证系统占据较小的工作空间,同时为了能够减少系统工作的功耗损失,可以选择较小的电压进行系统的供电工作,单片机的设计使用也是考虑到产品在设计过程中提及以及量产等诸多问题,单片机的使用也是系统低能耗输出的重要保证,其具有安全使用可靠的数据传输能力,能够在一定程度上减少外界等因素对于系统正常工作的干扰,尽可能减少系统即使在长时间的工作状态下出现失误的情况。
2.2 主控制器方案选择
方案一:采用可编程逻辑器件FPGA或者CPLD作为本次课题的主控制器,对于可编程逻辑器件,其运算速度快,最大的特点就是其特有的并行运算能力,相较于其他MCU等微控制器,其综合运行速度远远高于其他非可编程逻辑器件,其被广泛应用于航天,通信等对速度要求高的场合。在软件编程方面,其编程语言主要是VHDL和VHERILOG两种,相较于C语言来说,其编程难度会更大一点,尤其在涉及到浮点运算,乘法除法运算时其操作难度尤为明显。由于其本质上是纯硬件的特性,因此对于底层位的操作需要较高的知识储备和了解,同时其特有的并行运算方式,注定了其高性能高功耗的特性。在芯片使用上,其通常需要+3.3V电源给其IO管脚,+1.8V电源和1V电源给其内核供电,因此在电源的供电上相较于MCU的单一供电要求也较为复杂,对纹波的要求,电源芯片的要求也更高。这也就要求需要更好的电路的设计能力,但鉴于其快速的运算能力,因此被广泛应用于各种高速场合。
方案二:选择经典的8位 STC系列单片机,其是宏晶公司生产的我国自主研发的高性能51系列单片机,采用了MCS-51的指令集,内部集成了FLASH,ROM等存储器,用户可以在软件编程时将数据直接存储到单片机的内部FLASH中以保证数据掉电不丢失。其开发平台支持KEIL,IAR等多种平台,开发语言则为C语言,开发过程难度较低,上手速度较快,主要有3个定时器和2个中断,支持ISP下载,串口下载等多种方式。同时不同的厂家还对其进行了加密的处理,以保证数据的安全性。通常外部采用12M晶振,由于其自带12分频功能,因此其最快速度为1微秒执行一条指令,完全可以满足大部分低速产品的使用需求。同时由于其成本低,稳定性好的特点,被大量应用于小家电,玩具等场合,带来了具体的经济效益。
方案三:选择STM32F103,它是ST公司的32位MCU控制器,其内部为32位宽的总线,数据处理能力强,最高时钟可以达到72M赫兹,其内核采用了主流的ARM系列。ST公司为其配套开发了STM32CUBEMX工具,通过该工具,用户可以自主的对相关定时器,中断,ADC等外设进行图形化的配置,节约用户大量的时间,其特有的HAL库函数极大的简化了整个开发流程,目前已经逐渐替代了过去的固件库。其自带的ADC模数转换功能,USART串口通信功能等等都使得用户不需要再去进行另外的电路设计,加快了开发速度。在汽车,机器人等多种场合,STM32系列芯片被广泛应用,可靠性强,性能稳定。
通过对上述三种主控制方案的分析,考虑到本次设计的实际情况,在此选择方案三来作为本次课题的主控制器。
2.3 电源供电方案选择
方案一:选择家居或者工业用电常用220V交流电源作为整个系统的源头输入,该方式贴合生活实际情况,但是需要相应的电源转换电路。需要将220V交流电转换成低压的5V来给单片机及其相关器件进行供电。因此通常需要降压变压器,整流二极管,稳压芯片等多种器件,成本较高,但贴合实际应用,不利于随身携带。
方案二:直接选用5V低压直流电作为系统的输入,省去了电压转换的电路设计,降低了系统设计难度,更加着重于系统本身设计。但由于5V的电源较少,因此需要购买相应的电源适配器成本或者其它接口来进行5V电源的输入。
对比两种操作,为了贴合实际应用场景,采用方案二来进行电源供电设计。
2.4 温度检测方案选择
方案一:采用热电偶加模数转换芯片的形式来进行温度检测,热电偶是一种会随着温度的变化其相应的阻值会进行变化的器件,其工作的范围非常广,根据材料的不同其可以工作在几千摄氏度的高温环境和零下上百度的低温环境,其检测精度较高。但是由于其变化的是模拟量,所以需要配合高精度的模数转换芯片,通过单片机对热电偶输出的模拟量进行转换出来后才能对温度进行识别。因此其整体设计过程较为复杂。
方案二:采用数字式温度传感芯片DS18B20,该芯片为一线制工作,单片机只需要一根线对其进行控制就可以读取相应的温度。其工作范围可以达到零下40到正120摄氏度,可以满足一般的正常工作需要。其被大量的用于工业家居等日常生活中,稳定性好,价格便宜,可靠性高。
综上所述,考虑到毕业设计的目的,所以采用方案二。
3 硬件设计
3.1 主控制电路设计
在基于单片机的老人防跌倒报警监护的设计中采用的微处理器STM32F103,其具有以下突出性能:采用ARM 32位的Cortex™-M3 CPU的内核,基于单周期乘法和硬件除法,主要是为了能够达到72MHz的工作频率。同时芯片内部具有K字节的闪存程序存储器和20K字节的SRAM 。
整体工作电压较为宽泛可以达到2.0-3.6伏,同时为了工作的稳定可靠性,内部配置了已调好的8 MHz的 RC振荡器,带校准的40 kHz的 RC振荡器以及32 kHz RTC振荡器。总体上达到了减少损耗的作用。同时芯片具有多种工作模式包括停机,待机等。
STM32系列单片机在具体使用过程中具有较多的优势,其性能优越,开发成本较低,同时可以进行嵌入式设计,整体耗能较低。这些优势也进一步优化了其在智能家具设计环节中的设计优势。同时类型众多,研发人员可以根据自身需求来进行相应的设计工作,单片机内部资源较为丰富,整体上来看功能完备。如图3.1所示为单片机引脚图。
图3.1 单片机引脚图
对于该单片机其供电为3.3V供电,而常用的USB口等电源输出均为5V,此需要设计相应的电源转换电路,在此选择了AMS1117- 3V3芯片来作为电源转换芯片。该芯片是一种线性稳压芯片,输出能力可以达到1A以上,完全可以满足本次设计需求。其电源部分原理图如图3.2所示。
图3.2 电源电路
除了电源供电以外,对于控制器来说,复位电路也是必备之一,他保证了系统可以按照既定程序从头开始运行,而不至于失控。通常复位有硬件复位和软件复位两种方式,而最可靠的莫过于硬件复位方式。 如图3.3为硬件复位电路,单片机的外部RST引脚通过线连接到NRST引脚,平时NRST引脚在高电平时,单片机不收到任何影响,保持正常工作,但是当该引脚接收到一定宽度的低电平时,单片机就会进入复位状态,程序会回到初始状态,直到电平再次变高,才会继续运行。
图3.3 复位电路
对于单片机的运行,其时钟是非常重要的,时钟的稳定,快慢都对单片机的运行产生了决定性的影响。对于stm32单片机来说,其有内部的R / C振荡器和外部晶振这两种方式,对于内部的R / C振荡器,其最高只能到8MHz,如果需要更高的则必须采用外部晶振,然后配合内部PLL电路进行倍频达到72MHZ的速度。外部晶振的两个引脚是连接到单片机的两个OSC,其电路如下图3.4所示。
图3.4 晶振震荡电路
除了基本的单片机工作电路外,还需要考虑到程序的下载部分,在此采用的是ST-Link下载器来进行程序的在线调试和下载。虽然下载方式有SWD模式和JTAG模式,但是SWD模式只需要四根线就可以完成在线调试和下载的功能,因此选择该模式。其相应接口电路如下3.5所示,其对应的SWCLK,SWDIO需要连接相应的单片机引脚。
图3.5 SWD电路
另外STM32在启动时,程序有两种启动方式,一种是从内部,另一种是外部,在此次设计并没有采用外部的rom,因此需要设置成程序从内部启动,所以单片机的BOOT1和BOOT0脚需要设置成低电平。
3.2 按键电路
在设计使用过程中,通常需要相应的按键对设计的功能状况进行相应的设置,因此需要相应的人机接口,而按键则是其中输入信息到产品的一种最广泛的途径。在此设计了相应的按键电路来作为人机接口的信息输入功能模块。对于按键,其有开和关两种状态,配合相应的电源就可以产生最直观的高电平和低电平两种状态。根据实际使用条件,还可以分为单击,双击或者长按。其中单击在实现时最为简单,单片机只需要通过外部中断口或者普通IO口直接检测引脚的高低电平就可以,而对于后两种按键状态的检测则较为复杂。单片机需要通过定时器进行定时,并结合外部中断以此来判断按键的双击或者长按功能。在本次设中,由于单片机的IO管脚口足够,因此没有必要采用后两种复杂的方式,所以选择的是单击的方式。另外考虑按键在实际使用中会出现抖动的状态,因此单片机在检测到按键触发的情况下,需要进行延时消抖后再进一步判断,以消除干扰。最后单片机得到按键指令后按照既有的程序进行相应的操作,其电路如下图所示。
图3.6 按键电路
3.3 报警电路
由于系统在运行的环境中会遇到各种复杂或者特殊情况,因此设计相应的报警电路来进行报警提示以便用户能够得到及时的救助。在此次课题设计中,采用了蜂鸣器加PNP三极管组合的方式来完成报警电路的设计,其电路如下图所示。
由于单片机本身的IO管脚的电流驱动能力非常小只有几毫安,而蜂鸣器在发出声音时至少要几十毫安,因此不能用单片机直接对蜂鸣器进行控制操作。所以在此加入三极管电路,间接的控制蜂鸣器。对于PNP三极管,其集电极接电源正,发射极接蜂鸣器一端,基极通过电阻和单片机管脚相连接。当单片机输出高电平时,三极管此时属于断开状态,蜂鸣器不发声,但是当单片机输出低电平时,三极管则处于导通状态,蜂鸣器发出声音,以此得到报警的效果。同时我们
还可以根据设计的需求,来使得蜂鸣器发出不同的声音,如长啸,短叫,简单的音乐等等,只需要通过单片机输出不同的PWM去控制三极管的开通和关断就可以实现。
图3.7 蜂鸣器报警电路图
3.4 GSM模块电路设计
在此次老人防跌倒报警监护系统的设计中的GSM短信提醒控制部分采用的SIM800C模块,集成了多种专用通信电路,包括内存,射频处理器等等,单片机只需要通过与其接口进行相应的通信,其就可以通过内部的电路模块将信号发射出去,这样用户的手机就可以接收到老人跌倒的地理位置数据信息,以此来实现及时救护的功能。采用了GSM通信的方式将检测到的位置信息以及报警信号等发送给智能终端设备,SIM800C芯片为主控制器,其具有低成本,低延迟,有效范围远,节能等众多优点,被广泛应用于多种商业或者工业设施上。对于SIM800C芯片,其由美国德州仪器公司专门针对GSM通信市场而进行开发,其开发目的就是开发一种极低功耗的高可靠性产品,其本身SIM800C中集成了大量的内部电路,因此其所需的外围电路非常之少。其整合了硬件系统和软件系统,使得客户控制端基本不需要对GSM的通信协议进行重新编写,只需要进行控制就可以。其提供了两种系统方案进行操作即单一模式和双模式。经过大批量生产后,该模组的价格只需要几元人民币,所以其价格敏感度非常低,已经被广泛应用于手机,智能家居等众多环境
对于SIM800C的电路设计部分,只需要将控制器的串口引脚RXD,TXD与SIM800C模块的RXD,TXD进行连接就可以。
SIM800C原理图如图3.8所示。
图3.8 SIM800C 电路图
3.5 温度检测模块
在本次设计中需要对相应的温度进行检测,而对于温度的检测通常有热电偶和集成式的数字IC温度检测方式两种方式。在此选择了后者,具体在采用了DS18B20这数字型温度检测芯片。其封装形式有插件和贴片两种形式,除了电源供电外就只有一根线,因此主控制器只需要一个关键对其进行操作就可以进行温度的检测了。
对于DS18B20温度芯片,其温度检测范围非常广,从零下55到正125都可以检测,且精度达到0.01度,满足本次设计的需求。其引脚分别和电路如下图所示,其中图3.9是DS18B20的实物封装图,图3.10是电路连线图。
图3.9 DS18B20的管脚图 图3.10 温度传感器接口电路图
对于SOP封装的DS18B20,其有效引脚数依旧只有3个,其余都是NC空引脚。对于该温度传感器,其内部除了温度检测元件外,通过集成有数字IC将其
转换为数字信号给主控制器,同时配备了存储器用于储存数据。其还用于温度报警功能,可以通过主控制器预置写入相应的报警预置到DS18B20芯片中,当其检测到的实际温度大于预置时,便会输出相应的信号,以便控制器及时作出响应。
3.6 GPS模块
在此次老人防跌倒装置的设计过程中,一旦出现老人摔倒的情况,利用GPS模块进行老人位置经纬度信息数据的检测工作,并及时进行位置信息的数据传输,便于对老人进行及时救治。降低死亡率。此次GPS模块采用VK2828U7G5LF GPS 模块。在实际应用中,此种芯片检测灵敏度高、功耗较低、追踪灵敏度强,即使所处环境复杂,也能够实现高精度的定位操作,适合于此次设计。
VK2828U7G5LF GPS 模块接口原理图如图3.10所示。
图3.10 GPS接口电路原理图
模块实物图如图3.11所示。
图3.11 GPS模块实物图
PIN 脚功能
名 称 描 述 时间标准脉冲输出 PPS VCC 系统主电源,供电电压为+3.3V~+5V,工作时消耗电流约25mA UART/TTL 接口,可选RS232_TXD TX UART/TTL 接口,可选RS232_RXD RX GND 接地 电源使能,高电平/悬空模组工作,低电平模组关闭 EN 3.7 液晶显示电路
信息显示是单片机产品中非常重要的一个组成部分,其不仅仅可以显示产品当前的运行状态,传感器参数等信息,还可以配合按键部分对整个系统进行设置,可以说是人机交互中必不可少的一部分。在此次课题中,选取了液晶显示器OLED128来作为人机交互的显示页面。
其显示信息上一共有行,每行可以显示128个字符,支持全英文,数字和特殊字符的显示,而在硬件管脚上则有7个管脚。除了电源供电管脚以外,还有背光亮度调节管脚,控制引脚和数据引脚。对于单片机来说主要是对其4根控制引脚进行操作。由于OLED128本身的逻辑电平是支持3.3V和5V的,因此不需要通过电平转换,单片机就可以直接对OLED128进行控制。其中CS管脚为片选使能管脚,当其为高电平时,OLED128可以进行工作,A0管脚为命令和数据切换管脚,当为低电平时,则是读写命令,否则为读写数据功能。SCL和SDA是标准的IIC协议控制方式,SCL为时钟信号线,SDA是数据线,单片机通过控制这两根线来讲要显示的数据传输到OLED128液晶显示,其控制逻辑在OLED128的数据手册中已经给出。因此在使用时,单片机需要按照其给出的时序逻辑进行程序的编写以实现显示功能。电路图如图3.12所示,读写时序图如图3.13所示。
图3.12 液晶OLED128电路图
图3.13 OLED128的读写时序图
3.8 心率测量模块
在心率测量模块的设计中有较多检测方法,包括应变式心率传感器、光电容积心率法、压阻式心率传感器。目前在医学应用领域,光电检测技术使用范围较广,主要是因为光能能够在一定程度上避免由于电磁产生的干扰情况,保证整体绝缘性能较强,在对病患进行检测的过程中,不必侵入病人身体,就可以获取相关的症状信息。利用光电法来提取指尖心率光信息,可以实现对心率的测量工作。在此次对于心率测量模块的设计过程中,主要采用指套式透射型光电传感器,该整体使用过程中,可以实现光电隔离,同时保证对模拟电路产生一定的干扰。整个心率测量传感器主要由发光二极管以及光敏二极管组成,在工作过程中,通过发光二极管发出能够透射手指的光源,在被手指血液组织吸收之后,被光敏二极管所接受,利用动脉血在血液循环中能够呈现周期性的脉动变化这一生理特征。所以导致在对光源的吸收过程中也会相应的出现周期性的脉动活动。而整个心率测量设计,也就是利用光敏二极管输出相应信号的变化情况来反映动脉血的脉动情况。电路原理图如图3.14所示,实物图如图3.15所示。
图3.14 心率检测电路图
图 0.15 心率脉搏传感器实物图
如上图所示,采用的是Pulsesensor脉搏心率传感器,该传感器进行检测后通过LM393比较器进行信号的输出,这样单片机只需要对其进行频率的测量,就可以得到脉搏的大小。
3.9 陀螺仪传感器采集模块
ADXL345陀螺仪的内部如图3.17所示。其中包括ADC模块,mems结构,电源部分,数字滤波器等等。
图3.17 ADXL345内部结构功能框图
ADXL345测量范围达±16g(g为重力加速度单位)。所以此次设计主要是利用ADXL345传感器进行具体的测量工作。在感应模块中主要利用整合性6轴运动处理组件,使用这一组件最大程度上减少封装空间。ADXL345对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量,和所有设备寄存器之间的通信采用400kHz的I2C接口。为了提高检测过程中的精确性以及确保可以进行快速和慢速的运动的跟踪,在传感器的测量范围设置中都可
以根据用户自身需求进行相对应的控制操作。ADXL345加速度传感器,在此的作用是检测人体的XYZ三个方向的加速度, 以此来判定人是否不下心摔倒了。该芯片为IIC通信协议,单片机的PB3与ADXL345的SCL引脚相连,单片机的PB4与SDA相连。
图3.18 ADXL345原理图
4 软件设计
4.1 C语言
针对系统功能软件设计主要包括初始化设计、传感器数据采集、按键输入、液晶显示等模块的相对应设计工作。在针对软件设计的过程中,主要是采用模块化的设计方法,通过这一方法能够从整体上降低设计程序的复杂性,能够保证程序在使用、调试、维护等工作过程中,可以得到最简单化的处理操作。
C语言研发历史较为悠久,不仅可以对计算机的系统程序进行相对应的编译操作,而且在一般应用程序的编写过程中,使用范围也较为广泛。利用C语言进行编译操作过程中,使用较为方便,由于其具有丰富的运算符号以及数据类型,能够保证编译工作快速进行。整体上保证程序编写灵活,同时具有良好的可移植性。C语言是当下最为流行的程序设计语言,在用户的使用过程中,相关编程人员在不熟悉计算机内部相对应结构指令的情况下,就可以对程序进行编译。同时C语言可以对单片机硬件进行直接操作,可以对I/0端口进行驱动操作,位操作、地址操作。C语言适用于硬件操作的软件程序编写工作,尤其是在单片机以及嵌入式的应用领域的应用中。整体编写操作较为简单,可以利用其他人的案例编写进行参考工作来及时掌握C语言编程的具体应用实践。在此次设计过程中,主要是选用C语言进行编程语言的选择,同时利用keil进行程序编写以及相对应的调试工作。
4.2 KEIL UVISION简介
在完成整个系统的硬件电路设计后,需要编写相应的软件来使得整个系统的
功能运转起来,协调各个模块之间相互进行运转。对于单片机来说,无论是STM32,51系列或者是MSP430,几乎都是采用C语言进行底层应用程序的编写,因为汇编语言由于其易读性难,维护成本高,已经逐渐被潮流所淘汰。而编程平台在此同样是选择主流的keil uvision5,该版本目前是最新的版本,相较于前面的几个版本,其进行了大量的更新,编译效率更高,速度更快,界面的人机交互能力更强。该软件是专门被开发用来进行嵌入式系统程序编写的,其目前被广大的技术人员使用,其支持的处理器也变的越来越丰富,几乎涵盖了市场上所有的控制器。在进行程序编写时,首先需要新建一个工程,在此工程文件下面分别新建各个子文件.C和.H文件,其中.C文件主要用于编写各个功能模块函数的主要功能,.H文件则是库函数,供其他函数进行调用。在完成程序编写后,则开始对程序进行编译解决相应的警告和错误等等,然后就可以进行程序的下载。同时KEIL还提供了在线联机调试功能,方便用户实时观看控制器的寄存器状态以进行程序的修改和调试。软件界面如图4.1所示。
图4.1 Keil软件的界面
4.3 主程序设计
本款老人防跌倒报警监护系统。其主要流程如图4.2所示
开始系统初始化参数设置按键?N检测温度陀螺仪检测检测GPS坐标N蜂鸣器提醒Y是否摔倒YGSM发送液晶显示停止
图4.2 主程序流程
20
部分代码如
4.4 OLED显示程序设计
OLED液晶显示模块是单片机系统开发中较为常见的显示模块,OLED显示简单的图形,另外在显示的形式上变化相对较多,如利用OLED液晶显示器可以实现显示内容的左右平移、闪退以及飘入等复杂的显示方式。在软件编码上,OLED液晶显示器为常见显示模块,虽然在软件指令上较为复杂但为广大单片机开发者使用,OLED显示流程图如图4.3所示:
21
开始系统初始化SCL拉低SDA拉高地址+1数据+1N数据是否写完刷新液晶显示结束
图4.3 OLED显示
部分代码如下:
22
4.5 按键接口程序设计
对于按键我们可以通过软件方法来解决抖动问题,通过时间延迟,在信号得到稳定之后对按键进行观测,如果在时间延迟之后,依然有按键按一下就是工作结束,反而只如果延时之后一依旧走抖动现象,就证明是按键抖动出现问题,我们可以从图4.4来对按键程序的框图进行一定程度上的了解。
23
开始按键扫描N是否有按键NY去抖动是否有按键送数据给单片机 图4.4 按键检测
部分代码如下:
24
4.6 温度检测程序设计
在此通过DS18B20进行温度数据的读取,该芯片为单线控制芯片,按照固定时序对其直接进行温度的读取就可以知道温度大小,如图4.5所示。
开始跳过RAM指令温度转换指令发送匹配指令读取转换后温度结束 图4.5 温度读取流程图
25
部分代码如下:
4.7 ADXL345陀螺仪程序设计
本次采用的是ADXL345传感器,其可以检测X,Y,Z三个方向的加速度值,系统上电后,单片机根据ADXL345的协议要求,输出相应的地址去读取这三个方向的加速度数据来进行判定。如图4.6所示。
26
第四章 软件设计 开始初始化接口发送地址读取X轴数据读取Y轴数据读取Z轴数据结束图4.6 加速度传感器流程图
部分代码如下:
27
第四章 软件设计
4.8 GSM程序设计
本次采用的是SIM800C的GSM模块,其在进行短信控制时采用的是串口方式,因此本质上就是通过串口进行命令的发送。其流程如图4.7所示:
开始串口初始化设置GSM模式检测要发送的信息通过GSM发送结束 图4.7 GSM流程图
29
第四章 软件设计 部分代码如下:
4.9 GPS程序设计
本次采用的是VK2828U7G5LF GPS模块,单片机在控制时就是通过串口去接收数据,然后将坐标信息解码得到。其流程如图4.8所示:
30
第四章 软件设计 开始串口初始化接收串口信息解析经纬度信息送到控制器结束图4.8 GPS流程图
部分代码如下:
31
4.10 心率程序设计
本次采用的心率传感器是模拟输出的,因此采用了stm32单片机的自带的AD去检测来判定心率。其流程如图4.9所示:
开始AD初始化检测心率电压算法处理得到心率值结束图4.9 心率检测流程图
32
第五章 系统调试及演示 部分代码如下:
5 系统调试及演示
5.1 硬件检测
在完成系统的硬件电路设计后,就需要购买相应的元器件进行实物的制作,在制作的过程中,除了器件本身还需要相应的配套工具。如恒温电烙铁,焊锡丝,松香,镊子等等。对于电路的焊接有手工焊接和自动焊接两种方式,考虑到实际
33
第五章 系统调试及演示 情况本次选择手工采用电烙铁进行焊接的方式。为了保证整个作品在焊接完后不会出现虚焊,漏焊,焊接短路等问题需要注意以下方面:一要对整个电路板和相应的器件的焊接部位进行全部的清洗以防止其本身受到环境因素的影响而生锈或者有油污影响了焊接后的导电效果,同时需要保证烙铁先碰引脚进行加热然后再加入焊丝,同时要注意焊某个引脚的时候不能影响到其他引脚,以免短路。二要注意焊接的温度,由于每种器件都有其相应的耐温,温度太高容易造成器件的损坏,且焊接造成的损坏很难观察出来,会给后续调试带来非常复杂的问题,因为通常很少会去怀疑器件因焊接而损坏了。正常来说,恒温烙铁温度设置在300摄氏度就可以完成焊接工作,当然遇到铜皮大或者散热好的则需要相应的提高温度。三则是需要在完成焊接工作后对整个系统的焊点进行检测,看是否有漏焊,如果有则要进行补焊,同时由于焊接的过程中会有松香等物质,所以电路板会变的比较脏,因此还需要再次对电路板进行清洗。最后进行综合性的检查操作,这一方法主要适用于利用单片机作为整体系统开发的情况。而在动态调试的具体情况中,是在静态调试的基础之上,查看每个器件正常工作的具体状态,能够满足系统开发的具体功能的实现,保障系统整体性能良好运行,测试正常。
5.2 软件调试
在对老人防跌倒报警监护系统的设计进行软件调试时,其主要过程如下: (1)在KEIL软件上完成各个模块的程序编写,并解决各个报错和警告,完成程序的编译;
(2)将编译好的程序生成的hex文件通过STC的下载设备下载到STM32F03C8T6单片机中;
(3)在完成程序下载后,首先观察OLED的状况,看参数显示之类是否正常,然后再看其他功能;
(4)接着通过按键,对相关参数进行设置,对各个功能进行测试; (5)当出现功能不对时,则复查程序进行修改,重复2步骤,直到正确为止。
在对软件进行调试的过程中,首先需要做的是在软件上对系统内部应用到的主程序以及各项子功能模块的程序进行相对应的调试工作,并在软件上进行完成
34
第五章 系统调试及演示 调试,在运行和调试的过程中,需要考虑到运行和调试各程序语法的准确性,同时保证程序逻辑的可实行性,一旦发生调试出错的情况,需要及时对相对应的代码语句进行修改,避免输入以及逻辑的错误出现。然后需要将已经经过调试的可以正常运行的主程序以及各个子模块程序烧写到单片机内部,在调试好程序之后,通过观察液晶显示的具体情况,查看显示是否正确,然后利用单片机上的按键查看按键与单片机是否连接正常,可实现正常通信。
在软件调试过程中,利用KEIL软件内部的仿真运行工具,在相应的系统代码编辑完成之后就可以完成相应的逻辑操作。在软件仿真页面中,首先点击菜单栏中的调试按键,然后进行仿真的开始,系统相应进入仿真环境,如图5.1所示。
图5.1 调试一
在系统菜单栏中,选择窗口,就可以实现对所要观察的数据进行相应的仿真监控,如图5.2所示。
35
第五章 系统调试及演示 图5.2 调试二
在仿真系统的敞口中,可以利用输入的数据量的不同,来进行数据变量的观察,如图5.3所示。
图5.3 调试三
仿真系统在系统工具栏中,为用户提供较多的仿真运行调试工具,可以实现仿真过程中系统所需的单步运行、跳出循环、运行,停止,启动等功能的实现,为系统仿真过程中提供便于系统调试的按钮。
图5.4 调试四
36
第五章 系统调试及演示
图5.5 调试四
在软件编程仿真的过程中,可以保证系统设计的可实现性,在此基础之上,将程序HEX代码烧录至stm32单片机中,完成整个系统设计工作。
5.3 系统演示
(1)系统设备上电,硬件初始化,SIM800C模块、GPS VK2828U7G5LF模块正常获取到信号。如图5.6、图5.7所示:
图5.6 SIM800C模块 图5.7 GPS模块
(2)对老人进行体温测量。如图5.8所示:
图5.8 体温测量
37
(3)对老人进行心率测量。如图5.9所示:
图5.9 心率测量
(4)当老人携带该系统跌倒后,蜂鸣器立即发出报警,超过15秒未站立时,将老人跌倒的信息以及实时位置信息发送到监护人手机。如图5.10所示:
图5.10 报警信息
(5)通过手机编辑“位置信息”到系统,获取实时位置信息。如图5.11所示:
图5.11 位置信息
38
(6)通过手机编辑“基本信息”到系统,获取老人体温,心率信息。如图5.12所示:
图5.12 基本信息
结 论
在本次老人防跌倒报警监护系统的设计过程中,通过硬件以及软件两个方面进行检测系统的设计工作,在硬件设计过程中,采用STM32单片机作为主控制器核心,能够协调各个模块进行实际的监测任务。同时在系统各项功能的实现上,采用PULSE SENSOR心率传感器来对用户心率进行检测,利用温度检测模块来进行用户体温检测操作,利用ADXL345陀螺仪传感器来用户的身体状态进行辨别。通过各个模块的监测工作,实现对用户的心率、体温、是否摔倒进行监测,并且通过GSM模块进行数据信息传输至手机端,便于用于采取相应的措施保障自身健康安全的状态。在软件设计中,通过对各个流程的工作进行程序的编写,在仿真中实现对系统功能的设计操作,通过最后的实物制作与调试工作,整体设计符合预期设计的基本目标,能够实现对用户心率、体温等实际数据的监测工作,在实际应用中具有的一定的推广意义。但是由于个人理论知识的局限性,在检测精度、报警的及时性都存在一定的问题,在日后的工作学习中,我会不断加强理论知识学习,完善整体设计,实现系统功能的多元化以及智能化。
参考文献
[1] 曹赟 周宇 徐寅林. 加速度传感器在步态信号采集系统中的应用[J]. 信息化研究, 2019,35(9).
[2] 钱朋安,葛运建,唐毅等.加速度计在人体运动检测中的应用[J].计算机技术与应用进展,2014:632—636.
[3] 陈义华.基于加速度传感器的定位系统研究[D].福建:厦门大学,2016.
39
[4] 孟维国.三轴加速度计ADXL345的特点及其应用[J].电子设计工程,2017(2):47-50.
[5] 贾朱红,张晓冬.基于I²C总线的单主多从单片机之问的通信[J].微计算机信息,2019,25(3-2):101.
[6] 高吉祥.模拟电子线路设计[M].北京:北京电子工业出版社, 2017. [7] 陈尔绍.电子控制电路实例[M].北京:电子工业出版社,2014. [8] 王彦朋.大学生电子设计与应用[M].北京:中国电力出版社,2017. [9] 屈翠香,李刚.具有数字信号输出的三轴加速度传感器ADXL345[J].国外电子元器件,2019(8):8—12.
[10] 彭勃,何晓平,苏伟.微机械静电伺服加速度计[J].中国惯性技术学报,2010,8(1):63—66.
[11] 刘宗林,李圣怡,吴学忠.新型三轴加速度计[J].传感器技术学报,2014,17(3):488—492.
[12] 赵负图.传感器集成电路手册,第一版,化学工业出版社,2014,590~591. [13] 马建国.电子系统设计.北京:高等教育出版社,2014.1. [14] 谭浩强.C程序设计(第三版).北京:清华大学出版社,2015.7. [15] 王建校.51系列单片机及C51程序设计[M].北京:科学出版社,2012. [16] 郑人杰.计算机软件测试技术.北京:清华大学出版社,2014. [17] 胡汉才.单片机原理及系统设计.北京:清华大学出版社,2016. [18] Silicon Storage Technology Inc, SST39VF800A Datasheet.2017 . [19] 张俊谟.单片机中级教程原理与应用. 北京航空航天大学出版社.2015.
40
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务