開(kāi)源藍(lán)牙心率防水運(yùn)動(dòng)手環(huán) 心率監(jiān)測(cè) ——瘋殼·智能穿戴開(kāi)發(fā)系列 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í),光束將通過(guò)反射方式傳送到光電接收器,在此過(guò)程中由于受到皮膚肌肉和血液的吸收衰減作用,檢測(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)性變化。最后,我們通過(guò)DA14580 的 ADC 采集光接收器的電信號(hào),計(jì)算出心率。 2硬件設(shè)計(jì) 我們的心率傳感器由兩部分組成,如下圖所示。 第一個(gè)張圖 HY1303 其實(shí)是一個(gè) LED 和一個(gè)光傳感器,將采集到的光強(qiáng)轉(zhuǎn)換成電壓,從第 6 引腳輸出。然后通過(guò)第二張圖 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,就需要通過(guò) void my_timer_init(void)開(kāi)啟一個(gè)定時(shí)器。 代碼2 每 過(guò) 10ms , 定 時(shí) 器 0 就 會(huì) 產(chǎn) 生 一 次 中 斷 , 進(jìn) 入 回 調(diào) 函 數(shù) timer0_general_user_callback_function,在回調(diào)函數(shù)中,我們就使用 ADC 采集數(shù)據(jù)。 最后通過(guò)函數(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)串口,然后打開(kāi)打開(kāi)串口調(diào)試助手。 (1)選擇串口號(hào),我們圖中是 COM1,這個(gè)根據(jù)實(shí)際情況選擇。 (2)配置串口參數(shù),波特率為 115200,數(shù)據(jù)位 8,停止位 1,沒(méi)有校驗(yàn)位和控制流,與下圖一致。 (3)點(diǎn)擊打開(kāi)串口。 圖 3 配置完串口之后,打開(kāi)我們提供的代碼。 (1)點(diǎn)擊仿真按鍵。 圖 4 (2)點(diǎn)擊運(yùn)行代碼。 圖5 完成之后,就能看到串口調(diào)試助手接收框信息如下。 圖 6 配套資料:https://www.fengke.club/GeekMart/su_fkZyGYgrp.jsp 配套視頻:https://www.fengke.club/GeekMart/su_fTSgUL3y3.jsp 套件地址:http://shop115904315.taobao.com 文件下載請(qǐng)點(diǎn)擊: |