毕业设计:基于STM32单片机的蓝牙智能手环系统

本智能手环系统包括以下:

1、测心率功能

2、测提问功能

3、步数记录功能:步数保存 flash 中,掉电不丢失,0:00自动清零,也可按键清零

4、OLED显示功能:以上三个监测的状态显示在OLED屏上

5、手机端显示功能:使用蓝牙传输以上三个监测状态,在手机app显示

6、RTC万年历功能:OLED屏幕显示万年历,且支持离线使用按键修改时间

主要硬件采购链接:

stm最小系统板 https://m.tb.cn/h.fNy7pcW?tk=XKLr2f8YwWD 第三个套餐
BT06蓝牙模块 蓝牙3.0模块 SPP透传 兼容HC-05/06从机 JDY-31蓝牙模块-tmall.com天猫
ADXL345加速度传感器模块 ADXL345 ADXL335数字式 加速度倾斜度角度传感器模块感应 送资料-tmall.com天猫 第二个套餐
Pulse Sensor心率传感器 1pcs pulsesensor pulse heart rate sensor open source hardwar-淘宝网 (taobao.com) 第一个套餐
DS18B20温度传感器 DS18B20 芯片 可编程数字温度器/温度传感器 TO-92 直插 全新-淘宝网 (taobao.com)
IIC 4针OLED 0.96寸OLED显示屏 SSD1306驱动液晶屏4/7针 IIC/SPI接口白黄蓝色-tmall.com天猫 第三个套餐

这些购买链接仅是给大家一些参考,购物时需谨慎挑选。

一、实物展示

 二、原理讲解

1、测心率功能

        心率指的是一分钟内的心跳次数,得到心率最笨的方法就是计时一分钟后数有多少次脉搏。但这样的话每次测心率都要等上个一分钟才有一次结果,效率极低。另外一种方法是,测量相邻两次脉搏的时间间隔,再用一分钟除以这个间隔得出心率。这样的好处是可以实时计算脉搏,效率高。由此引出了IBI 和 BPM 两个值的概念:IBI: 相邻两次脉搏的时间间隔(单位:ms) 

                                                                     BPM:心率,一分钟内的心跳次数

 则BPM = 60 / IBI

下面就是如何检测心率了:

首要目标就是识别一个脉搏信号(因为只有找到脉搏信号才能计算时间)

                                                                 ⬇

通过检测波峰来识别脉搏

                           ⬇(如何寻找波峰呢)

设置一个阈值来判断波峰

(当模拟信号超过所设定的阈值时,则认为到达了波峰)

                                                               ⬇(阈值该设为多少合适?可以为定值嘛?)

阈值不能为定值,需设置动态阈值

                                                                          ⬇(多次采集,找最大值、最小值,进行相关计算)

动态计算阈值

        至于为什么阈值不可以设置为定值,需要设置动态阈值?因为人在不同时间的脉搏强度是不同的,不能采用一个固定的值去衡量,因此需要计算出当前时刻合适的阈值,如下图所示。

 因此,脉搏信号的测量分两步走:①先计算出参考动态阈值

                                                        ②用动态阈值判断峰值,从而寻找出波峰

找到脉搏的波形后,计算相邻两次的时间

        本设计采用特征点的方法,定义信号上升到振幅的一半作为特征点,如此测量两个特征点之间的时间间隔就可得到相邻两次脉冲的时间间隔。

 如图所示,相邻两特征点间的时间间隔即为IBI,然后用60/IBI就是心率。

2、测步数

对于步数的检测,大多数设计采用压力传感器,而本设计采用加速度传感器,以“加速度”为相关参数,更具有研究意义。

        如图所示,ADXL345加速度传感器可以检测三轴方向上的加速度,在可用于分析跑步或步行的特征当中,我们选择“加速度”作为相关参数。个体(及其相关轴)的运动包括三个分量,分别是前向(“滚动”)、竖向(“偏航”)和侧向(“俯仰”)。

        如图,让我们考虑步行的特性。一个步伐,我们将其定义为单位步行周期。行走时左脚(阴影的)会产生相应的加速度,加速、减速往复,并且会在某点有一个峰值。经过容压变换器、增益放大、滤波器和温度补偿后得到类似于正弦波形的电压信号输出。

 如图所示:得到三个方向的波形,但Y轴波形更强烈,说明是沿着Y轴前进。

波形的上升沿代表加速度上升,也就是人迈腿;波形的下降沿代表加速度下降,也就是人收腿。

3、OLED屏显示

 本项目开发显示功能,屏幕具有两种显示:其一显示万年历,其二显示心率、步数、体温,两种显示使用按键K0切换。

        ①显示万年历:通过单击K0切换到时间界面,当时间不对时,可点击K1按键进入时间设置界面,重复按下K1时顺序设置年、月、日、时、分(也就是通过按键K1设置不同单位的时间,屏幕中有箭头>,指示当前正在设置的那个单位)然后通过K2、K3按键进行时间修改。

        ②显示身体状态:当传感器检测到体温、步数、心率等指标发生变化时,进行实时更新,且每天的0:00时会清零步数,也可使用K2按键手动清零。
 

                            

     身体状况显示界面                                    实时时钟                                        时间设置界面

 4、APP查看数据

 本设计是采用蓝牙传输数据,关于蓝牙的介绍可观看之前的一篇文章HC-05(ZS-040)蓝牙模块使用详情(手机与蓝牙模块、手机蓝牙控制单片机、一对蓝牙之间的通信)_最穷不过要饭、不死总会出头的博客-CSDN博客_zs040蓝牙模块使用方法

 手机接受端为一个蓝牙app,可以使用商城里一些,也可以使用AppInventor开发,采用图形化编程,非常简单,自己设计还能掌握新的知识,趁着年轻多学点东西!!!!!!加油!!!!!

关于AppInventor的使用,大家可以关注一个云平台“巴法云平台”,上面有详细的介绍,也可关注b站的一个博主“老巫婆的程序世界”

5、体温检测

本设计选择的18b20,较为简单,不再赘述。

完整工程链接:https://item.taobao.com/item.htm?spm=a1z10.1-c.w137644-24450682667.43.7aa61b42erNczw&id=677159156170

  欢迎大家指正交流,有空可以一起讨论代码啊。

制作不易,感谢大家支持,感谢!!!!!!

  ————–一个正在努力的人

感觉未分享清楚、有疑惑

咨询问题、了解具体内容、需要帮助者 可私信联系

物联沃分享整理
物联沃-IOTWORD物联网 » 毕业设计:基于STM32单片机的蓝牙智能手环系统

发表评论