当前位置: 首页 > news >正文

基于51单片机步数检测计步器无线蓝牙APP上传设计

基于51单片机步数检测计步器无线蓝牙APP上传设计


1. 系统功能概述

本设计是一款基于STC89C52单片机的智能计步器系统,通过ADXL345加速度传感器采集人体运动状态,实现步数、路程、卡路里计算与显示,同时将数据通过蓝牙模块实时上传到手机APP端。该系统采用LCD1602液晶屏显示运动数据,并通过呼吸灯动态显示运动节奏,既具有实用性,又具备良好的交互体验。

系统整体采用模块化设计,分为主控单元、加速度检测单元、蓝牙通信单元、液晶显示单元、呼吸灯指示单元以及电源管理单元。通过软硬件结合,实现了人体运动状态的智能检测与无线传输,能够识别站立(Stand)、躺卧(Lie)、走路(Walk)、奔跑(Run)等多种状态,并准确统计运动步数、计算行走距离和能量消耗。

该系统具有以下主要功能:

  1. 步数检测功能:利用ADXL345加速度传感器检测人体运动加速度变化,实现步数的精准计数。
  2. 运动状态识别:通过加速度幅值与方向判断当前运动状态(Stand、Lie、Walk、Run)。
  3. LCD实时显示:LCD1602液晶显示步数、路程、卡路里及运动状态等信息。
  4. 蓝牙数据上传:通过蓝牙模块将实时运动数据以字符串格式上传到手机APP,实现远程监测。
  5. 呼吸灯动态指示:LED呼吸灯根据运动强度和步频变化,动态显示运动状态,提升交互性。
  6. 低功耗设计:在无运动状态下自动进入低功耗模式,延长电池寿命。

系统上传的数据格式如下:

*B:0005J:02.3mK:0131.04calWalk #
*B:0006J:02.7mK:0157.25calStand#

其中:

  • B 表示步数;
  • J 表示路程(米);
  • K 表示卡路里(cal);
  • 最后的英文单词 表示运动状态。

2. 系统电路设计

系统硬件电路包括六个主要部分:

  1. STM89C52单片机最小系统
  2. ADXL345三轴加速度传感器模块
  3. LCD1602液晶显示模块
  4. 蓝牙无线通信模块
  5. 呼吸灯LED电路
  6. 电源模块

以下分别进行详细介绍。


2.1 STC89C52单片机最小系统

STC89C52单片机作为系统的核心控制单元,负责采集ADXL345传感器数据、分析运动状态、计算步数与卡路里、显示LCD信息以及蓝牙数据上传。

主要特性

  • 内部时钟频率高达12MHz;
  • 具有丰富的I/O口资源,可同时连接多模块;
  • 支持UART串口通信,用于蓝牙数据传输;
  • 低功耗模式适用于便携式设备;
  • 内部定时器用于步数采样与时间计算。

主要连接关系

  • I²C总线连接ADXL345(SCL与SDA);
  • LCD1602使用并行接口连接P0口;
  • 蓝牙模块通过UART(TXD、RXD)连接P3.0、P3.1;
  • LED呼吸灯连接P2口的PWM输出端;
  • 电源输入端提供+5V电压,经稳压电路转为3.3V。

2.2 ADXL345加速度传感器电路

ADXL345是一款低功耗、三轴数字加速度传感器,可测量静态加速度(重力)与动态加速度(运动或震动)。

主要技术参数

  • 测量范围:±16g;
  • 通信接口:I²C或SPI;
  • 分辨率:13位;
  • 低功耗待机电流:0.1μA;

工作原理
人体运动时,ADXL345会检测到不同方向的加速度变化,单片机通过定时采样获取三轴加速度值,并通过滤波算法分析周期性波动。每当加速度信号超过阈值时,系统判断为一次有效步伐,从而实现步数检测。

电气连接

  • VCC → 3.3V;
  • GND → GND;
  • SDA → P2.1;
  • SCL → P2.0。

2.3 LCD1602液晶显示电路

LCD1602模块用于实时显示运动数据,包括步数(B)、距离(J)、卡路里(K)以及运动状态。LCD1602具有价格低廉、字符显示清晰、编程简单等优点。

主要特点

  • 16列×2行字符显示;
  • 工作电压5V;
  • 数据接口可选择4位或8位模式;
  • 带背光控制端。

系统使用8位并行方式,数据端连接P0口,控制端RS、RW、EN连接P2.5、P2.6、P2.7。程序中通过LCD初始化函数、清屏函数、显示字符串函数实现显示控制。


2.4 蓝牙通信电路

系统采用常用的HC-05蓝牙模块进行无线通信,通过UART接口与单片机连接。模块通过AT命令配置通信波特率(默认9600bps),实现与手机APP的数据交互。

主要功能

  • 接收单片机发送的运动数据;
  • 通过串口蓝牙助手或自定义APP显示实时步数、距离与状态;
  • 支持实时数据刷新与保存。

连接方式

  • VCC → 5V;
  • GND → GND;
  • TXD → P3.0(RXD);
  • RXD → P3.1(TXD)。

蓝牙数据传输格式采用字符串方式,方便APP端直接解析。例如:

*B:0014J:7.7mK:448.45calWalk #

2.5 呼吸灯电路

呼吸灯采用PWM调光电路,通过单片机定时器输出可变占空比PWM信号,实现LED灯亮度缓慢变化的呼吸效果。

功能说明

  • 当运动状态为Walk或Run时,LED以动态节奏闪烁;
  • 当处于Stand或Lie状态时,LED保持常亮或熄灭;
  • 可通过PWM周期调节闪烁速度与亮度幅度。

LED呼吸灯不仅提升了系统美观度,还可作为运动节奏的视觉提示。


2.6 电源电路

系统电源采用5V供电,可使用锂电池或USB供电方式。电路中加入AMS1117-3.3稳压芯片为ADXL345与蓝牙模块提供3.3V电压,同时使用电解电容与陶瓷电容进行滤波,确保信号稳定。


3. 系统程序设计

系统程序采用模块化设计,包括主程序模块、传感器数据采集模块、步数计算模块、运动状态判断模块、LCD显示模块、蓝牙通信模块以及呼吸灯控制模块。


3.1 主程序设计

主程序负责系统初始化、定时采样与循环控制。核心逻辑为“采集 → 计算 → 显示 → 上传”。

#include <reg52.h>
#include "iic.h"
#include "adxl345.h"
#include "lcd1602.h"
#include "bluetooth.h"
#include "led.h"
#include "delay.h"unsigned int step_count = 0;
float distance = 0;
float calorie = 0;
char state[10];void main(void)
{LCD_Init();IIC_Init();ADXL345_Init();Bluetooth_Init();LED_Init();while(1){ADXL345_ReadXYZ();if(CheckStep())  {step_count++;distance = step_count * 0.45;calorie = step_count * 0.08;JudgeState();DisplayData(step_count, distance, calorie, state);Bluetooth_SendData(step_count, distance, calorie, state);}LED_BreathEffect(state);Delay_ms(500);}
}

3.2 ADXL345传感器采集程序

void ADXL345_ReadXYZ(void)
{int16_t x, y, z;x = IIC_Read16(ADXL345_ADDR, DATAX0);y = IIC_Read16(ADXL345_ADDR, DATAY0);z = IIC_Read16(ADXL345_ADDR, DATAZ0);// 计算加速度幅值acc_value = sqrt(x*x + y*y + z*z);// 过滤噪声if(acc_value > THRESHOLD)step_flag = 1;elsestep_flag = 0;
}

3.3 步数检测算法

步数检测采用阈值法与时间间隔过滤法结合。

bit CheckStep(void)
{static unsigned long last_time = 0;if(step_flag == 1 && (millis() - last_time) > 300){last_time = millis();return 1;}return 0;
}

该算法能有效避免抖动误判与多次计步。


3.4 运动状态判断模块

根据加速度幅值与方向判断运动类型。

void JudgeState(void)
{if(acc_value < 100) strcpy(state, "Lie");else if(acc_value < 300) strcpy(state, "Stand");else if(acc_value < 600) strcpy(state, "Walk");else strcpy(state, "Run");
}

3.5 LCD显示模块

void DisplayData(unsigned int step, float dist, float cal, char *st)
{LCD_Clear();LCD_ShowString(0, 0, "B:");LCD_ShowNum(2, 0, step, 4);LCD_ShowString(8, 0, "J:");LCD_ShowFloat(10, 0, dist, 2);LCD_ShowString(0, 1, "K:");LCD_ShowFloat(2, 1, cal, 2);LCD_ShowString(10, 1, st);
}

LCD1602通过清晰的字符界面实时显示用户的运动情况。


3.6 蓝牙通信模块

void Bluetooth_SendData(unsigned int step, float dist, float cal, char *st)
{char buffer[50];sprintf(buffer, "*B:%04dJ:%.1fmK:%.2fcal%s #", step, dist, cal, st);UART_SendString(buffer);
}

此函数格式化运动数据为字符串并通过蓝牙发送。手机端APP收到后即可实时显示。


3.7 呼吸灯控制程序

void LED_BreathEffect(char *st)
{if(strcmp(st, "Walk") == 0)LED_PWM(50);  // 中等亮度else if(strcmp(st, "Run") == 0)LED_PWM(90);  // 高亮快闪else if(strcmp(st, "Stand") == 0)LED_PWM(20);  // 微亮elseLED_PWM(0);   // 熄灭
}

LED灯的亮度变化节奏与运动状态同步,提升了系统的交互效果。


4. 系统运行与效果说明

系统上电后,LCD1602显示初始界面,蓝牙模块自动连接手机。用户佩戴设备开始运动时,ADXL345检测到加速度波动,单片机分析后开始累计步数。LCD显示实时更新的步数、路程和卡路里,同时通过HC-05将数据上传至手机APP,用户可在手机端实时查看运动统计。

当用户停止运动时,LED呼吸灯亮度减弱或熄灭,表示系统进入待机状态。系统通过判断运动强度可识别出“躺卧”“站立”“走路”“奔跑”等状态,并动态调整显示内容与灯光效果,实现了智能化、交互式的运动监测体验。

该系统不仅具备良好的实时性和准确性,而且具有可扩展性,可进一步加入心率传感器、GPS定位模块,实现更为全面的运动健康监测功能。

http://www.dtcms.com/a/447192.html

相关文章:

  • 网站制作邯郸平台网站建设哪家好
  • 微专题:C++中的进制转换
  • 【多线程】多线程的底层实现
  • 台州网站建设公司哪个好互联网销售公司起名
  • 网站可以同时做竞价和优化吗网站建设的优势与不足
  • 做网站怎么去文化局备案phpstudy和wordpress
  • 网站嵌套代码wordpress 文章 指定
  • 什么是速成网站3d建模培训学校哪家好
  • 做律师网站导购网站怎么建设
  • 佛山优化网站排名福建省港航建设发展有限公司网站
  • 上杭网站设计公司安阳市有几个区几个县
  • XGBoost工业级痛点解决:样本不平衡+大数据优化+部署落地
  • CCF-CSP认证考试 202312-4 宝藏 题解
  • 个人网站备案号被注销了网站运营优化推广
  • Python数据清洗实战指南
  • s网站优化西安咪豆网站建设公司
  • 怀柔建设网站公司公司网站后台维护怎么做
  • 网站开发 ssh 菜鸟东阳网络科技有限公司
  • 宁波网站建设费用网站运营岗位介绍
  • 公司的网 网站打不开怎么办网络营销宏观环境有哪些
  • 网站建设中扁平化结构chrome浏览器官网入口
  • 网站建设属于什么合同做网站游戏推广赚钱
  • asrpro2.0天问语音模块搭配STM32(STM32F103c8t6)-杨桃电子开发板
  • 网站发布时间更改wordpress大前端哪个好
  • php租车网站网站软件下载大全
  • LangChain 学习 - LangChain 引入(LangChain 概述、LangChain 的使用场景、LangChain 架构设计)
  • 门户网站是网络表达吗杭州建设网电焊工报名入口
  • 公司网站建设计入什么明细科目全国行业名录搜索系统
  • 设计网站企业网站建设公司成都哪家做网站做的好
  • 一如:真实的觉现