一.硬件方案
随着社会的发展,人们的物质生活水平日渐提高,人们也越来越关注自己的健康。智能手环作为一种测量仪器,可以计算行走的步数和消耗的能量,所以人们可以定量的制定运动方案来健身,并根据运行情况来分析人体的健康状况,因而越发流行。便携式智能手环是适应市场需求的设计,使用起来简单方便。
主要由STM32F103C8T6单片机最小系统板+LCD1602液晶显示模块+ADXL345计步器模块+心率监测模块+DS18B20温度传感器+HC-05蓝牙模块+电源开关构成;
PCB图如下:
二.设计功能
- LCD1602液晶显示屏显示当前测量步数、距离、心率和体温数据;
- 心率传感器采集当前的心率数据,如果手指放置心率传感器,单片机采集传感器的数据,计算出当前心率数据;
- ADXL345三轴加速度传感器监测实时空间位置,如果当前位置出现变化,并符合走路姿势,皆可算出当前步数和距离;
- 温度传感器为接触式型传感器,如果将传感器握在手心,即可测量出当前体温;
- 除了显示屏可显示当前的测量数据外,也可通过蓝牙连接手机APP,在APP上实时显示当前的数据。
三.软件设计
主程序源码
/****************主函数***************/
int main(void)
{
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为9600
TIM3_Int_Init(49,7199);//50ms
EXTIX_Init(); // 初始化外部中断
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
Lcd_GPIO_init(); //初始化lcd引脚
Lcd_Init(); //初始化lcd屏幕
delay_ms(200);
Init_ADXL345();
if(Single_Read_ADXL345(0X00)==0xe5)
{
delay_ms(5);
}
else
{
delay_ms(3);
}
while(1)
{
if(ReadAdxl345== 1) //定时读取adxl345数据
{
ReadAdxl345= 0;
ReadData_x(); //三轴检测函数
CheckNum++;
if((temp_Y>450)||(temp_Y<-450)) //查看正常次数
{
Normal_num++; //正常次数++
}
else
{
Error_num++;//倾斜次数
}
if((Error_num!=0)&&(Normal_num!=0))//检测到步数
{
BuShu++; //步数脉冲量++
Error_num=0; //清除一个周期检测
Normal_num=0;
}
}
if(disFlag==1) //显示标志
{
disFlag = 0;
readTemp++; //定时计数
if(readTemp >= 8)//约800ms处理一次数据 温度
{
readTemp =0;//重新计数
temperature=(float)DS18B20_Get_Temp()/10; //缩小10倍为实际值
}
disBuShu = BuShu/2; //显示步数
disJuLi = disBuShu*0.45;//显示距离
sprintf(dis0,"X:%03d/min %4.1f C",xinLv,temperature);//打印
Lcd_Puts(0,0,(unsigned char *)dis0); //显示
Lcd_1Put(14,0,0xdf);//显示符号
sprintf(dis1,"BS:%03d JL:%4.1fm ",disBuShu,disJuLi);//打印
Lcd_Puts(0,1,(unsigned char *)dis1); //显示
APP_Update();
}
}
}
链接:https://pan.baidu.com/s/1yaqX9xToSgFOcXJmkAMfrQ?pwd=a7h1