基於Pixart PAH8013ES+STM32F411實現耳機血氧與心率的檢測方案

耳朵是僅次於手指尖,毛細血管次豐富的地方,相對於手腕而言,光學式測量方案,從耳機會更容易到得到高質量的PPG信號,更有利於更高精準運動心率與血氧效果的測試。

本方案是基於原相的PAH8013ES +主控SMT32F411+ Gsensor LIS3DH, 實現在耳機環境下實現高精性實時運動心率與血氧的測試方案,提供從硬體、FW、結構產品級應用指導。原相PAH8013是針對耳機應用方向的原相第二代光學PPG傳感器,相比第一代8003產品,除性能提供外,運行功耗和待機功耗進一步降低,同時改用IR光源不可見光源測量PPG信號,改善第一代產品綠光方式會從耳朵背面看到綠光閃問題。PAH8013除測量運動心率外,還可以測量血氧飽和度。 血氧飽和度(SpO2)是血液中被氧結合的氧合血紅蛋白(HbO2)的容量占全部可結合的血紅蛋白(Hb)容量的百分比,即血液中血氧的濃度,它是呼吸循環的重要生理參數。PAH8013通過IR和紅光 兩種光源,通過檢測打入皮膚反射回的 IR和紅光的比例,通過算法算出相關的血氧值。
 
STM32F411 是Cortex®-M4內核(具有浮點單元)的性能MCU,最高可工作在100 MHz主頻,晶片內置高達256至512KB的Flash存儲器和高達128KB的SRAM,為算法及後續的應用功能再擴展提供充足的空間。另外STM32F411 具有封裝小,出色的低功耗性能,同時性價比高,更適用於對性能體積與價錢有需求的耳機產品。 


硬體部分
PAH8013ES與STM32F411採用i2c方式的通信接口,並加上中斷狀態線INT和休眠控制線。其中8013的9腳與10腳接到SMT32F411的PB8和PA11的i2c接口連接腳,採用400HZ速率;8013的13腳中斷信號INT1與MCU PA10連接,8013的休眠控制線PD與MCU PA12連接,其中INT1用於中斷方式用於接到PPG數據;PD腳用於在不使用PAH8013ES時,通過MCU接高PD腳讓PAH8013進入休眠省電狀態。
Gsensor Lis3dh採用SPI方式與STM32F411通信接口, Lis3dh的SPI接到STM32F411的PA15、PB4、PB4、PB5 的晶片腳上,通信速率1M,外加中斷通信線INT1和INT2,使用STM32F411的PA8、PA9。
板上的供電系統由一個3.3V和一個1.8V的LDO組成,給MCU、Gsensor及PAH8013ES提供所需的電壓,各器件的IO通信電平使用3.3V。

原理圖
  主板部分


   光學小板模組部分


PCB layout




軟體接口部分
心率與血氧的算法放在STM32F411上運行,STM32F411每200ms從PAH8013讀取40筆PPG數據及從LIS3DH讀取約45筆左右 MENS,通過PPG數據與MENS數據運算出心率與血氧值,而MENS數據負責對運動作狀態下的數據進行精度補嘗。
在主函數調用demo_ppg_dri_HRD_SPO2();啟動心率與血氧測試,約8~10秒算出第一個心率與血氧值,之後約每秒更新一次數值
心率與血氧的獲取接口如下:
pah8series_get_hr(&hr);------是獲取心率數據的接口,由於算法是算浮點數,在數值顯示直接顯示整數部分
SpO2_GetSpO2(&mySpO2);---是獲取血氧數據的接口,輸出整數,直接顯示整數百分比就可



PROTING簡介
pah8series_config.h文件的修改
1.#define ENABLE_MEMS_ZERO 關掉
如果系統的Gsensor還沒有調好,可以先把此宏打開,先測試靜態心率。此時會送入全0的Gsensor給算法,
注意:Gsensor調好後,不論靜態動態,都需送入真實的Gsensor數據
2.設定Gensor量程,目前用的是-+8G量程,所以設定#define ALG_GSENSOR_MODE 4 
3.根據所用的晶片型號,Cover設計方式、IO通信方式,打開以下宏定義
//-------Sensor IC Type---------//
#define __PAH8013ES
//-------Cover Type---------//
#define _DI_COVER
//-------IO Interface---------//
#define _I2C
main.c修改
1.設定中斷回調函數 gpio_in_interrupt_handler(GPIO_IN gpio)
2.送入正確的系統的tick時間,get_tick_count()-----單位為ms
 
pah_hrd_function.c修改
1.啟動ppg數據採樣時,同時啟動Gsensor數據採樣,調用accelerometer_start();這樣可確保數據同步,
2.接收到的Gsensor數據送入指定的下面地方以便算法取得,accelerometer_get_fifo(&_state.pxialg_data.mems_data, &_state.pxialg_data.nf_mems);
3.進入touch mode或離開心率模式,停止Gsensor數據採樣,調用accelerometer_stop();
關於同步說明,PPG第一筆數據要與Gsensor第一筆數據時間上對齊,這樣算法在插補後,每個ppg時間點才能與gsensor時間點一致,否則可以導致運動心率異常。目前是以ppg中斷去接收Gsensor
 
pah_comm.c
根據通信方式與STM平台接口,補全讀、與及 連讀接口代碼
bool pah_comm_write(uint8_t addr, uint8_t data)
bool pah_comm_read(uint8_t addr, uint8_t *data)
bool pah_comm_burst_read(uint8_t addr, uint8_t *data, uint16_t num)
 
算法接口簡介
PXIALG_API uint32_t pah8series_version(void);---讀取算法版本
PXIALG_API uint32_t pah8series_query_open_size(void);----確認申請在系統上所需開內存大小
PXIALG_API uint8_t  pah8series_open(void *pBuffer);-----給算法開啟pah8series_query_open_size確認的內存空間
PXIALG_API uint8_t  pah8series_close(void);---算法關閉
PXIALG_API uint8_t  pah8series_reset(void);---算法重啟
PXIALG_API uint8_t  pah8series_set_param(pah8series_param_idx_t idx, float p1);---算法參考設定1
PXIALG_API uint8_t  pah8series_get_param(pah8series_param_idx_t idx, float *p1);;---算法參考設定2
PXIALG_API uint8_t  pah8series_get_hr(float *hr);---算法心率接口,0~255
PXIALG_API uint8_t  pah8series_get_hr_trust_level(int *hr_trust_level);---信號可信度,0~4,數值越大,可信度就越高
PXIALG_API uint8_t  pah8series_entrance(pah8series_data_t *pah8series_data);----PPG與Gsensor數據傳入接口
PXIALG_API uint8_t  pah8series_get_signal_level(int ch, uint8_t *signal_level);---信號分數,0~100,,數值越大,信號就越好
PXIALG_API uint8_t  pah8series_get_motion_flag(uint8_t *motion_flag);---檢查用戶運動狀態,0靜止,1運動
PXIALG_API uint8_t  pah8series_get_wear_index(uint32_t expo_time[3], uint8_t led_dac[3], uint8_t checkRaw, int *wear_index);----判定用戶佩戴鬆緊度,wear_index為0~3,0表示佩戴好,1~3數越大,佩戴越差
PXIALG_API int SpO2_GetSpO2(float *spo2);---算法血氧接口,0~100
PXIALG_API int SpO2_GetReadyFlag(uint8_t *ready_flag);---血氧算法標誌


調試log如下



結構部分
如何保證在耳道有持續穩定的測量,結構設計起到關鍵的作用。優秀的設計,能保證適用於各種人群的耳朵,並在運動中仍保證耳機與皮膚優秀的接觸穩定性
Cover設計結構如下圖:
1.最上方灰色部分rubber軟膠套,增加在佩戴時的接觸舒適性
2.中間部分黑色為硬塑料模,此部分需要做要雙料射出工藝,以有效在機構內部隔離串光問題
2.下方灰色為8013光學模組PCB板,需與中間部分黑色硬塑件緊貼,如漏光會對性能有較大影響
光學鏡片開孔尺寸如下

另外由於在運動中,耳機有存在持續震動現場,而能否保證sensor Cover與皮膚能有效接觸到,對PPG信號有至關重要,而一個適合的耳塞套對保持耳機在運動中的穩定性起到重要作用。
由於不同人的耳朵大小結構不同,一般會建議給用戶至少配置如下3個尺寸(S、M、L),推存尺寸參考如下

►場景應用圖

►產品實體圖

►方案方塊圖

►核心技術優勢

1. 耳道環境下的連續實時的心率與血氧測試  2. 集成超低功率模式,休眠模式下低至1uA 3. 觸摸檢測功能用不可見光(IR光源) 4. 抗環境光干擾的光學塗層 5. 集成的高精度的心率與血氧算法

►方案規格

1. 測心率功耗:1370uA(一個紅外燈工作,室內) 2. 測血氧功耗:5810uA(一個紅外燈與紅燈工作,室內) 3. 紅外檢測模式功耗: 30μA 4. 休眠功耗:1uA 5. 心率檢測範圍:0- 255 bpm 6. 血氧檢測範圍:0 - 100%