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