• <tr id='fn7gLQ'><strong id='fn7gLQ'></strong><small id='fn7gLQ'></small><button id='fn7gLQ'></button><li id='fn7gLQ'><noscript id='fn7gLQ'><big id='fn7gLQ'></big><dt id='fn7gLQ'></dt></noscript></li></tr><ol id='fn7gLQ'><option id='fn7gLQ'><table id='fn7gLQ'><blockquote id='fn7gLQ'><tbody id='fn7gLQ'></tbody></blockquote></table></option></ol><u id='fn7gLQ'></u><kbd id='fn7gLQ'><kbd id='fn7gLQ'></kbd></kbd>

    <code id='fn7gLQ'><strong id='fn7gLQ'></strong></code>

    <fieldset id='fn7gLQ'></fieldset>
          <span id='fn7gLQ'></span>

              <ins id='fn7gLQ'></ins>
              <acronym id='fn7gLQ'><em id='fn7gLQ'></em><td id='fn7gLQ'><div id='fn7gLQ'></div></td></acronym><address id='fn7gLQ'><big id='fn7gLQ'><big id='fn7gLQ'></big><legend id='fn7gLQ'></legend></big></address>

              <i id='fn7gLQ'><div id='fn7gLQ'><ins id='fn7gLQ'></ins></div></i>
              <i id='fn7gLQ'></i>
            1. <dl id='fn7gLQ'></dl>
              1. <blockquote id='fn7gLQ'><q id='fn7gLQ'><noscript id='fn7gLQ'></noscript><dt id='fn7gLQ'></dt></q></blockquote><noframes id='fn7gLQ'><i id='fn7gLQ'></i>

                嵌入式智能手环系统方案设计

                2020-09-02 11:59:38分类:软件开发4761

                  生活节奏的加快,人〓们更多的依赖智能产品,除了能帮减轻生活繁杂的智能洗衣机,智能电饭锅等外,还注重在自身健康上的智能检测产品,智能手环就作为中的一种代【表性产物。其主要应用于运动显示比如显示行走及跑步的步数,距离,速度。同时可▂以实时健康监测比如心率,血氧,体温等。那么智能手环是如何实现的呢,下面我们来看看嵌入式智能手环系统方案设计的整体流程。

                  目录

                  一、系统方案的设计

                  1.1系统〓功能分析

                  1.2系统总体结构

                  二、硬件︾电路的搭建

                  2.1STM32最ζ 小系统组成部分

                  2.2S硬件々引脚连接

                  2.2S实物连接图

                  三、软件设计

                  3.1系统流⌒程图

                  3.2主函数代◇码

                  四、系统测试

                  五、总结
                 


                  一、系统方案的设计

                  系统功能▓分析

                  本设计是由STM32F103C8T6最小系统电路,DS3231时钟模块,ADXL345计步模块,MAX30100血氧心率模块,DS18B20温度模块,MPU6050体位检※测模块,寸TFT彩色液晶屏显示模块组成的嵌入式智能手环系统。

                  (1)通过DS3231时钟模块实现日期显▲示的功能▅

                  (2)使用传感器ADXL345检测人步数

                  (3)通过MAX30100传感器实时检测血氧心率①;

                  (4)通过传感器DS18B20进行温度测量。

                  (5)通过MPU6050体位检测卧床病人是否跌倒或可以通过此功能蜂鸣器警报呼叫。

                  (6)通过寸TFT彩色液晶屏实时显示日期,步数,距离,心率,血氧,跌倒状态以及温度值。

                  系统总体结构


                系统总体结构

                  二、硬件电路的搭建

                  最小系统组成部分


                最小系统组成部分

                  2.2硬件引脚连接


                硬件引脚连接

                  手工焊接是一种常见的原始焊接方法。

                  实物连接图(1)STM32单片机实物图如下图◤所示。(2)DS3231实物图(3)ADXL345模块实物图如下图所示(4)MAX30100实物图(5)MPU6050实物图(6)DS18B20温度传感器的实物图(7)寸TFT显示模块。

                  整体系统实物□图


                整体∩系统实物图

                  三、软件设计

                  本设计采用轮询的操作方式,首先在系统中断←中间隔不同的时间给相应的标志位置一,比如:计步每隔计步标志位置一,时钟每隔1s置一一次。然后在主循环中检测标志位,如果→标志位置一。刷新相应的值。

                  系统流程图


                系统流程图

                  下面是更为详细的流〖程图


                更为详细的流程图

                  主函数代『码

                  #include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""#include""

                  u8 ReadAdxl345;

                  u8 ErrorNum=0;

                  u16 Normal_num=0;

                  u16 Error_num=0;

                  u16 BuShu=0;

                  u16 step_num =0;float disJuLi =0;signedshort HeartRate_val=0;

                  u8 SPO2_val =0;

                  u8 mpu_count =0;

                  u8 STAP_FLAG =0;

                  u8 mpu_flag =0;_Bool mpu_1_flag =0;_Bool mpu_2_flag =0;_Bool mpu_temp =0;_Bool temp_flag =0;_Bool max_flag =0;_Bool time_flag =0;_Bool MPU_flag =0;_Bool MAX_flag =0;_Bool ADXL_flag =0;int SVM;intmain(void){float pitch,roll,yaw;short aacx,aacy,aacz;

                  u8 t =0;

                  u16 z =0;

                  u16 temp_BuShu;SysTick_Config(SystemCoreClock/1000);Delay_Ms(100);Lcd_Init();UART1_Init();DS18B20_Init();Gpio_Init();EXTI_KEY_Config();MPU_Init();DS3231_Init();Delay_Ms(100);IIC_Init();TIM3_Init();SPO2_Init();boot_Demo();Delay_Ms(1000);Init_ADXL345();if(Single_Read_ADXL345(0X00)==0xe5){Delay_Ms(5);}else{Delay_Ms(3);}while(mpu_dmp_init()){Delay_Ms(200);}main_Demo();

                  STAP_FLAG =1;while(1){if(temp_flag){

                  z =(ds18b20_read()&0x07FF);

                  temperature = z/16.0;

                  temp_flag =0;snprintf((char*)str,sizeof(str)," % ", temperature);Gui_DrawFont_GBK16(40,64,WHITE, BLACK,str);}if(MAX_flag){POupdate();if(max_flag){

                  max_flag =0;show_max30100(HeartRate_val,SPO2_val);}}if((!MPU_flag)&&(!MAX_flag)){if(ReadAdxl345 ==1){

                  ReadAdxl345=0;ReadData_x();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;}

                  step_num = BuShu/2;

                  disJuLi = step_num*0.45;if(BuShu != temp_BuShu){snprintf((char*)str,sizeof(str),"%u", step_num);Gui_DrawFont_GBK16(48,16,WHITE, BLACK,str);snprintf((char*)str,sizeof(str),"%", disJuLi);Gui_DrawFont_GBK16(48,96,WHITE, BLACK,str);

                  temp_BuShu = BuShu;}}}if(time_flag){

                  time_flag =0;get_show_time();sprintf((char*)str,"%u:%u:%urn",calendar.hour,calendar.min,calendar.sec);Gui_DrawFont_GBK16(48,112,WHITE, BLACK,str);printf("%u-%u-%ut",calendar.w_year+2000,calendar.w_month,calendar.w_date);printf("%u:%u:%urn",calendar.hour,calendar.min,calendar.sec);}if(MPU_flag){

                  t++;if(t>=10){

                  t=0;if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0){MPU_Get_Accelerometer(&aacx,&aacy,&aacz);

                  SVM =sqrt(pow(aacx,2)+pow(aacy,2)+pow(aacz,2));if(fabs(pitch)>40||fabs(roll)>40||fabs(yaw)>40)

                  mpu_1_flag =1;else

                  mpu_1_flag =0;if( SVM>23000|| SVM<12000)

                  mpu_2_flag =1;else

                  mpu_2_flag =0;if( mpu_2_flag || mpu_1_flag ){

                  mpu_flag =1;show_mpu(1);}}}}Delay_Ms(10);}}voidSysTick_Handler(void){

                  TimingDelay--;if(STAP_FLAG){

                  led_count++;if(led_count%200==0){

                  ReadAdxl345 =1;}if(led_count ==1000){

                  led_count =0;

                  temp_flag =1;

                  max_flag =1;

                  time_flag =1;if(mpu_flag){

                  mpu_count++;if(mpu_count ==1)BEEP_ON;elseif(mpu_count ==2)BEEP_OFF;}if(mpu_count ==3){

                  mpu_count =0;

                  mpu_flag =0;show_mpu(0);}}}}

                  代码结构如图


                代码结构图

                  四、系统测试


                系统测试

                  五、总结

                  想要实现更多◥的研究,就要深入的理解它,如果我们可■以在智能手环中,我们可以引入操作系统,使用一些可以跑操作系统(Android)的处理器,可以让多功能的实现不是那么的有难度。

                来ㄨ源于网络侵删

                上一篇:下一篇: