APP下载

基于 STM32单片机的智能手环和脉搏心率计步器的体温检测设计

2022-06-09赵利国李志先韩哲严祥帅

计算机应用文摘·触控 2022年9期
关键词:步数编程心率

赵利国 李志先 韩哲 严祥帅

摘―要:文章设计的系统由STM32F103C8T6芯片以及ADXL345模块、DS18B20温度检测模块,心率检测模块,LCD1602液晶显示模块构成。作为核心电路,STM21F103C8T6单片机在电路中起着总控作用;ADXL345模块通过重力加速度来检测人体当前倾斜状态,以记录步数,计算行走速度;DS18B20温度检测模块可以检测人体温度,并将人体温度模拟量转换为数字量发送给单片机;心率检测模块可以检测人体当前的心率数值;LCD1602液晶显示模块则将所有的检测数据显示在液晶屏幕上。

关键词:单片机;STM32F103C8T6;传感器﹔手环;温度

中图法分类号:TP368文献标识码:A

Design of body temperature detection of intelligent bracelet pulse heart ratepedometer based on STM32 single chip microcomputer

ZHAO Liguo,LI Zhixian,HAN Zhe,YAN Xiangshuai

(School of Computer and Information Engincering,Luoyang Institute of Science and'Technology,L.uoyang,Henan 471000,China)

Abstract:This design consists of STM32F103C8T6 chip and ADXL345 module,DS18B20temperature detection module,heart rate detection module,LCD1602 liquid crystal display module.As the core circuit,the STM21F103C8T6 single-chip microcomputer plays a general control role inthe circuit,the ADXL345 module detects the current tilt state of the human body through theacceleration of gravity to record the number of steps and calculate the walking speed,the DS18B20temperature detection module can detect the human body temperature and simulate the human bodytemperature. The quantity is converted into digital quantity and sent to the microcontroller,the heartrate detection module can detect the current heart rate value of the human body,the LCD1602 liquidcrystal display module displays all the detection data on the LCD screen.

Key words:single chip microcomputer,STM32F103C8T6,sensor,bracelet,temperature

1  前言

21世纪的人类对自己的健康状态愈加关注,对电子产品的要求也越来越高。在智能手环中,人们更加倾向于选择可以实时监测运动状态和心率状态的产品。基于此,本设计在已有的计步器的基础上加入了对用户心率实时监测的功能,兼容了对步数、心率以及体温的实时监测,并做出了一款以 STM32单片机为核心的电子设备。本设计由 STM32F103C8T6芯片以及 ADXL345模块、DS18B20温度检测模块、心率检测模块、LCD1602液晶显示模块构成。通过本设计,可以满足用户的心率、步数、温度的实时监测需求[1 ]。

随着生活的不断改善,人们对自己的身体健康越来越重视。智能计步器可以作为检测人体运动状态的一种装置,可以记录人们当天的运动步数和运动里程数据,其使用起来也非常方便,同时计算出人体本日运动所消耗的能量,因此越来越多的人选择该装置来检测身体状态、分析人体的健康状态,从而制定出合理的运动方案。如今,可佩戴式电子计步检测装置愈发流行,同时又有大量的市场需求未得到满足。早期的计步器都是利用钟摆原理来记录运动者的步数,其中配有一个可以左右晃的铁块来碰撞挡板,利用计数器来记录击打挡板次数,从而完成了简单的计步。然而,计步器只能单纯记录人的运动步数,对于运动时的心率情况一概不知。此前,记录人体心率的设备主要是心电机,而其主要应用于医疗机构,专门用于检测心率的仪器较少。但是,随着电子科技的进步和发展,心率检测装置也将越来越普及。未来,心率检测装置将会朝着更加广泛、更高精度以及更加轻便的方向发展。基于此,本设计在已有的计步器中加入心率检测装置,研究了智能手环用于实时检测人的运动状态、心率以及体温,并且根据相关数据来分析人体的健康状态,以制定每日运动计划。

2  系统功能及体系结构

2.1  系统功能

STM32芯片在單片机中起着总控作用,用于处理和分析接收到的信号,并向每个模块发送相应的信息;ADXL345模块用来检测人体当前倾斜状态,并记录走路步数和计算行走速度;DS18B20温度检测模块用来检测人体的当前温度;ST188模块用来检测人体当前的心率;LCD1602模块则将所有的检测数据显示在液晶屏幕上。

2.2  系统总体架构

本系统具体架构框图如图1 所示。

2.3  电路设计

(1)STM32单片机核心电路设计

本设计选用的 STM32单片机易于上手,在各领域都有广泛的应用,拥有极大的研究意义和学习价值。

(2)ST188脉搏心率传感器模块设计

作为一款红外光电传感器,ST188在许多场合发挥着重要作用。ST188红外传感器的工作原理与大多数红外传感器一样,即利用光敏三极管收到的红外光信号来实现检测[2]。光电传感器可以分为两类,即对射型光电传感器和反射型光电传感器。而本设计采用的 ST188红外传感器属于反射型光电传感器。该传感器拥有两个 LED ,即发射红外光的 LED 和接收光敏信号的红外三极管。工作时,发光 LED 发射红外光,接收三极管不发光,仅当传感器前有障碍物阻挡时,光敏三极管才能收到反射光线。作为双向运算放大器,LM358拥有两个互不干扰、高放大倍数且自动弥补缺陷的高性能放大器。

本设计采用的心率检测模块是 ST188红外传感器模块和 LM358模块。首先,由 ST188反射红外光电传感器的发光 LED 灯工作,将红外光照射到人的血管内,由于人的脉搏周期性跳动,人体血管内的充容量也会发生规律性变化,因此反射出来的光强会随之改变。光电三极管接收到不同强度的红外反射光后,将接收到的变化信号转换为连续变化的电压信号。电压信号经过耦合并通过低通滤波之后被传送到1/2LM358运算放大器构成的反向放大器,再放大约300倍。然后,输出到另外的1/2LM358所构成的比较放大器,再与由电阻分压建立的同相端的比较基准相比较。最后,由比较结果输出矩形脉冲[3]。

(3)DS18B20温度传感器模块设计

作为一种可以输出数字信号的温度传感器, DS18B20温度传感器对硬件的要求不太高,同时其较强的抗干扰能力和可得到较精准的测量结果受到了广大使用者的青睐。DS18B20的使用相当方便,在与单片机一起工作时不需要多接电源线,使用数据线便可完成供电。与传统的温度传感器相比,DS18B20可以将温度转化为数字并从数据线中读出。DS18B20可以很好地测量出0.5℃的温差变化,同时温度检测量程为-10℃~ 85℃。基于以上优点,DS18B20 自发布以后就被应用于各种场景,如恒温控制系统、消费类产品、环境温度检测等。

3  系统软件设计

3.1  开发环境

因为编程的计算量较大,所以 STM32系列单片使用 C 语言比汇编语言有更多的好处:(1)拥有诸多库和诸多系统自动生成的函数以及用户定义函数;(2) 没有烦琐的指令集,编译器会自动完成对寄存器的分配;(3)编写简单,与高级汇编语言相比,程序开发流程更短、调试时间更少;(4) C 语言是一门结构性很强的设计语言,编写者可以很好地联想到一个模块所需要满足的要求,其在后期的优化中十分便利;(5) C 语言编译器优化了代码的编译速度,其编译速度远高于其他的汇编语言。

3.2  单片机程序开发环境

Keil uVision5是由 ARM 公司发布的一款软件,拥有编辑、编译、连接和调试等功能。Keil uVision5完美兼容 Windows 操作系统,拥有完整的软件开发界面,同时采用 C 语言編写,在功能和结构以及后期维护方面拥有很大的优势,便于使用者进行环境开发。Keil uVision5与 Keil uVision4 IDE 相比,强化了对 Cortex⁃ M 控制器的开发,并且 Keil5代码生成效率非常高,并对原有的开发形式和界面做了相应的优化处理。

(1)流程图描述

本系统设计划分为不同的模块,每个模块分开进行设计,最终将所有的模块整合到一起,形成一个完整的系统。该系统首先初始化系统各个模块以及初始化定时器和各个串口,然后判断定时读取以及检测角度是否到时,如果是,则进行温度采集和步数采集。接着判断单位时间心率数据采集是否完成,如果完成,则进行心率计算。最终进行 LCD 液晶屏幕更新显示。

(2)各模块程序流程描述

LCD1602模块可进行各种数据的显示,其在工作时先对液晶屏幕进行初始化。当单片机将信号发送给 LCD1602后,LCD1602进行写数据和写地址的操作; DS18B20温度检测模块进行温度检测,首先进行初始 DS18B20,接着读取 DS18B20的数据,然后将数据写入 DS18B20,最后将温度读给单片机;心率采集模块进行心率采集,该模块首先初始化,然后进行滤波防止抖动,接着记录两次事件的间隔,如果记录超过四次则进行滤波处理,最后计算四次记录的平均心率。

3.3  程序烧录

制作烧录程序最常用的便是FlyMcu,其使程序的烧录非常简便。作为一款单片机在线编程软件,其在电路编程和应用编程中有着很大的使用价值,同时拥有编程后执行、校验、连续烧录模式等各种功能。程序烧录前,需要下载驱动模块 PL203,保证计算机以及电路设计无误。具体烧录步骤为:首先打开FlyMcu,选择菜单栏上的 STMISP 选项,接着选择 USB 转串口 COMPORT,然后将程序编译生成的 HEX 文件导入,最后设置相应的烧录方式,点击开始编程。

4  系统调试

在对系统进行调试之前,在硬件方面,必须检查焊接是否正常。比如,是否出现明显的断裂、虚焊、脱焊、器件损坏以及正负极是否存在问题等。同时,用万用表测量电源的正负极是否存在问题,如果存在问题,需要用万用表将每一个模块进行测试,以确保焊接不再出现任何问题。在软件方面,首先是检查调试程序是否存在问题,然后检查调试程序是否能实现所具备的功能,如果出现问题则需要进行解决,直到满足设计要求。

(1)系统程序调试

软件调试步骤如下:首先打开 Keil uVision5软件,然后在菜单栏点击“Project”选项,接着点击“New uVision Project”,选择保存位置并设置项目名称。此时,选择  STM 系列芯片的  STM32F103C8,点击“Source Group”,向其 add 所需要的常用文档,或者直接编辑一个新的文档,完成所有的模块设计即可。然后进行编译,点击“Translate”和“Build”,在输出窗口会看到“编译完成”和“ HEX”文件生成的信息,如果为“未生成”错误则检查程序,重新编写。

(2)硬件测试

对硬件进行测试是整个设计的最后一步。在进行硬件测试时,万用表、电源是不可或缺的装备。硬件检测就是为了检查系统是否可以正常工作,检测分为静态检测和动态检测。

在动态检测前,先进行静态检测。首先是用肉眼观察,一般可以直接看出焊接的大问题,查看器件引脚是否损坏。然后用万用表检查电源是否能够连通,如果不能连通,需要仔细检测每个模块是否可以通电。前两步如果没有问题,便可以进行上电测试,逐个检查模块是否可以正常工作。静态检测以后,再进行动态检测。动态检测就是查看每个器件是否正常工作,设计要求是否满足和功能是否齐全。

(3)心率检测模块测试

将右手中指平稳放在 ST188红外反射模块上,若灯闪烁,则表示开始测量心率。手指放置几秒后,在 LCD 液晶顯示屏幕上输出测量的心率值。

(4)DS18B20温度检测模块测试

用手捏住 DS18B20,几秒后在 LCD1602屏幕上显示数据。

5  结论

基于 STM32单片机的系统开发设计可让相关人员更加熟悉单片机的开发流程。在硬件方面,可使其对电路布局有了更深的理解;可使其在软件编程方面,编程思路更加清晰。

参考文献:

[1] 曾非一.嵌入式软件开发技术研究—MPC860目标机底层软件的实现[D].四川:电子科技大学,2014.

[2] 赵华峰.LCD1602模块的汉字显示研究[ J].现代信息科技,2020,4(17):35⁃37.

[3] 纪峰,徐壮,郝静.基于单片机 PIC18F87J11串行通信模块驱动 LCD1602的设计与实现[J].电子世界,2019,2(13):145⁃146.

作者简介:

赵利国(1981— ),硕士,讲师,研究方向:信号处理。

猜你喜欢

步数编程心率
心率多少才健康
楚国的探索之旅
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
离心率
离心率相关问题
纺织机上诞生的编程
微信运动步数识人指南
探索圆锥曲线离心率的求解