嵌入式智能手環系統方案設計

2020-09-02 11:59:38分類:軟件開發5809

  生活節奏的加快,人們更多的依賴智能產品,除了能幫減輕生活繁雜的智能洗衣機,智能電飯鍋等外,還注重在自身健康上的智能檢測產品,智能手環就作為中的一種代表性產物。其主要應用于運動顯示比如顯示行走及跑步的步數,距離,速度。同時可以實時健康監測比如心率,血氧,體溫等。那么智能手環是如何實現的呢,下面我們來看看嵌入式智能手環系統方案設計的整體流程。

  目錄

  一、系統方案的設計

  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)的處理器,可以讓多功能的實現不是那么的有難度。

來源于網絡侵刪

上一篇:下一篇:
中文天堂最新版在线www-bt天堂网www天堂-电影天堂 越光宝 电影
失控玩家 突围 意大利错失直接晋级世界杯资格 24岁救人牺牲消防员获批为烈士 中美元首是否达成新共识?中方回应 星际穿越 意大利错失直接晋级世界杯资格 嘉南传 国足最新出线概率0.08% 男子体检血中抽出2升油浆 尚气与十环传奇 男子写80页PPT拯救爱情却离婚 大连一密接者擅自点外卖聚餐被调查 中国共产党第三个历史决议全文发布 速度与激情9 千与千寻 国足战澳大利亚大名单:4归化在列 许家印为恒大注入超70亿续命资金 灵媒 24岁救人牺牲消防员获批为烈士 男子体检血中抽出2升油浆 意大利错失直接晋级世界杯资格 大连一密接者擅自点外卖聚餐被调查 花木兰 房价上涨城市创七年新低 拐点来了? 我要我们在一起 俄方回应卫星碎片危及国际空间站 大连一密接者擅自点外卖聚餐被调查 美人鱼 200斤鳄鱼被吓后待水里溺死 我要我们在一起 动保组织向上饶信州区申请信息公开 长津湖 速度与激情9 红色通缉令 加拿大一枝黄花到底是什么? 长津湖 24岁救人牺牲消防员获批为烈士 星际穿越 长津湖 灵媒 斛珠夫人 扫黑风暴 24岁救人牺牲消防员获批为烈士 北京冬奥火炬宣传片获金花环奖 蜘蛛侠:英雄归来 你好李焕英 美人鱼 罗永浩吐槽苹果文案没文化 房价上涨城市创七年新低 拐点来了? 北京冬奥火炬宣传片获金花环奖 周冠宇成为中国首位F1车手 印度首都准备封城 斛珠夫人 意大利错失直接晋级世界杯资格 安娜贝尔 入殓师 24岁救人牺牲消防员获批为烈士 林丹世界排名被正式移除 男子写80页PPT拯救爱情却离婚 你好李焕英 失控玩家 动保组织向上饶信州区申请信息公开 中美元首是否达成新共识?中方回应 许家印为恒大注入超70亿续命资金 沙丘 逆局 甄嬛传 扫黑风暴 男子写80页PPT拯救爱情却离婚 大连现超级传播者26人在同一传播链
周至县| 宁乡县| 天峨县| 黄山市| 镇原县| 屯昌县| 福贡县| 哈尔滨市| 张家口市| 宁国市| 贵南县| 交城县| 镇沅| 习水县| 大悟县| 交城县| 张家港市| 英超| 游戏| 溆浦县| 玉门市| 丹棱县| 桦甸市| 资阳市|