成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HarmonyOS基于LYEVK-3861開發心率和血氧檢測

開發 前端 OpenHarmony
本次實驗使用的是GPIO模擬I2C通信,I2C協議規定在總線上出現起始信號start后,若SCL在高電平期間SDA保持電平不變,則SDA的狀態表示有效數據(data valid)。

[[420002]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

前言

由于本人愛好爬山,去過很多高海拔的地方,每次出行都會攜帶心率和血氧檢測儀。其實很多人對高反不是很了解。高反,是人體在缺氧情況下,對環境的不適應。人體在一定氧氣的情況下可以很舒服的呼吸,但是高原因為海拔高,氣壓低,空氣干燥,供給的氧氣稀薄,使得人體的機能無法正常工作,就會出現嘔吐、頭暈頭疼、流鼻血、浮腫的各種情況。

海拔高度一般達到2700米,就會有高原反應。

海拔高度(米) 為0海拔含氧量的% 

 

那我們如何去判斷自己是否有高反呢?

可以通過血氧飽和度來判定,當我們血氧飽和度低于80%的時候就會有高原反應了。

血氧:是指血液中的氧氣,人體正常血氧飽和度為95%以上。血液中含氧量越高,人的新陳代謝就越好。當然血氧含量高并不是一個好的現象,人體內的血氧都是有一定的飽和度,過低會造成機體供氧不足,過高會導致體內細胞老化。

本次內容講解基于LYEVK-3861開發板完成一個簡單的心率和血氧檢測,來檢查身體的狀態。主要測量HR-心率 、SaO2-血氧。

效果演示 

[[420003]]

環境準備

1、開發環境、編譯環境搭建,參考官方文檔,此處不在贅述。參考鏈接如下:

Window開發環境

Ubuntu編譯環境

2、OpenHarmony 2.0 Canary源碼 源碼獲取,參考:

源碼獲取說明

鏡像全量下載

3、LYEVK-3861 IoT物聯網開發板套件:

LYEVK-3861開發板

開發調試

1、基礎介紹

血氧檢測傳感器選用的是MAX30102,其大致的工作原理將RED/IR 光射向皮膚,透過皮膚組織反射回的光被光敏傳感器接受并轉換成電信號,再經過AD轉換成數字信號。簡化過程:光–> 電 --> 數字信號,然后將數字信號通過I2C與主控交互。

本次實驗使用的是GPIO模擬I2C通信,I2C協議規定在總線上出現起始信號start后,若SCL在高電平期間SDA保持電平不變,則SDA的狀態表示有效數據(data valid)。在傳輸數據時SDA的改變必須只能發生在SCL為低電平期間,每一bit數據有1個時鐘脈沖時長,I2C串行總線上的數據傳輸時序如下圖所示:

HarmonyOS 基于LYEVK-3861開發心率和血氧檢測-鴻蒙HarmonyOS技術社區

I2C協議規定每個被尋址設備在接收1字節數據后都必須向發送字節的設備發送應答(ACK)信號,確認的器件必須在應答時鐘脈沖期間下拉SDA線,使得SDA線在應答相關時鐘脈沖SCL為高電平期間穩定為低電平。

I2C協議規定與ACK信號相反的信號為非應答(not ACK)信號。在主器件從從器件中讀取數據時,主器件必須在讀取的最后1字節數據后在SDA總線上產生not ACK信號以示意從器件停止發送數據。not ACK信號是在SCL為高電平期間保持SDA也為高電平。

根據時序圖,用GPIO模擬IIC通信,

2、開始調試

先用GPIO模擬初始化IIC

  1. void IIC_Init(void){     
  2.     GpioInit();  
  3.     IoSetFunc(PIN_SCL, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);// SCL 
  4.     GpioSetDir(PIN_SCL, WIFI_IOT_GPIO_DIR_OUT); 
  5.  
  6.     IoSetFunc(PIN_SDA, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);// SDA 
  7.     GpioSetDir(PIN_SDA, WIFI_IOT_GPIO_DIR_OUT); 
  8.     IIC_SCL(1); 
  9.     IIC_SDA(1); 
  10.      
  11.     IoSetFunc(PIN_INT, WIFI_IOT_IO_FUNC_GPIO_8_GPIO);// INT 
  12.     GpioSetDir(PIN_INT, WIFI_IOT_GPIO_DIR_IN); 

用GPIO模擬IIC起始信號

  1. void IIC_Start(void){ 
  2.     SDA_OUT();     //sda線輸出 
  3.     IIC_SDA(1);        
  4.     IIC_SCL(1); 
  5.     delay_us(4); 
  6.     IIC_SDA(0);//START:when CLK is high,DATA change form high to low  
  7.     delay_us(4); 
  8.     IIC_SCL(0);//鉗住I2C總線,準備發送或接收數據  
  9. }    

 用GPIO模擬IIC停止信號

  1. void IIC_Stop(void){ 
  2.     SDA_OUT();//sda線輸出 
  3.     IIC_SCL(0); 
  4.     IIC_SDA(0);//STOP:when CLK is high DATA change form low to high 
  5.     delay_us(4); 
  6.     IIC_SCL(1);  
  7.     IIC_SDA(1);//發送I2C總線結束信號 
  8.     delay_us(4);                                 

 用GPIO模擬產生ACK應答信號

  1. void IIC_Ack(void){ 
  2.     IIC_SCL(0); 
  3.     SDA_OUT(); 
  4.     IIC_SDA(0); 
  5.     delay_us(2); 
  6.     IIC_SCL(1); 
  7.     delay_us(2); 
  8.     IIC_SCL(0); 

 用GPIO模擬產生not ACK應答

  1. void IIC_NAck(void){ 
  2.     IIC_SCL(0); 
  3.     SDA_OUT(); 
  4.     IIC_SDA(1); 
  5.     delay_us(2); 
  6.     IIC_SCL(1); 
  7.     delay_us(2); 
  8.     IIC_SCL(0); 
  9. }    

 用GPIO模擬等待應答信號,如果返回值是1,則接受應答失敗,如果返回值是0,則接受應答成功

  1. u8 IIC_Wait_Ack(void){ 
  2.     u8 ucErrTime=0; 
  3.     SDA_IN();      //SDA設置為輸入   
  4.     IIC_SDA(1);delay_us(1);     
  5.     IIC_SCL(1);delay_us(1);   
  6.      
  7.     #if 1 
  8.     while(READ_SDA){ 
  9.         ucErrTime++; 
  10.         if(ucErrTime>250) 
  11.         { 
  12.             IIC_Stop(); 
  13.             //printf("IIC_Wait_Ack erro\r\n"); 
  14.             return 1; 
  15.         } 
  16.     } 
  17.     #else 
  18.     ucErrTime++; 
  19.     delay_us(3); 
  20.      
  21.     #endif 
  22.     IIC_SCL(0);//時鐘輸出0      
  23.     return 0;   
  24. }  

發送數據的實現

  1. void IIC_Send_Byte(u8 txd){                         
  2.     u8 t;    
  3.     SDA_OUT();       
  4.     IIC_SCL(0);//拉低時鐘開始數據傳輸 
  5.      
  6.     for(t=0;t<8;t++){               
  7.         IIC_SDA((txd&0x80)>>7); 
  8.         txd<<=1;       
  9.         delay_us(2);   //對TEA5767這三個延時都是必須的 
  10.         IIC_SCL(1); 
  11.         delay_us(2);  
  12.         IIC_SCL(0);  
  13.         delay_us(2); 
  14.     }     
  15. }  

 IIC發送一個字節,返回從機有無應答,返回值是1時有應答,返回值是0時無應答

  1. u8 IIC_Read_Byte(unsigned char ack){ 
  2.     unsigned char i,receive=0; 
  3.     SDA_IN();//SDA設置為輸入 
  4.     for(i=0;i<8;i++ ){ 
  5.         IIC_SCL(0);  
  6.         delay_us(2); 
  7.         IIC_SCL(1); 
  8.         receive<<=1; 
  9.         if(READ_SDA)receive++;    
  10.         delay_us(1);  
  11.     }    
  12.      
  13.     if (!ack) 
  14.         IIC_NAck();//發送nACK 
  15.     else 
  16.         IIC_Ack(); //發送ACK    
  17.     return receive; 

讀1個字節,ack=1時,發送ACK,ack=0時,發送nACK

在主函數里初始化IIC,再初始化芯片里的相關寄存器

HarmonyOS 基于LYEVK-3861開發心率和血氧檢測-鴻蒙HarmonyOS技術社區

在max30102.c里按照芯片規格書,通過模擬的IIC對寄存器進行讀取,再調用下芯片原廠提供的算法,將采集到的值輸出在顯示屏上

HarmonyOS 基于LYEVK-3861開發心率和血氧檢測-鴻蒙HarmonyOS技術社區

3、結語

以上都完成之后,就可以編譯、燒錄,就可以測試最后的完成效果。

對于想去高海拔的小伙伴們,可以帶一個便攜式血氧檢測儀,隨時監控自己的身體狀況哦~

文章相關附件可以點擊下面的原文鏈接前往下載

心率和血氧檢測demo.rar

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-11-05 09:58:58

鴻蒙HarmonyOS應用

2021-10-11 10:07:09

鴻蒙HarmonyOS應用

2021-09-02 15:25:53

鴻蒙HarmonyOS應用

2021-08-17 14:40:43

鴻蒙HarmonyOS應用

2021-04-08 21:10:24

辦公

2020-12-15 11:57:49

Hi3861 HarmonyOS開發板

2021-12-06 15:05:41

鴻蒙HarmonyOS應用

2020-11-30 13:57:48

Hi3861

2022-12-30 12:15:16

芯片DIY

2021-12-20 21:01:52

鴻蒙HarmonyOS應用

2021-09-09 10:06:09

鴻蒙HarmonyOS應用

2021-09-16 10:03:39

鴻蒙HarmonyOS應用

2017-03-21 08:41:51

iOS手機攝像頭檢測心率

2021-12-31 15:07:00

鴻蒙HarmonyOS應用

2020-11-02 12:07:11

鴻蒙 GPIO

2024-07-04 09:22:24

2022-07-19 20:25:54

鴻蒙MaskRCNN算法

2020-10-28 10:00:09

海思Hi3861CentOS鴻蒙LiteOS

2022-11-09 11:02:00

2020-11-03 12:26:55

Hi3861
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区在线 | 蜜桃在线一区二区三区 | 亚洲成人一级 | 视频一二区 | 国产乱码高清区二区三区在线 | 91亚洲国产| 男女污网站 | 日韩av免费看 | 欧美在线a | 成人免费在线电影 | 91精品国模一区二区三区 | 成人欧美在线 | 一级做a爰片性色毛片16美国 | 国产精品久久国产精品久久 | 国产999精品久久久久久 | 午夜免费福利电影 | 中文字幕不卡 | 亚洲精品短视频 | 久久综合九色综合欧美狠狠 | 日韩中文字幕在线观看 | 久久精品av麻豆的观看方式 | 日韩欧美视频网站 | 国产免费拔擦拔擦8x高清 | 91久操网 | 99久视频| 激情视频中文字幕 | 综合久久久 | 久久久久久久一区二区三区 | 日韩a在线 | 伊人久久免费 | 99精品久久久国产一区二区三 | 国产一区三区在线 | 日日做夜夜爽毛片麻豆 | 国产99视频精品免费播放照片 | 精品一区二区久久久久久久网站 | 日韩一区二区三区视频 | 亚洲成人精品在线 | 天堂成人国产精品一区 | 午夜免费福利片 | 日韩 欧美 综合 | 农村黄性色生活片 |