当前位置:   article > 正文

stm32单片机的智能手环-心率-步数-距离-体温-蓝牙监控

stm32单片机的智能手环-心率-步数-距离-体温-蓝牙监控

 一.硬件方案

         随着社会的发展,人们的物质生活水平日渐提高,人们也越来越关注自己的健康。智能手环作为一种测量仪器,可以计算行走的步数和消耗的能量,所以人们可以定量的制定运动方案来健身,并根据运行情况来分析人体的健康状况,因而越发流行。便携式智能手环是适应市场需求的设计,使用起来简单方便。
        主要由STM32F103C8T6单片机最小系统板+LCD1602液晶显示模块+ADXL345计步器模块+心率监测模块+DS18B20温度传感器+HC-05蓝牙模块+电源开关构成;

PCB图如下:

二.设计功能

  • LCD1602液晶显示屏显示当前测量步数、距离、心率和体温数据;
  • 心率传感器采集当前的心率数据,如果手指放置心率传感器,单片机采集传感器的数据,计算出当前心率数据;
  • ADXL345三轴加速度传感器监测实时空间位置,如果当前位置出现变化,并符合走路姿势,皆可算出当前步数和距离;
  • 温度传感器为接触式型传感器,如果将传感器握在手心,即可测量出当前体温;
  • 除了显示屏可显示当前的测量数据外,也可通过蓝牙连接手机APP,在APP上实时显示当前的数据。

三.软件设计

        主程序源码

  1. /****************主函数***************/
  2. int main(void)
  3. {
  4. delay_init(); //延时函数初始化
  5. uart_init(9600); //串口初始化为9600
  6. TIM3_Int_Init(49,7199);//50ms
  7. EXTIX_Init(); // 初始化外部中断
  8. LED_Init(); //初始化与LED连接的硬件接口
  9. KEY_Init(); //初始化按键
  10. Lcd_GPIO_init(); //初始化lcd引脚
  11. Lcd_Init(); //初始化lcd屏幕
  12. delay_ms(200);
  13. Init_ADXL345();
  14. if(Single_Read_ADXL345(0X00)==0xe5)
  15. {
  16. delay_ms(5);
  17. }
  18. else
  19. {
  20. delay_ms(3);
  21. }
  22. while(1)
  23. {
  24. if(ReadAdxl345== 1) //定时读取adxl345数据
  25. {
  26. ReadAdxl345= 0;
  27. ReadData_x(); //三轴检测函数
  28. CheckNum++;
  29. if((temp_Y>450)||(temp_Y<-450)) //查看正常次数
  30. {
  31. Normal_num++; //正常次数++
  32. }
  33. else
  34. {
  35. Error_num++;//倾斜次数
  36. }
  37. if((Error_num!=0)&&(Normal_num!=0))//检测到步数
  38. {
  39. BuShu++; //步数脉冲量++
  40. Error_num=0; //清除一个周期检测
  41. Normal_num=0;
  42. }
  43. }
  44. if(disFlag==1) //显示标志
  45. {
  46. disFlag = 0;
  47. readTemp++; //定时计数
  48. if(readTemp >= 8)//约800ms处理一次数据 温度
  49. {
  50. readTemp =0;//重新计数
  51. temperature=(float)DS18B20_Get_Temp()/10; //缩小10倍为实际值
  52. }
  53. disBuShu = BuShu/2; //显示步数
  54. disJuLi = disBuShu*0.45;//显示距离
  55. sprintf(dis0,"X:%03d/min %4.1f C",xinLv,temperature);//打印
  56. Lcd_Puts(0,0,(unsigned char *)dis0); //显示
  57. Lcd_1Put(14,0,0xdf);//显示符号
  58. sprintf(dis1,"BS:%03d JL:%4.1fm ",disBuShu,disJuLi);//打印
  59. Lcd_Puts(0,1,(unsigned char *)dis1); //显示
  60. APP_Update();
  61. }
  62. }
  63. }

链接:https://pan.baidu.com/s/1yaqX9xToSgFOcXJmkAMfrQ?pwd=a7h1 
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/143862
推荐阅读
相关标签
  

闽ICP备14008679号