摘要
针对羽毛球运动训练中缺乏精准运动状态监测手段的问题,设计了一套基于 STM32 微控制器的羽毛球运动状态监测系统。系统以 STM32F103C8T6 为主控核心,集成 ADXL345 三轴加速度传感器采集运动员挥拍、移动等身体运动状态数据,通过 OLED 显示屏实时本地显示 X/Y/Z 轴加速度数据,并借助串口转 WiFi 模块将数据上传至机智云平台实现远程可视化监测。测试结果表明,系统能够稳定采集、显示和传输运动加速度数据,数据误差控制在 ±0.05g 以内,可有效辅助羽毛球运动员分析运动姿态和训练效果,为科学化训练提供数据支撑。
关键词:STM32;ADXL345;运动状态监测;OLED 显示;机智云
引言
羽毛球运动作为一项集速度、力量、协调性于一体的隔网对抗性运动,运动员的挥拍速度、移动幅度、身体姿态等运动状态参数直接影响训练效果和比赛表现。传统的训练方式主要依赖教练的肉眼观察和经验判断,存在主观性强、数据量化不足等问题,难以精准分析运动员的动作规范度和体能消耗情况。
随着微机电系统(MEMS)、物联网(IoT)技术的发展,基于加速度传感器的运动状态监测系统已在体育训练领域得到应用。ADXL345 作为一款低功耗、高精度的三轴加速度传感器,能够精准捕捉三维空间内的加速度变化,适用于人体运动状态的采集;STM32 系列微控制器凭借高性能、低成本、丰富的外设接口等优势,成为嵌入式运动监测系统的理想主控选择;机智云平台则为物联网设备提供了便捷的远程数据可视化和管理能力,可实现运动数据的云端存储与分析。
本文设计的基于 STM32 的羽毛球运动状态监测系统,旨在通过硬件集成与软件编程,实现运动员运动过程中加速度数据的实时采集、本地显示和云端上传,为羽毛球科学化训练提供客观、量化的数据依据,弥补传统训练方式的不足。
系统总体设计
设计目标
本系统需实现以下核心功能:
- 数据采集:通过 ADXL345 传感器实时采集运动员运动过程中的 X/Y/Z 三轴加速度数据,采样频率不低于 50Hz;
- 本地显示:通过 OLED 显示屏实时显示当前三轴加速度数值,便于现场查看;
- 云端上传:将采集的加速度数据通过 WiFi 模块上传至机智云平台,实现远程实时监测;
- 稳定性:系统运行稳定,数据传输延迟≤1s,数据误差控制在可接受范围内。
总体架构
系统采用 "感知层 - 控制层 - 显示层 - 传输层 - 应用层" 五层架构设计,具体如下:
- 感知层:ADXL345 三轴加速度传感器,负责采集运动加速度数据;
- 控制层:STM32F103C8T6 微控制器,负责传感器数据读取、数据处理、OLED 显示控制和 WiFi 数据传输;
- 显示层:0.96 英寸 I2C 接口 OLED 显示屏,负责本地数据可视化;
- 传输层:ESP8266 串口转 WiFi 模块,负责将处理后的数据上传至机智云平台;
- 应用层:机智云平台,负责数据接收、存储、可视化展示。
系统工作流程为:ADXL345 采集三轴加速度数据并通过 I2C 接口传输至 STM32;STM32 对原始数据进行校准和格式转换后,一方面通过 I2C 接口发送至 OLED 显示屏显示,另一方面按照机智云通信协议封装数据,通过 USART 串口发送至 ESP8266 模块;ESP8266 将数据通过 WiFi 上传至机智云平台,用户可通过手机 APP 或网页端查看实时运动数据。
硬件电路设计
主控模块电路
主控芯片选用 STM32F103C8T6,该芯片基于 ARM Cortex-M3 内核,主频 72MHz,拥有 64KB Flash、20KB RAM,集成 I2C、USART、SPI 等多种外设接口,满足系统数据采集、处理和传输需求。
主控模块外围电路包括:
- 电源电路:采用 5V 转 3.3V 稳压芯片 AMS1117,为 STM32、ADXL345 和 OLED 供电;
- 复位电路:采用按键复位 + RC 复位组合,保证系统可靠复位;
- 晶振电路:外接 8MHz 无源晶振,配合内部倍频电路生成 72MHz 系统时钟;
- 下载电路:采用 SWD 下载接口,支持程序烧录和在线调试。
加速度传感器模块电路
ADXL345 是一款数字输出型三轴加速度传感器,测量范围可选 ±2g/±4g/±8g/±16g,本系统选择 ±8g 量程,满足羽毛球运动中挥拍、移动等动作的加速度测量需求。
ADXL345 与 STM32 采用 I2C 接口通信,电路连接如下:
- ADXL345 的 SDA、SCL 引脚分别接 STM32 的 PB7、PB6 引脚,并通过 4.7kΩ 上拉电阻接 3.3V 电源;
- ADXL345 的 VCC 引脚接 3.3V 电源,GND 引脚接地;
- ADXL345 的 CS 引脚接 3.3V 电源,配置为 I2C 通信模式;
- ADXL345 的 INT1、INT2 引脚悬空,暂不使用中断功能。
OLED 显示模块电路
采用 0.96 英寸 I2C 接口 OLED 显示屏,分辨率为 128×64,具有功耗低、响应快、显示清晰等优点。其 SDA、SCL 引脚分别接 STM32 的 PB9、PB8 引脚,同样通过 4.7kΩ 上拉电阻接 3.3V 电源,VCC 引脚接 3.3V 电源,GND 引脚接地。
WiFi 传输模块电路
选用 ESP8266-01S 串口转 WiFi 模块,该模块支持 802.11b/g/n 协议,串口波特率可调,可通过 AT 指令配置网络参数。模块的 TXD 引脚接 STM32 的 USART1_RX(PA10)引脚,RXD 引脚接 STM32 的 USART1_TX(PA9)引脚,VCC 引脚接 3.3V 电源,GND 引脚接地,CH_PD 引脚接 3.3V 电源以保证模块正常工作。
软件设计
软件开发环境
系统软件基于 Keil MDK-ARM V5 开发环境编写,采用 C 语言编程,借助 STM32 标准外设库实现硬件驱动和功能逻辑开发。
主程序流程
主程序初始化完成后进入循环体,核心流程如下:
- 系统初始化:包括时钟配置、GPIO 口配置、I2C 接口配置、USART 串口配置、OLED 初始化、ESP8266 初始化、ADXL345 初始化;
- ADXL345 数据采集:通过 I2C 接口读取 ADXL345 的 X/Y/Z 三轴加速度原始数据,进行校准和单位转换(转换为 g 值);
- OLED 数据显示:将转换后的三轴加速度数据格式化后,通过 I2C 接口发送至 OLED 显示屏,实时更新显示内容;
- 数据封装与上传:按照机智云自定义数据点格式封装加速度数据,通过 USART 串口发送至 ESP8266 模块,由模块上传至机智云平台;
- 延时处理:设置 50ms 延时,控制采样频率约为 20Hz,平衡数据刷新率和系统资源占用。
ADXL345 驱动程序设计
ADXL345 驱动程序主要包括初始化函数、数据读取函数和数据校准函数。
- 初始化函数:通过 I2C 接口向 ADXL345 的配置寄存器写入参数,设置量程为 ±8g,输出数据率为 100Hz,关闭休眠模式;
- 数据读取函数:读取 ADXL345 的 X0、X1、Y0、Y1、Z0、Z1 共 6 个数据寄存器的值,组合为 16 位有符号整数;
- 数据校准函数:由于传感器存在零点偏移,需在静止状态下采集 100 组数据,计算各轴偏移量,在实际采集时减去偏移量,公式为:Acc=(RawData−Offset)×ScaleFactor其中,ScaleFactor 为量程系数,±8g 量程下 ScaleFactor=0.0039g/LSB。
OLED 显示程序设计
OLED 显示程序采用模块化设计,包括初始化函数、字符显示函数、数值显示函数和清屏函数。初始化函数完成 OLED 的显存配置、显示模式设置;字符显示函数实现 ASCII 字符的点阵显示;数值显示函数将加速度数据转换为字符串后显示;清屏函数用于刷新显示界面。
显示界面布局设计为:第一行显示 "ADXL345 Data",第二行显示 "X: XX.XX g",第三行显示 "Y: XX.XX g",第四行显示 "Z: XX.XX g",实时更新三轴加速度数值。
ESP8266 与机智云通信程序设计
ESP8266 初始化
通过 USART 串口发送 AT 指令配置 ESP8266:
- AT+RST:重启模块;
- AT+CWMODE=1:设置为 STA 模式;
- AT+CWJAP="SSID","PASSWORD":连接路由器 WiFi;
- AT+CIPSTART="TCP","SERVER_IP",SERVER_PORT:连接机智云 TCP 服务器。
机智云通信协议
机智云采用自定义的应用层协议,数据帧格式包括帧头、数据长度、设备 ID、数据点、校验位等。本系统定义三个数据点:X 轴加速度(float 型)、Y 轴加速度(float 型)、Z 轴加速度(float 型)。STM32 将采集的加速度数据按照协议格式封装为字节流,通过串口发送至 ESP8266,由模块转发至机智云平台。
数据上传程序
数据上传程序采用查询方式,每次采集完加速度数据后,封装成机智云数据帧,通过 USART 串口发送。发送完成后,等待 ESP8266 的响应,确认数据发送成功。
系统测试与分析
测试环境搭建
- 硬件环境:STM32 开发板、ADXL345 模块、OLED 显示屏、ESP8266 模块、5V 电源、路由器、电脑、手机;
- 软件环境:Keil MDK-ARM V5、串口调试助手、机智云开发者平台、机智云手机 APP。
功能测试
本地显示测试
将系统上电,ADXL345 静止放置时,OLED 显示屏显示 X、Y 轴加速度约为 0g,Z 轴加速度约为 1g(重力加速度),符合预期;手动晃动传感器,三轴加速度数值随晃动方向和幅度实时变化,显示刷新及时,无卡顿现象,说明本地显示功能正常。
云端上传测试
配置 ESP8266 连接路由器 WiFi,在机智云平台创建设备并定义数据点,将设备 ID 和密钥写入程序。系统上电后,打开机智云手机 APP,可实时查看 X/Y/Z 三轴加速度数据,数据与 OLED 显示一致,传输延迟≤1s,说明云端上传功能正常。
精度测试
将 ADXL345 固定在水平台上,采集 100 组静止状态下的三轴加速度数据,计算平均值和误差:
- X 轴:平均值 0.02g,最大误差 + 0.04g,最小误差 - 0.03g;
- Y 轴:平均值 0.01g,最大误差 + 0.03g,最小误差 - 0.04g;
- Z 轴:平均值 0.99g,最大误差 + 0.05g,最小误差 - 0.04g。
误差均控制在 ±0.05g 以内,满足羽毛球运动状态监测的精度要求。
稳定性测试
连续运行系统 2 小时,记录数据采集和传输情况:共采集约 144000 组数据,数据丢失率为 0.1%,OLED 显示无花屏、黑屏现象,ESP8266 与机智云平台连接稳定,无断连情况,说明系统运行稳定可靠。
系统优化与拓展方向
现有系统不足
- 仅采集加速度数据,无法全面分析运动姿态,如挥拍角度、旋转角速度等;
- 数据上传采用 TCP 协议,功耗较高,不适用于电池供电的便携场景;
- 机智云平台仅实现数据显示,未进行运动姿态分析和异常动作识别。
优化方向
- 硬件拓展:增加 MPU6050 六轴传感器(加速度 + 陀螺仪),采集角速度数据,结合数据融合算法(如卡尔曼滤波)分析运动姿态;
- 功耗优化:将 ESP8266 的传输模式改为 MQTT 协议,降低功耗,并增加锂电池供电模块,实现便携化;
- 软件拓展:在机智云平台或本地 STM32 中增加算法模块,识别挥拍速度、移动步数、动作规范度等参数,生成训练报告;
- 交互优化:增加按键模块,支持采样频率调节、数据清零、量程切换等功能。
结论
本文设计的基于 STM32 的羽毛球运动状态监测系统,通过 ADXL345 实现了运动加速度数据的精准采集,OLED 显示屏实现了本地实时显示,ESP8266 模块实现了数据向机智云平台的远程上传。测试结果表明,系统数据采集精度高、传输稳定、操作便捷,能够满足羽毛球运动状态监测的基本需求。
该系统为羽毛球科学化训练提供了量化数据支撑,教练和运动员可通过本地或云端数据直观分析运动姿态和训练效果,有助于纠正不规范动作、提升训练效率。后续可通过硬件拓展和算法优化,进一步丰富系统功能,提升系统的实用性和智能化水平,为体育训练智能化发展提供参考。