STM32基础之上的蓝牙智能手环设计详解:程序、原理图与PCB论文解析
基于 STM32 的蓝牙智能手环设计
摘要
本文设计了一款基于 STM32F103C8T6 单片机的蓝牙智能手环。该手环具备蓝牙 APP 无线数据通讯功能,通过 OLED 显示屏实时显示心率、体温、步数以及日期等信息,同时支持通过蓝牙 APP 进行远程显示。系统主要由 STM32F103C8T6 单片机最小系统、ADXL345 三轴加速度模块、RTC 时钟模块、DS18B20 温度传感器模块、PulseSensor 心率采集模块、BT06 蓝牙模块、OLED 显示模块和键盘模块构成。本文详细介绍了各模块的功能、硬件设计、软件编程以及系统调试过程。
关键词:STM32F103C8T6;蓝牙智能手环;OLED 显示;心率监测;体温测量;步数统计
Abstract
This paper designs a Bluetooth smart bracelet based on STM32F103C8T6 microcontroller. The bracelet features wireless data communication via Bluetooth APP, real-time display of heart rate, body temperature, step count, and date information on an OLED screen, and supports remote display through a Bluetooth APP. The system is mainly composed of STM32F103C8T6 microcontroller minimum system, ADXL345 triaxial acceleration module, RTC clock module, DS18B20 temperature sensor module, PulseSensor heart rate acquisition module, BT06 Bluetooth module, OLED display module, and keyboard module. This paper provides a detailed introduction to the functions, hardware design, software programming, and system debugging process of each module.
Keywords: STM32F103C8T6; Bluetooth smart bracelet; OLED display; heart rate monitoring; body temperature measurement; step counting
目录
一、引言
(一)研究背景与意义
(二)国内外研究现状
(三)论文研究内容
二、系统总体设计
(一)系统需求分析
(二)系统总体架构
(三)模块功能划分
三、硬件设计
(一)STM32F103C8T6 单片机最小系统
(二)ADXL345 三轴加速度模块
(三)RTC 时钟模块
(四)DS18B20 温度传感器模块
(五)PulseSensor 心率采集模块
(六)BT06 蓝牙模块
(七)OLED 显示模块
(八)键盘模块
四、软件设计
(一)开发环境介绍
(二)主程序设计
(三)各模块软件实现
- 计步功能实现
- 心率监测功能实现
- 温度测量功能实现
- OLED 显示功能实现
- 蓝牙通讯功能实现
- 按键功能实现
五、系统调试与测试
(一)硬件调试
(二)软件调试
(三)系统联调
(四)测试结果分析
六、结论与展望
(一)研究结论
(二)未来展望
一、引言
(一)研究背景与意义
随着智能穿戴设备的快速发展,智能手环作为一种集健康监测、运动追踪、信息提醒等功能于一体的便携式设备,受到越来越多消费者的青睐。智能手环不仅能够实时监测用户的生理指标,如心率、体温等,还能记录用户的运动数据,如步数、卡路里消耗等,并通过蓝牙等无线通讯方式与手机 APP 进行数据同步,为用户提供更加便捷、全面的健康管理服务。
基于 STM32 的蓝牙智能手环设计,旨在利用 STM32F103C8T6 单片机的强大处理能力和丰富的外设接口,结合多种传感器模块,实现一款功能全面、性能稳定的智能手环。该手环不仅能够满足用户对健康监测和运动追踪的需求,还能通过蓝牙 APP 进行远程数据查看和控制,提高用户的使用体验。
(二)国内外研究现状
目前,国内外市场上已经涌现出众多智能手环品牌和产品,如小米手环、华为手环、Fitbit 等。这些产品在功能、性能、外观设计等方面各有特色,但大多都具备心率监测、步数统计、睡眠监测等基本功能。同时,随着物联网技术的不断发展,智能手环也逐渐向智能化、个性化、场景化方向发展,如加入 GPS 定位、NFC 支付、语音助手等功能。
在学术研究方面,国内外学者对智能手环的相关技术进行了深入研究。例如,在传感器技术方面,研究了如何提高心率监测、体温测量等生理指标的准确性;在无线通讯技术方面,研究了如何降低蓝牙等无线通讯方式的功耗和延迟;在数据处理方面,研究了如何对采集到的海量数据进行有效分析和挖掘,为用户提供更加精准的健康管理建议。
(三)论文研究内容
本文主要研究基于 STM32F103C8T6 单片机的蓝牙智能手环设计。具体研究内容包括:
- 系统总体设计:根据用户需求分析,确定系统的总体架构和模块功能划分。
- 硬件设计:详细介绍各硬件模块的选型、电路设计以及连接方式。
- 软件设计:采用标准库函数编写程序,实现各模块的功能逻辑和数据处理。
- 系统调试与测试:对硬件电路和软件程序进行调试和测试,确保系统能够正常运行并满足设计要求。
二、系统总体设计
(一)系统需求分析
根据市场调研和用户需求分析,本文设计的蓝牙智能手环应具备以下功能:
- 心率监测:能够实时监测用户的心率,并在 OLED 显示屏上显示。
- 体温测量:能够测量用户的体温,并在 OLED 显示屏上显示。
- 步数统计:能够统计用户的步数,并在 OLED 显示屏上显示。
- 日期显示:能够显示当前的日期和时间。
- 蓝牙通讯:能够通过蓝牙模块与手机 APP 进行无线数据通讯,实现数据的远程查看和控制。
- 按键操作:提供按键用于调整日期和时间、清除步数以及切换信息显示。
- 步数清零功能:每天 00:00 自动清除前一天的步数,也可通过按键手动清除。
(二)系统总体架构
系统总体架构如图 1 所示。系统以 STM32F103C8T6 单片机为核心控制器,通过 I2C 接口连接 ADXL345 三轴加速度模块、DS18B20 温度传感器模块和 OLED 显示模块,通过 UART 接口连接 BT06 蓝牙模块,通过 ADC 接口连接 PulseSensor 心率采集模块,同时提供键盘模块用于用户操作。
<img src="https://example.com/system_architecture.png" />
图 1 系统总体架构图
(三)模块功能划分
根据系统需求分析,将系统划分为以下几个模块:
- STM32F103C8T6 单片机最小系统:负责整个系统的协调工作,包括数据采集、处理、显示和通讯等。
- ADXL345 三轴加速度模块:用于实现计步功能,通过检测用户的运动状态来统计步数。
- RTC 时钟模块:为系统提供准确的时间信息,包括年、月、日、时、分、秒等。
- DS18B20 温度传感器模块:用于测量用户的体温,并将测量结果传输给单片机进行处理和显示。
- PulseSensor 心率采集模块:用于采集用户的心率信号,并通过 ADC 接口将模拟信号转换为数字信号传输给单片机。
- BT06 蓝牙模块:用于实现与手机 APP 的无线数据通讯,将手环采集到的数据传输给手机 APP 进行显示和控制。
- OLED 显示模块:用于显示心率、体温、步数、日期和时间等信息。
- 键盘模块:提供按键用于用户操作,如调整日期和时间、清除步数以及切换信息显示等。
三、硬件设计
(一)STM32F103C8T6 单片机最小系统
STM32F103C8T6 单片机最小系统是以 STM32F103C8T6 微控制器为核心,包含使该芯片能够正常工作的最基本电路的电路板。其核心芯片基于 ARM Cortex-M3 内核,最高工作频率可达 72MHz,拥有 64KB 闪存和 20KB SRAM,具备丰富的外设接口,如多个串口、SPI 接口、I2C 接口等,能满足多种不同类型的应用需求。
最小系统板通常包含电源电路、时钟电路、复位电路、调试接口和 BOOT 选择电路等。电源电路为芯片提供稳定的工作电压,一般采用稳压芯片(如 AMS1117-3.3)将外部输入的电压转换为芯片所需的 3.3V 电压,并配备滤波电容去除电源中的杂波和干扰。时钟电路为芯片提供工作时钟信号,STM32F103C8T6 需要至少两个时钟源,一个是高速外部时钟(HSE),通常使用 8MHz 的晶振,用于系统主时钟;另一个是低速外部时钟(LSE),一般采用 32.768kHz 的晶振,主要为实时时钟(RTC)提供时钟信号。复位电路用于将芯片恢复到初始状态,常见的复位电路有上电复位和手动复位两种方式。调试接口提供与外部调试工具(如 ST-Link、J-Link 等)连接的接口,用于程序的下载和调试,常用的调试接口是 SWD(Serial Wire Debug)接口。BOOT 选择电路通过设置 BOOT 引脚的电平状态,可以选择芯片的启动模式。
(二)ADXL345 三轴加速度模块
ADXL345 是一种小型、低功耗、完整的 3 轴 MEMS 加速度计,拥有两个 I2C 和 SPI 接口模块。它板载具有 3.3V 稳压器和电平转换器,可轻松与 Arduino 等 5V 微控制器连接使用。ADXL345 的测量范围为±16g,能够检测 X、Y、Z 三个轴向上的加速度变化。
在本设计中,ADXL345 通过 I2C 接口与 STM32F103C8T6 单片机连接。单片机通过读取 ADXL345 的加速度数据,判断用户的运动状态,从而实现计步功能。当检测到用户的加速度变化超过一定阈值时,认为用户迈出了一步,并累加步数。
(三)RTC 时钟模块
RTC(实时时钟)模块为系统提供了可靠的时间基准。STM32 系列微控制器内置的 RTC 模块是一种能够独立运行的时钟模块,即使在微控制器进入低功耗模式时也能保持时间的准确性。
RTC 模块可以使用外部低速时钟源(LSE)或内部低速时钟源(LSI)。LSE 通常是一个 32.768kHz 的石英晶体振荡器,具有较高的精度。LSI 是一个内部的低功耗 RC 振荡器,精度相对较低,但在没有外部晶体的情况下可以作为备用时钟源。时钟源经过分频后为 RTC 提供计时脉冲。
RTC 模块包含一个可编程的预分频器和一个 32 位的计数器。预分频器用于将时钟源的频率分频到合适的频率,以满足不同的计时需求。计数器则根据预分频器输出的脉冲进行计数,从而实现时间的累加。通过读取计数器的值,可以获取当前的时间信息。
在本设计中,RTC 模块用于为系统提供准确的时间信息,包括年、月、日、时、分、秒等。同时,RTC 模块还设置了闹钟功能,用于在每天 00:00 自动清除前一天的步数。
(四)DS18B20 温度传感器模块
DS18B20 温度传感器模块是一种常用的数字温度测量器件,具有高精度、接口简单、可组网等特点。其测温范围为-55℃到+125℃,在-10℃到+85℃范围内误差为±0.4℃。其温度转换精度可编程,可为 9 位、10 位、11 位或 12 位,对应的温度分辨率分别为 0.5℃、0.25℃、0.125℃和 0.0625℃,默认是 12 位精度。
DS18B20 在与微处理器连接时仅需要一条线即可实现双向通讯,这大大减少了对微处理器引脚资源的占用。在本设计中,DS18B20 通过单线接口与 STM32F103C8T6 单片机连接。单片机通过发送指令控制 DS18B20 进行温度转换,并读取转换后的温度数据。
(五)PulseSensor 心率采集模块
PulseSensor(MDL0025)是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指或耳垂等处,通过导线连接可将采集到的模拟信号传输给开发板用来转换为数字信号,再通过开发板简单计算后就可以得到心率数值。
PulseSensor 是一款开源硬件,其适用于心率方面的科学研究和教学演示,也非常适合用于二次开发。在本设计中,PulseSensor 通过 ADC 接口与 STM32F103C8T6 单片机连接。单片机通过 ADC 将 PulseSensor 采集到的模拟信号转换为数字信号,并进行处理和分析,从而得到用户的心率值。
(六)BT06 蓝牙模块
BT06 蓝牙模块是专为智能无线数据传输而打造,遵循 V3.0 蓝牙规范。本模块支持 UART 接口,并支持 SPP 蓝牙串口协议,具有成本低、体积小、功耗低、收发灵敏性高等优点,只需配备少许的外围元件就能实现其强大功能。
在本设计中,BT06 蓝牙模块通过 UART 接口与 STM32F103C8T6 单片机连接。单片机通过 UART 接口将采集到的心率、体温、步数等数据发送给蓝牙模块,蓝牙模块再将这些数据通过无线方式传输给手机 APP 进行显示和控制。
(七)OLED 显示模块
OLED 模块是一种为 OLED 显示屏、PCB、铁框构成的模块。OLED 模块具有构造简单、自发光不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广等特点。
在本设计中,OLED 显示模块通过 I2C 接口与 STM32F103C8T6 单片机连接。单片机将采集到的心率、体温、步数、日期和时间等数据发送给 OLED 显示模块进行显示。OLED 显示模块采用 0.96 英寸的 OLED 显示屏,分辨率为 128×64,能够清晰显示各种信息。
(八)键盘模块
键盘模块提供按键用于用户操作,如调整日期和时间、清除步数以及切换信息显示等。在本设计中,键盘模块采用三个按键和一个清除步数按键以及一个切换信息显示按键。按键通过 GPIO 接口与 STM32F103C8T6 单片机连接。单片机通过检测按键的按下状态来执行相应的操作。
四、软件设计
(一)开发环境介绍
本设计采用 Keil MDK 作为开发环境。Keil MDK 是一款功能强大的集成开发环境(IDE),支持 ARM Cortex-M 系列微控制器的软件开发。它提供了丰富的库函数和工具链,方便用户进行程序编写、编译、调试和下载。
(二)主程序设计
主程序是系统的核心部分,负责初始化各硬件模块、协调各模块之间的工作以及处理用户操作。主程序的流程如图 2 所示。
<img src="https://example.com/main_program_flowchart.png" />
图 2 主程序流程图
主程序首先进行系统初始化,包括时钟初始化、GPIO 初始化、I2C 初始化、UART 初始化、ADC 初始化、RTC 初始化以及 OLED 初始化等。然后进入一个无限循环,在循环中依次执行计步功能、心率监测功能、温度测量功能、OLED 显示功能、蓝牙通讯功能以及按键处理功能等。
(三)各模块软件实现
1. 计步功能实现
计步功能通过 ADXL345 三轴加速度模块实现。单片机通过 I2C 接口读取 ADXL345 的加速度数据,并判断用户的运动状态。当检测到用户的加速度变化超过一定阈值时,认为用户迈出了一步,并累加步数。同时,单片机还通过 RTC 模块获取当前的时间信息,用于判断是否为新的一天,并在每天 00:00 自动清除前一天的步数。
2. 心率监测功能实现
心率监测功能通过 PulseSensor 心率采集模块实现。单片机通过 ADC 接口将 PulseSensor 采集到的模拟信号转换为数字信号,并进行处理和分析。首先,单片机对采集到的信号进行滤波处理,去除噪声和干扰。然后,通过计算信号的峰值和周期来得到用户的心率值。最后,将心率值发送给 OLED 显示模块进行显示。
3. 温度测量功能实现
温度测量功能通过 DS18B20 温度传感器模块实现。单片机通过单线接口向 DS18B20 发送指令,控制其进行温度转换。转换完成后,单片机读取 DS18B20 返回的温度数据,并进行处理和分析。首先,单片机将读取到的温度数据进行格式转换,得到实际的温度值。然后,将温度值发送给 OLED 显示模块进行显示。
4. OLED 显示功能实现
OLED 显示功能通过 OLED 显示模块实现。单片机将采集到的心率、体温、步数、日期和时间等数据发送给 OLED 显示模块进行显示。OLED 显示模块采用 I2C 接口与单片机连接,单片机通过 I2C 接口向 OLED 显示模块发送显示指令和数据。OLED 显示模块根据接收到的指令和数据,在显示屏上显示相应的信息。
5. 蓝牙通讯功能实现
蓝牙通讯功能通过 BT06 蓝牙模块实现。单片机通过 UART 接口将采集到的心率、体温、步数等数据发送给蓝牙模块。蓝牙模块再将这些数据通过无线方式传输给手机 APP 进行显示和控制。同时,手机 APP 也可以通过蓝牙模块向单片机发送指令,控制手环执行相应的操作,如调整日期和时间、清除步数等。
6. 按键功能实现
按键功能通过键盘模块实现。单片机通过 GPIO 接口检测按键的按下状态。当检测到按键按下时,单片机根据按键的功能执行相应的操作。例如,当检测到调整日期和时间的按键按下时,单片机进入日期和时间调整模式,并通过 OLED 显示模块提示用户进行调整。当用户调整完成后,单片机将新的日期和时间信息保存到 RTC 模块中。
五、系统调试与测试
(一)硬件调试
硬件调试是确保系统硬件电路正常工作的重要环节。在硬件调试过程中,首先检查各硬件模块的连接是否正确,包括电源连接、信号连接等。然后,使用万用表、示波器等工具对各硬件模块的输出信号进行测试,确保信号正常。例如,测试 ADXL345 的加速度输出信号、DS18B20 的温度输出信号、PulseSensor 的心率输出信号等。最后,对整个系统进行联调,确保各硬件模块之间能够正常通讯和协同工作。
(二)软件调试
软件调试是确保系统软件程序正常运行的重要环节。在软件调试过程中,首先使用 Keil MDK 开发环境对程序进行编译和下载,确保程序能够正常烧录到单片机中。然后,通过串口调试助手等工具对程序的输出信息进行监控和调试。例如,监控心率、体温、步数等数据的采集和显示情况,调试蓝牙通讯功能等。最后,对整个系统进行联调,确保软件程序能够正确控制各硬件模块实现相应的功能。
(三)系统联调
系统联调是将硬件电路和软件程序结合起来进行测试的重要环节。在系统联调过程中,首先对各硬件模块进行单独测试,确保每个模块都能正常工作。然后,将各硬件模块连接起来,对整个系统进行联调。在联调过程中,测试系统的各项功能是否正常,如心率监测、体温测量、步数统计、OLED 显示、蓝牙通讯以及按键操作等。同时,还对系统的稳定性和可靠性进行测试,确保系统能够长时间稳定运行。
(四)测试结果分析
经过系统调试与测试,本文设计的基于 STM32 的蓝牙智能手环能够正常工作,并满足设计要求。各硬件模块之间能够正常通讯和协同工作,软件程序能够正确控制各硬件模块实现相应的功能。心率监测、体温测量、步数统计等功能的测试结果准确可靠,OLED 显示模块能够清晰显示各种信息,蓝牙通讯功能能够正常与手机 APP 进行数据同步和远程控制。同时,系统还具备较高的稳定性和可靠性,能够长时间稳定运行。
六、结论与展望
(一)研究结论
本文设计了一款基于 STM32F103C8T6 单片机的蓝牙智能手环,实现了心率监测、体温测量、步数统计、OLED 显示、蓝牙通讯以及按键操作等功能。通过硬件设计和软件编程,系统能够正常工作并满足设计要求。测试结果表明,系统各项功能准确可靠,具有较高的稳定性和可靠性。
(二)未来展望
虽然本文设计的蓝牙智能手环已经实现了基本功能,但仍有许多可以改进和拓展的地方。例如,可以加入 GPS 定位功能,实现运动轨迹记录;可以加入 NFC 支付功能,方便用户进行支付操作;可以加入语音助手功能,提高用户的使用体验等。同时,还可以对系统的算法进行优化,提高心率监测、体温测量等生理指标的准确性。此外,还可以将手环与智能家居系统相结合,实现更加智能化的生活场景。
未来,随着物联网技术的不断发展和智能穿戴设备的普及,蓝牙智能手环将具有更加广阔的应用前景。本文的研究为蓝牙智能手环的设计和开发提供了一定的参考和借鉴价值。
作者:科创工作室li