日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
HarmonyOS基于LYEVK-3861開(kāi)發(fā)心率和血氧檢測(cè)

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

創(chuàng)新互聯(lián)建站是一家專業(yè)提供南州晴隆企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為南州晴隆眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.

前言

由于本人愛(ài)好爬山,去過(guò)很多高海拔的地方,每次出行都會(huì)攜帶心率和血氧檢測(cè)儀。其實(shí)很多人對(duì)高反不是很了解。高反,是人體在缺氧情況下,對(duì)環(huán)境的不適應(yīng)。人體在一定氧氣的情況下可以很舒服的呼吸,但是高原因?yàn)楹0胃撸瑲鈮旱?,空氣干燥,供給的氧氣稀薄,使得人體的機(jī)能無(wú)法正常工作,就會(huì)出現(xiàn)嘔吐、頭暈頭疼、流鼻血、浮腫的各種情況。

海拔高度一般達(dá)到2700米,就會(huì)有高原反應(yīng)。

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

那我們?nèi)绾稳ヅ袛嘧约菏欠裼懈叻茨?

可以通過(guò)血氧飽和度來(lái)判定,當(dāng)我們血氧飽和度低于80%的時(shí)候就會(huì)有高原反應(yīng)了。

血氧:是指血液中的氧氣,人體正常血氧飽和度為95%以上。血液中含氧量越高,人的新陳代謝就越好。當(dāng)然血氧含量高并不是一個(gè)好的現(xiàn)象,人體內(nèi)的血氧都是有一定的飽和度,過(guò)低會(huì)造成機(jī)體供氧不足,過(guò)高會(huì)導(dǎo)致體內(nèi)細(xì)胞老化。

本次內(nèi)容講解基于LYEVK-3861開(kāi)發(fā)板完成一個(gè)簡(jiǎn)單的心率和血氧檢測(cè),來(lái)檢查身體的狀態(tài)。主要測(cè)量HR-心率 、SaO2-血氧。

效果演示 

環(huán)境準(zhǔn)備

1、開(kāi)發(fā)環(huán)境、編譯環(huán)境搭建,參考官方文檔,此處不在贅述。參考鏈接如下:

Window開(kāi)發(fā)環(huán)境

Ubuntu編譯環(huán)境

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

源碼獲取說(shuō)明

鏡像全量下載

3、LYEVK-3861 IoT物聯(lián)網(wǎng)開(kāi)發(fā)板套件:

LYEVK-3861開(kāi)發(fā)板

開(kāi)發(fā)調(diào)試

1、基礎(chǔ)介紹

血氧檢測(cè)傳感器選用的是MAX30102,其大致的工作原理將RED/IR 光射向皮膚,透過(guò)皮膚組織反射回的光被光敏傳感器接受并轉(zhuǎn)換成電信號(hào),再經(jīng)過(guò)AD轉(zhuǎn)換成數(shù)字信號(hào)。簡(jiǎn)化過(guò)程:光–> 電 --> 數(shù)字信號(hào),然后將數(shù)字信號(hào)通過(guò)I2C與主控交互。

本次實(shí)驗(yàn)使用的是GPIO模擬I2C通信,I2C協(xié)議規(guī)定在總線上出現(xiàn)起始信號(hào)start后,若SCL在高電平期間SDA保持電平不變,則SDA的狀態(tài)表示有效數(shù)據(jù)(data valid)。在傳輸數(shù)據(jù)時(shí)SDA的改變必須只能發(fā)生在SCL為低電平期間,每一bit數(shù)據(jù)有1個(gè)時(shí)鐘脈沖時(shí)長(zhǎng),I2C串行總線上的數(shù)據(jù)傳輸時(shí)序如下圖所示:

I2C協(xié)議規(guī)定每個(gè)被尋址設(shè)備在接收1字節(jié)數(shù)據(jù)后都必須向發(fā)送字節(jié)的設(shè)備發(fā)送應(yīng)答(ACK)信號(hào),確認(rèn)的器件必須在應(yīng)答時(shí)鐘脈沖期間下拉SDA線,使得SDA線在應(yīng)答相關(guān)時(shí)鐘脈沖SCL為高電平期間穩(wěn)定為低電平。

I2C協(xié)議規(guī)定與ACK信號(hào)相反的信號(hào)為非應(yīng)答(not ACK)信號(hào)。在主器件從從器件中讀取數(shù)據(jù)時(shí),主器件必須在讀取的最后1字節(jié)數(shù)據(jù)后在SDA總線上產(chǎn)生not ACK信號(hào)以示意從器件停止發(fā)送數(shù)據(jù)。not ACK信號(hào)是在SCL為高電平期間保持SDA也為高電平。

根據(jù)時(shí)序圖,用GPIO模擬IIC通信,

2、開(kāi)始調(diào)試

先用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起始信號(hào)

 
 
 
 
  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總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)  
  9. }    

 用GPIO模擬IIC停止信號(hào)

 
 
 
 
  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);//發(fā)送I2C總線結(jié)束信號(hào) 
  8.     delay_us(4);                                 

 用GPIO模擬產(chǎn)生ACK應(yīng)答信號(hào)

 
 
 
 
  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模擬產(chǎn)生not ACK應(yīng)答

 
 
 
 
  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模擬等待應(yīng)答信號(hào),如果返回值是1,則接受應(yīng)答失敗,如果返回值是0,則接受應(yīng)答成功

 
 
 
 
  1. u8 IIC_Wait_Ack(void){ 
  2.     u8 ucErrTime=0; 
  3.     SDA_IN();      //SDA設(shè)置為輸入   
  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);//時(shí)鐘輸出0      
  23.     return 0;   
  24. }  

發(fā)送數(shù)據(jù)的實(shí)現(xiàn)

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

 IIC發(fā)送一個(gè)字節(jié),返回從機(jī)有無(wú)應(yīng)答,返回值是1時(shí)有應(yīng)答,返回值是0時(shí)無(wú)應(yīng)答

 
 
 
 
  1. u8 IIC_Read_Byte(unsigned char ack){ 
  2.     unsigned char i,receive=0; 
  3.     SDA_IN();//SDA設(shè)置為輸入 
  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();//發(fā)送nACK 
  15.     else 
  16.         IIC_Ack(); //發(fā)送ACK    
  17.     return receive; 

讀1個(gè)字節(jié),ack=1時(shí),發(fā)送ACK,ack=0時(shí),發(fā)送nACK

在主函數(shù)里初始化IIC,再初始化芯片里的相關(guān)寄存器

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

3、結(jié)語(yǔ)

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

對(duì)于想去高海拔的小伙伴們,可以帶一個(gè)便攜式血氧檢測(cè)儀,隨時(shí)監(jiān)控自己的身體狀況哦~

文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載

心率和血氧檢測(cè)demo.rar

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.


當(dāng)前標(biāo)題:HarmonyOS基于LYEVK-3861開(kāi)發(fā)心率和血氧檢測(cè)
當(dāng)前URL:http://m.5511xx.com/article/ccocoed.html