——瘋殼·智能穿戴開發(fā)系列 心率監(jiān)測(cè)
1心率測(cè)量原理簡(jiǎn)介
我們手環(huán)的心率測(cè)量, 采用的是 PPG 光電容積脈搏波描記法原理(PhotoPlethysmoGraphy)。簡(jiǎn)單來(lái)說(shuō),就是利用血液中透光率的脈動(dòng)變化,折算成電信號(hào),對(duì)應(yīng)的就是心率。
當(dāng)一定波長(zhǎng)的光束照射到皮膚表面時(shí),光束將通過反射方式傳送到光電接收器,在此過程中由于受到皮膚肌肉和血液的吸收衰減作用,檢測(cè)器檢測(cè)到的廣強(qiáng)度將減弱。其中皮膚、肌肉組織等對(duì)光的吸收在整個(gè)血液循環(huán)中是保持恒定不變的,而皮膚內(nèi)的血液,容積在心臟作用下呈搏動(dòng)性變化。當(dāng)心臟收縮時(shí)外周血容量最多光吸收量也最大,檢測(cè)到的反射光強(qiáng)度最小。而在心臟舒張時(shí),檢測(cè)到的光強(qiáng)度最大,使光接收器接收到的光強(qiáng)度隨之呈脈動(dòng)性變化。最后,我們通過DA14580 的 ADC 采集光接收器的電信號(hào),計(jì)算出心率。
2硬件設(shè)計(jì)
我們的心率傳感器由兩部分組成,如下圖所示。
第一個(gè)張圖 HY1303 其實(shí)是一個(gè) LED 和一個(gè)光傳感器,將采集到的光強(qiáng)轉(zhuǎn)換成電壓,從第 6 引腳輸出。然后通過第二張圖 HY232 放大電壓。
圖 1
圖 2
3軟件設(shè)計(jì)
第一步,就是系統(tǒng)的初始化。
代碼1
由于本次要使用串口打印,我們就設(shè)置串口管腳,使能串口,對(duì)串口進(jìn)行初
始化。
GPIO_ConfigurePin(UART2_GPIO_PORT, UART2_TX_PIN, OUTPUT, PID_UART2_TX, false);
GPIO_ConfigurePin(UART2_GPIO_PORT, UART2_RX_PIN, INPUT, PID_UART2_RX, false);
SetBits16(CLK_PER_REG, UART2_ENABLE, 1);
// Initialize UART component
uart2_init(UART2_BAUDRATE, UART2_DATALENGTH);
我們的心率需要的采樣周期是 4ms 到 10ms,這里用 的是 10ms,就需要通過 void my_timer_init(void)開啟一個(gè)定時(shí)器。
代碼2
每 過 10ms , 定 時(shí) 器 0 就 會(huì) 產(chǎn) 生 一 次 中 斷 , 進(jìn) 入 回 調(diào) 函 數(shù)
timer0_general_user_callback_function,在回調(diào)函數(shù)中,我們就使用 ADC 采集數(shù)據(jù)。
最后通過函數(shù) ADC_CAPTRUE(adc_heart ,&hr_capture)就可以得到心率值。adc_hreat 是 ADC 數(shù)字電壓,hr_capture 就是心率值了。
代碼3
代碼4
4實(shí)驗(yàn)現(xiàn)象
首先,插好 Jlink 和 USB 轉(zhuǎn)串口,然后打開打開串口調(diào)試助手。
(1)選擇串口號(hào),我們圖中是 COM1,這個(gè)根據(jù)實(shí)際情況選擇。
(2)配置串口參數(shù),波特率為 115200,數(shù)據(jù)位 8,停止位 1,沒有校驗(yàn)位和控制流,與下圖一致。
(3)點(diǎn)擊打開串口。
圖 3
配置完串口之后,打開我們提供的代碼。
(1)點(diǎn)擊仿真按鍵。
圖 4
(2)點(diǎn)擊運(yùn)行代碼。
圖5
完成之后,就能看到串口調(diào)試助手接收框信息如下。
圖 6
如需定制開發(fā),請(qǐng)通過官網(wǎng)“瘋殼”網(wǎng)頁(yè)底部的“聯(lián)系我們”進(jìn)行聯(lián)系
文件下載請(qǐng)點(diǎn)擊:
7_(100%開源)藍(lán)牙心率防水運(yùn)動(dòng)手環(huán)_心率監(jiān)測(cè).pdf
(677.56 KB)
2022-8-30 11:56 上傳
點(diǎn)擊文件名下載附件
下載積分: 積分 -1
|