基于STM32單片機的血氧心率監測系統設計方案


基于STM32單片機的血氧心率監測系統設計方案
在當今快速發展的醫療健康領域,便攜式、實時監測設備的需求日益增長。血氧飽和度(SpO2)和心率(Pulse Rate)是反映人體生理狀況的關鍵指標,對疾病的早期預警、康復監測以及日常健康管理具有重要意義。傳統的血氧心率監測設備多為醫院專用,體積較大,操作復雜。因此,設計一款基于STM32單片機的便攜式、高精度、低功耗的血氧心率監測系統,不僅能滿足個人及家庭健康監測的需求,也能為遠程醫療和智慧養老提供技術支撐。本設計方案將詳細闡述系統的整體架構、核心硬件選型、軟件設計思路以及關鍵技術實現,旨在構建一個穩定可靠、性能優異的血氧心率監測平臺。
本系統以意法半導體(STMicroelectronics)的STM32系列微控制器為核心,利用其強大的處理能力、豐富的外設接口以及低功耗特性,實現對血氧和心率信號的精確采集、處理、分析與顯示。系統將采用光電透射法原理測量血氧和心率,該方法無創、操作簡便,廣泛應用于各類脈搏血氧儀。通過精心選擇傳感器、模擬前端電路、電源管理模塊以及顯示和通信模塊,確保系統在測量精度、功耗控制和用戶體驗之間達到最佳平衡。
1. 系統總體架構設計
基于STM32單片機的血氧心率監測系統主要由以下幾個功能模塊組成:信號采集模塊、模擬前端處理模塊、微控制器核心處理模塊、電源管理模塊、顯示模塊、數據存儲模塊和通信模塊。這些模塊協同工作,共同完成血氧和心率數據的采集、處理、顯示和傳輸。
信號采集模塊是系統的“眼睛”,負責獲取人體脈搏波信號。它通常由紅光LED、紅外光LED以及光電探測器組成。紅光(約660nm)和紅外光(約940nm)是測量血氧的關鍵波長,因為含氧血紅蛋白和脫氧血紅蛋白對這兩種波長的吸收率差異較大。光電探測器則用于接收穿透人體組織后的光信號。
模擬前端處理模塊是連接傳感器和微控制器的橋梁。由于光電探測器輸出的信號通常非常微弱且易受噪聲干擾,因此需要經過一系列的放大、濾波、模數轉換(ADC)等處理,將其轉換為微控制器可以識別的數字信號。這個模塊的性能直接關系到整個系統的測量精度和抗干擾能力。
微控制器核心處理模塊是系統的“大腦”,負責協調和控制各個模塊的工作。它接收來自模擬前端的數字信號,執行復雜的算法(如脈搏波擬合、血氧飽和度計算、心率計算等),并控制顯示模塊顯示結果,同時通過通信模塊將數據發送至外部設備。STM32系列微控制器以其高性能、低功耗和豐富的外設,成為理想的選擇。
電源管理模塊為系統各部分提供穩定可靠的電源。由于是便攜式設備,電池供電是首選,因此電源管理模塊需要具備高效的升降壓、充電管理以及低功耗設計能力,以延長設備續航時間。
顯示模塊負責直觀地向用戶展示測量結果,包括血氧飽和度百分比、心率數值、脈搏波形等。常見的顯示屏有OLED或TFT LCD,它們具有功耗低、對比度高、顯示清晰等優點。
數據存儲模塊(可選)用于存儲歷史測量數據,方便用戶回顧健康趨勢。這可以通過微控制器內部的Flash存儲器或外部的EEPROM/NAND Flash實現。
通信模塊用于實現系統與外部設備的連接,如智能手機、PC或其他物聯網平臺。常見的通信方式包括藍牙(Bluetooth Low Energy, BLE)、Wi-Fi或USB,BLE因其低功耗特性而廣受歡迎。
2. 核心元器件選型與作用分析
在血氧心率監測系統中,元器件的選擇直接影響到系統的性能、功耗、成本和可靠性。以下詳細闡述各個關鍵元器件的選型及其在系統中的作用和選擇理由。
2.1 微控制器(MCU)
優選元器件型號:STM32L476RG
器件作用: 作為整個系統的中央處理器,負責采集信號、執行信號處理算法(如FIR/IIR濾波、FFT變換等)、血氧飽和度(SpO2)和心率(Pulse Rate)的計算、驅動顯示屏、管理電源以及進行數據通信等。它協調并控制所有外設和功能模塊,是系統的核心。
為什么選擇這顆元器件:
低功耗特性: STM32L4系列是ST公司專為低功耗應用設計的微控制器,擁有多種低功耗模式(如停止模式、待機模式、關斷模式等),非常適合電池供電的便攜式醫療設備。在血氧心率監測系統中,低功耗是延長續航時間的關鍵指標。STM32L476RG在運行模式下的功耗表現優異,同時支持快速喚醒,能在不使用時進入超低功耗狀態,最大程度地節省電量。
高性能處理能力: 搭載ARM Cortex-M4F內核,主頻高達80MHz,并集成了浮點運算單元(FPU),能夠高效處理復雜的數字信號處理算法,如FIR/IIR濾波、快速傅里葉變換(FFT)以及血氧飽和度計算所需的矩陣運算等。這確保了測量結果的實時性和準確性。
豐富的外設接口: STM32L476RG集成了多個高性能ADC(12位,最高5Msps)、多個DAC、SPI、I2C、USART、USB FS等豐富的外設接口。這些接口能方便地連接光電傳感器(通過ADC)、顯示屏(通過SPI/FSMC)、藍牙模塊(通過USART)以及用于調試或數據傳輸的USB接口,極大地簡化了硬件設計。
大容量存儲器: 擁有1MB Flash和128KB SRAM,足以存儲復雜的固件程序、算法代碼、歷史數據以及運行時變量。大容量的SRAM對于處理實時信號數據尤其重要,可以避免頻繁訪問外部存儲器,提高系統響應速度。
內置DAC: 內置的12位DAC可以用于產生驅動LED的模擬電壓,或者在某些高級應用中用于自校準或測試。
易于開發: STM32生態系統成熟,擁有豐富的開發工具(STM32CubeMX、Keil MDK、IAR EWARM等)、大量的應用筆記和活躍的社區支持,能夠大大縮短開發周期。
元器件的功能:
A/D轉換控制: 控制內置的高精度ADC對模擬前端處理后的血氧光信號進行數字化,將其轉換為微控制器可處理的數字信號。
數字信號處理: 運行各種數字濾波算法(如帶通濾波、陷波濾波)去除噪聲,對脈搏波形進行平滑處理,提取有效的AC/DC分量。
血氧飽和度與心率計算: 根據朗伯-比爾定律的經驗公式,結合紅光和紅外光的吸收比率,計算血氧飽和度。同時,通過分析脈搏波形的周期或峰值檢測來計算心率。
人機交互與顯示驅動: 控制OLED/LCD顯示屏顯示測量結果(SpO2值、心率值、脈搏波形圖等),并響應用戶按鍵操作。
數據通信: 通過UART接口與藍牙模塊通信,實現數據上傳至手機APP;或通過USB接口與PC進行數據傳輸和系統升級。
電源管理與模式切換: 根據系統運行狀態,切換不同的功耗模式,最大限度地節省電量。
系統狀態監控: 監控電池電量、傳感器連接狀態等,并進行相應的錯誤處理或提示。
2.2 光電傳感器
優選元器件型號:MAX30102 或 MAX30101
器件作用: 作為系統的核心傳感器,MAX30102是一款集成式脈搏血氧和心率傳感器模塊,其內部集成了紅光LED、紅外光LED、光電探測器、以及一個低噪聲模擬前端和19位ADC。它能夠直接輸出經過預處理的數字信號,大大簡化了外圍電路設計。
為什么選擇這顆元器件:
高度集成: MAX30102將LED、PD、模擬前端、ADC、以及I2C通信接口集成在一個小尺寸封裝中,極大地簡化了硬件設計,減少了PCB面積和BOM成本,并降低了噪聲干擾。這對于小型化、便攜式設備至關重要。
高精度與高信噪比: 內部的19位ADC提供了極高分辨率的信號采集能力,結合其優化的模擬前端設計,能夠有效抑制環境光干擾,提供高信噪比的脈搏波形數據,從而保證血氧和心率測量的準確性。
低功耗: 該芯片專為可穿戴設備設計,具有超低功耗特性,在休眠模式下功耗極低,有助于延長電池壽命。在測量模式下,它也能夠通過可編程的LED電流和采樣率來優化功耗。
易于編程: 通過標準的I2C接口與微控制器通信,讀取原始ADC數據,編程控制其工作模式、LED電流、采樣率、脈沖寬度等參數非常方便。
環境光抑制: 內部集成了環境光抑制電路,能夠有效減少陽光或室內照明對測量結果的影響,提高測量穩定性。
元器件的功能:
光發射: 通過內置的紅光LED(約660nm)和紅外光LED(約940nm)輪流發射光信號穿透人體組織。
光接收與轉換: 內置的光電探測器接收穿透人體組織后的光信號,并將其轉換為電流信號。
模擬信號調理: 將光電探測器產生的微弱電流信號進行放大、濾波,去除噪聲。
模數轉換: 將調理后的模擬信號轉換為高精度的數字信號(19位ADC)。
溫度傳感器: 內置溫度傳感器可以用于溫度補償,進一步提高測量精度。
I2C通信: 提供標準的I2C接口,方便微控制器讀取傳感器數據和配置其工作參數。
2.3 模擬前端調理(若不使用集成式傳感器)
如果選擇分立式的LED和光電探測器,則需要獨立的模擬前端電路。
優選元器件型號:
跨阻放大器(TIA): OPA2376A(雙通道,超低噪聲CMOS運算放大器)或TLV2372(雙通道,低功耗軌到軌輸出運算放大器)
儀表放大器: AD8232(集成式心率監測模擬前端,但其主要針對ECG,對于PPG信號放大也需謹慎評估)或INA128/INA333(高精度低功耗儀表放大器)
濾波器: 運算放大器(如LM358、MCP6002等)配合電阻電容構建有源濾波器。
器件作用: 將光電探測器輸出的微弱電流信號轉換為電壓信號,并進行多級放大、濾波,以去除噪聲和環境光干擾,最終輸出適合ADC采集的電壓信號。
為什么選擇這些元器件(以分立式方案為例):
OPA2376A(或TLV2372)作為TIA: 光電二極管輸出的是微弱的電流信號,需要一個跨阻放大器將其轉換為電壓信號。OPA2376A具有超低輸入偏置電流、低噪聲和寬帶寬,能精確地將光電二極管的電流信號轉換為電壓,且不易引入額外噪聲。TLV2372則以其低功耗和軌到軌輸出特性,在電池供電系統中表現優異。
儀表放大器(可選,用于差分放大): 如果信號鏈路中有差分信號,或者需要高共模抑制比,則可使用儀表放大器。INA128/INA333具有高精度、低漂移、高共模抑制比的特點,能有效放大差分信號并抑制共模噪聲。
運算放大器構建濾波器: LM358、MCP6002等通用運放可以靈活地構建多級有源帶通濾波器,濾除工頻干擾(50/60Hz)和高頻噪聲,只保留脈搏波形所需的低頻(0.5-5Hz)信號。選擇低噪聲、低輸入偏置電流的運放至關重要。
元器件的功能(分立式方案):
電流-電壓轉換(TIA): 將光電探測器接收到的光信號(表現為電流)轉換為可測量的電壓信號。
多級放大: 將微弱的電壓信號放大到ADC可接受的范圍,確保ADC的有效分辨率。
有源濾波: 構建帶通濾波器,濾除直流分量(如環境光引起的直流偏置)、高頻噪聲和工頻干擾,提取純凈的脈搏波交流分量。
DC偏置調整: 調整信號的直流偏置,使其位于ADC的輸入范圍內,避免飽和或欠載。
2.4 顯示模塊
優選元器件型號:0.96英寸OLED顯示屏(SSD1306驅動)或1.8英寸TFT LCD(ST7735驅動)
器件作用: 直觀地顯示血氧飽和度百分比、心率數值、脈搏波形圖、電池電量等信息,提供人機交互界面。
為什么選擇這些元器件:
OLED(SSD1306):
自發光: 不需要背光,因此功耗極低,尤其適合電池供電的便攜設備。
高對比度、寬視角: 圖像顯示清晰銳利,即使在弱光環境下也能提供良好的視覺效果。
小尺寸、輕薄: 便于集成到緊湊的設備中。
簡單驅動: 通常通過SPI或I2C接口與微控制器通信,驅動庫成熟且易于使用。
TFT LCD(ST7735):
彩色顯示: 可以顯示更豐富的色彩和更復雜的圖形界面,用戶體驗更好。
相對較大尺寸: 1.8英寸或更大尺寸的TFT LCD可以顯示更多的信息,如完整的脈搏波形圖和歷史數據。
驅動成熟: ST7735等控制器芯片在業界廣泛應用,有大量的開源驅動庫和示例代碼。
選擇考量: 如果追求極致低功耗和小尺寸,OLED是優選;如果對顯示內容豐富度、色彩有更高要求,且功耗預算允許,則TFT LCD是更好的選擇。本設計傾向于OLED,以體現便攜和低功耗優勢。
元器件的功能:
圖形顯示: 繪制血氧飽和度百分比(如SpO2: 98%)、心率數值(如HR: 75 BPM)、脈搏波形圖以及其他系統狀態信息(如電池圖標、藍牙連接狀態)。
字符顯示: 顯示各種文本信息和提示。
用戶界面: 結合按鍵實現簡單的菜單導航和模式切換。
2.5 電源管理模塊
優選元器件型號:
充電管理IC: TP4056(單節鋰電池充電管理)或BQ24072(集成式充電和系統電源管理,更復雜)
LDO穩壓器: AMS1117-3.3(將5V或電池電壓穩壓至3.3V)或MP2315(高效降壓DC-DC轉換器,如果電源電壓較高且需要更高效率)
鋰電池: 3.7V聚合物鋰電池(如500mAh-1000mAh,根據設備尺寸和續航需求選擇)
器件作用: 為整個系統提供穩定、純凈的電源,管理電池充電和放電,并實現高效的電源轉換以延長電池續航。
為什么選擇這些元器件:
TP4056(充電管理IC): TP4056是一款完整的單節鋰離子電池充電管理芯片,體積小巧,充電電流可調,具有過壓、過流、短路、過溫保護功能,性價比高,非常適合小型便攜設備。它能確保鋰電池安全高效充電。
AMS1117-3.3(LDO): 在功耗不大的情況下,LDO(低壓差線性穩壓器)如AMS1117-3.3能夠提供紋波小、噪聲低的3.3V穩定電源,為MCU、傳感器和數字電路供電。雖然效率不如DC-DC,但在小電流應用和對噪聲敏感的場合仍有優勢。
MP2315(DC-DC降壓轉換器,若需要高效率): 如果系統整體功耗較高,或者電池電壓與系統工作電壓差異較大,則選擇MP2315這類高效的開關降壓轉換器更為合適。它能將較高的電池電壓高效轉換為3.3V,減少能量損耗,顯著延長電池續航時間。
聚合物鋰電池: 相比圓柱形鋰電池,聚合物鋰電池形狀更靈活,能量密度高,自放電率低,安全性好,是便攜式設備的理想選擇。
元器件的功能:
電池充電: 實現對鋰電池的安全充電管理,包括恒流/恒壓充電模式、過充/過放保護。
電壓轉換與穩壓: 將電池電壓(或外部USB供電電壓)轉換為系統所需的穩定工作電壓(如3.3V),為MCU、傳感器、顯示屏等供電。
低功耗管理: 通過DC-DC轉換器實現高效的電壓轉換,減少能量損耗。
電源開關與保護: 可能包含獨立的電源開關電路,以及過流、短路保護機制,確保系統和電池安全。
2.6 通信模塊
優選元器件型號:藍牙BLE模塊(如CC2541、NRF52832)
器件作用: 實現系統與智能手機APP之間的無線數據通信,將血氧和心率數據上傳至手機進行顯示、存儲、分析和分享。
為什么選擇這些元器件:
低功耗: 藍牙低功耗(BLE)是專為物聯網設備設計的低功耗無線通信技術,非常適合電池供電的醫療設備。CC2541和NRF52832都是業界領先的BLE芯片,在功耗控制方面表現出色。
廣泛兼容性: BLE已成為智能手機和各種智能設備的標準配置,兼容性好,方便用戶連接。
數據傳輸穩定: 在短距離內(通常10米以內),BLE提供穩定可靠的數據傳輸。
模塊化易用: 通常以模塊形式提供,內部已集成天線、晶振等,只需通過UART或SPI接口與MCU連接,降低了RF設計難度。NRF52系列甚至可以作為主控MCU使用,進一步簡化系統。
元器件的功能:
無線數據傳輸: 建立與手機APP的BLE連接,實時傳輸血氧、心率數據和脈搏波形數據。
低功耗廣播: 在空閑時進入低功耗模式,并在需要時快速建立連接。
固件空中升級(OTA): 部分模塊支持OTA功能,方便系統固件的遠程升級。
2.7 其他輔助元器件
晶振: 為MCU和某些外設提供精確的時鐘源。通常MCU需要外部高速晶振(HSE,如8MHz或25MHz),用于系統主頻,和外部低速晶振(LSE,32.768KHz)用于實時時鐘(RTC)和低功耗模式。選擇高穩定性、小封裝的晶振。
復位芯片: 如MCP100系列,提供精確的復位信號,防止MCU在電源不穩時誤操作。
按鍵: 用于人機交互,如開關機、模式切換、菜單選擇等。通常是輕觸按鍵,配合MCU的GPIO和中斷功能。
LED指示燈: 用于指示系統狀態,如電源、充電狀態、藍牙連接狀態、測量進行中等。
電容、電阻、電感: 用于濾波、分壓、限流、匹配等,是電路中不可或缺的基礎元器件。選擇符合封裝要求、精度要求和溫度系數要求的通用電阻電容。電感主要用于DC-DC轉換器和電源濾波。
ESD保護器件: 在USB接口、按鍵輸入等易受靜電影響的端口,需要TVS管等ESD保護器件,提高系統抗靜電能力和可靠性。
3. 硬件電路設計與原理分析
本章節將對核心硬件模塊的電路設計原理進行深入分析。
3.1 信號采集電路
信號采集部分是整個血氧心率監測系統最關鍵的一環,其設計質量直接決定了測量數據的準確性和可靠性。本方案選擇MAX30102作為集成式光電傳感器,極大地簡化了硬件設計。
MAX30102內部集成了紅光LED和紅外光LED,以及一個高靈敏度的光電探測器。LED通過可編程的電流驅動,向被測組織(如指尖)發射光。光電探測器接收穿透組織后的光信號。由于含氧血紅蛋白和脫氧血紅蛋白對紅光和紅外光的吸收率不同,且這種吸收率隨心臟的搏動而周期性變化(脈搏波),通過檢測不同波長光的透射強度變化,可以計算血氧飽和度。
電路連接:MAX30102與STM32L476RG之間通過I2C總線進行通信。
SDA (MAX30102) → SDA (STM32L476RG)
SCL (MAX30102) → SCL (STM32L476RG)
INT (MAX30102) → GPIO (STM32L476RG,配置為外部中斷)
VCC (MAX30102) → 1.8V/3.3V (穩壓電源)
GND (MAX30102) → GND
INT引腳用于產生中斷信號,通知MCU有新數據或發生特定事件,減少MCU輪詢,降低功耗。MAX30102內部的電源管理IC可以從3.3V或5V供電,并生成芯片內部所需的更低電壓(如1.8V)。重要的是,其內部的模數轉換器(ADC)是高分辨率(19位)的,能夠捕獲微弱的脈搏波信號。LED的驅動電流和脈沖寬度是可編程的,可以通過I2C接口進行配置,以便優化信噪比和功耗。
如果采用分立式方案,則光電二極管(PD)將連接到一個跨阻放大器(TIA)的輸入端。TIA將PD產生的微弱電流信號轉換為電壓信號。例如,OPA2376A的負輸入端連接PD的陰極,正輸入端接地,反饋電阻連接在輸出端和負輸入端之間。反饋電阻的選擇決定了跨阻增益。接著,TIA的輸出信號會經過多級有源濾波器,濾除直流分量、高頻噪聲和工頻干擾(50/60Hz),只保留0.5Hz~5Hz左右的脈搏波交流成分。這些濾波器通常由運放(如LM358或MCP6002)、電阻和電容構成,形成有源二階或三階巴特沃斯帶通濾波器,以確保足夠的濾波效果和信號完整性。最后,濾波后的信號進入STM32的ADC引腳進行模數轉換。
3.2 微控制器核心電路
STM32L476RG作為核心處理器,其外圍電路主要包括電源、時鐘、復位和調試接口。
電源: STM32L476RG需要穩定的3.3V電源供電。這3.3V電源通常由電源管理模塊中的LDO或DC-DC轉換器提供。在STM32的電源引腳VCC和GND之間,需要放置多個0.1uF和10uF的去耦電容,靠近芯片放置,以濾除高頻噪聲,確保電源的穩定性。
時鐘: STM32L476RG支持內部RC振蕩器和外部晶體振蕩器。為保證系統精度和穩定性,通常會使用外部高速晶振(HSE,如8MHz或16MHz)作為系統主時鐘源,通過PLL倍頻到80MHz。同時,為了實現精確的實時時鐘(RTC)功能和低功耗模式下的計時,會引入一個32.768KHz的外部低速晶振(LSE)。晶振的兩端分別接兩個10pF-22pF的匹配電容到地。
復位: STM32L476RG具有內置復位電路,但為了提高系統可靠性,通常會外加一個復位按鍵,通過一個RC網絡或專用的復位芯片(如MCP100系列)來產生可靠的復位信號,連接到MCU的NRST引腳。
調試接口: STM32支持SWD(Serial Wire Debug)接口進行在線調試和程序下載。通常需要SWCLK、SWDIO、VCC、GND這四個引腳連接到SWD調試器(如ST-Link/V2),便于開發和固件燒錄。
3.3 電源管理電路
電源管理是便攜設備續航的關鍵。本方案以單節鋰電池供電為例。
充電電路: 采用TP4056充電芯片。其典型應用電路非常簡單,只需少量外圍元件。
USB 5V電源通過一個二極管(防止反向電流)或直接連接到TP4056的VIN引腳。
鋰電池連接到BAT引腳。
PROG引腳通過一個電阻連接到GND,該電阻決定了充電電流(如1.2K歐姆電阻設定充電電流為1A)。
STAT引腳可以連接LED指示充電狀態(如充電中亮、充電完成滅)。
OUT引腳輸出電池電壓,直接或通過保護電路為后續電路供電。
同時,通常會加入鋰電池保護板(內含DW01A或FS312等保護IC),提供過充、過放、過流、短路保護,確保電池安全。
穩壓電路:
方案一(LDO): 若系統整體功耗較低,直接使用AMS1117-3.3等LDO將鋰電池電壓(3.7V~4.2V)穩壓至3.3V供MCU及其他數字電路使用。輸入輸出各接一個10uF和0.1uF的電容進行濾波。LDO的優點是輸出紋波小、噪聲低,缺點是效率相對較低,在輸入輸出壓差大或電流大時發熱量較大。
方案二(DC-DC): 若系統整體功耗較高,或需要更長的續航時間,可使用MP2315等高效的DC-DC降壓轉換器。MP2315典型應用電路包含輸入電容、肖特基二極管、電感、輸出電容和反饋電阻網絡。它能將鋰電池電壓高效轉換為3.3V,效率可達90%以上,顯著降低發熱量并延長續航。
3.4 顯示電路
OLED顯示屏(SSD1306驅動):通常OLED模塊采用SPI或I2C接口。如果選擇SPI接口,則需要連接:
VCC → 3.3V
GND → GND
SCL (Clock) → STM32 SPI_SCK
SDA (Data) → STM32 SPI_MOSI
RES (Reset) → STM32 GPIO
DC (Data/Command) → STM32 GPIO
CS (Chip Select) → STM32 GPIO (若為獨立CS)
SPI接口具有傳輸速度快、占用引腳少(若共享總線)的優點,適合實時顯示脈搏波形。軟件驅動時,需要初始化SSD1306控制器,然后通過SPI發送命令和數據來控制顯示內容。
3.5 通信電路(藍牙BLE)
以NRF52832藍牙模塊為例,通常通過UART接口與STM32進行通信。
VCC → 3.3V
GND → GND
TX (NRF52) → RX (STM32 UART)
RX (NRF52) → TX (STM32 UART)
RST (NRF52) → STM32 GPIO (可選,用于復位藍牙模塊)
在STM32上配置一個UART外設,設置波特率、數據位、停止位、校驗位等參數,與藍牙模塊的配置保持一致。通過UART發送AT指令或特定的藍牙協議命令來控制藍牙模塊的工作模式(如廣播、連接、數據傳輸),并接收來自模塊的數據。
4. 軟件系統設計
軟件是血氧心率監測系統的“靈魂”,負責實現數據采集、信號處理、算法計算、人機交互和數據通信等核心功能。基于STM32的軟件開發通常采用C語言,結合HAL庫或LL庫進行底層驅動開發。
4.1 軟件架構
本系統軟件可采用分層模塊化的設計思想,主要包括:
硬件抽象層(HAL/LL): 負責底層硬件的初始化和驅動,如GPIO、ADC、I2C、UART、SPI等,提供統一的API接口。
設備驅動層: 封裝特定外設的驅動,如MAX30102驅動、OLED驅動、藍牙模塊驅動等。這一層將復雜的硬件操作抽象為簡單的函數調用。
數據采集與預處理層: 負責從傳感器驅動層獲取原始數據,進行初步的去噪和濾波。
信號處理與算法層: 實現血氧飽和度、心率計算的核心算法,包括脈搏波特征提取、血氧比率計算等。
人機交互層: 處理按鍵輸入、控制OLED顯示界面更新。
通信管理層: 管理藍牙通信協議棧,負責數據的封裝和發送,以及接收來自外部設備(如手機APP)的命令。
應用層: 調用各功能模塊的API,實現系統的業務邏輯,如啟動測量、顯示結果、上傳數據、系統狀態管理等。
操作系統層(可選,RTOS): 對于更復雜的系統,可以引入RTOS(如FreeRTOS),實現任務的并發管理、資源調度、通信同步等,提高系統的實時性和可維護性。對于本設計,簡單的裸機循環或事件驅動機制可能也足夠,但RTOS能提供更強的擴展性。
4.2 核心算法實現
4.2.1 脈搏波信號采集與預處理
從MAX30102采集到的原始數據是經過19位ADC轉換的紅光和紅外光強度值。這些值通常包含直流分量(由組織、骨骼、靜脈血等引起)和交流分量(由動脈搏動引起)。
數據采集: 通過I2C讀取MAX30102的FIFO緩沖區,獲取連續的紅光和紅外光原始數據。
直流分量去除: 采用高通濾波器(如一階或二階IIR高通濾波器)去除信號中的直流分量和低頻漂移,只保留交流脈搏波成分。或者簡單地使用移動平均法計算直流基線,然后從原始信號中減去基線。
低通濾波: 采用低通濾波器(如FIR或IIR低通濾波器)去除高頻噪聲,如工頻干擾(50/60Hz)和環境光噪聲。對于血氧脈搏波信號,其頻率通常在0.5Hz到5Hz之間。
4.2.2 心率(Pulse Rate)計算
心率計算通常基于脈搏波形的周期性。
峰谷檢測: 對經過濾波的脈搏波AC信號進行峰值檢測。通過設定閾值和最小間隔時間來識別有效的脈搏波峰。
周期計算: 計算連續兩個波峰之間的時間間隔(或數據點間隔)。
心率計算:心率(BPM) = 60 / 脈搏周期(秒) 或者 心率(BPM) = 采樣率 / 脈搏周期(樣本數) * 60 為了提高準確性,通常會取多個周期進行平均,或者采用自相關分析、FFT等更高級的算法來提取主頻。
4.2.3 血氧飽和度(SpO2)計算
血氧飽和度的計算基于朗伯-比爾定律的經驗公式和紅光/紅外光的吸收比率。
AC/DC分量提取: 對紅光和紅外光的原始信號,分別提取其交流(AC)分量和直流(DC)分量。AC分量代表血液搏動引起的吸收變化,DC分量代表組織、靜脈血等引起的基線吸收。
DC分量: 可以通過移動平均濾波或低通濾波獲取。
AC分量: 從原始信號中減去DC分量,或者通過高通濾波直接獲取。
R值計算: R值是紅光和紅外光交流分量與直流分量比率的比率,是血氧飽和度計算的關鍵參數。R=(ACIR/DCIR)(ACRed/DCRed)其中,ACRed 和 ACIR 分別是紅光和紅外光的交流分量峰谷值或峰峰值。DCRed 和 DCIR 分別是紅光和紅外光的直流分量。
SpO2查表或擬合: 理論上,R值與血氧飽和度之間存在非線性關系。在實際應用中,通常通過臨床校準數據建立一個查表(Lookup Table)或多項式擬合曲線。MCU根據計算出的R值,通過查表或擬合公式,得出對應的SpO2值。SpO2=A×R2+B×R+C (多項式擬合示例) 其中A、B、C為經驗系數,通過大量實驗數據擬合得到。
關鍵考慮:
運動偽影抑制: 運動會導致脈搏波形嚴重失真,影響測量精度。可以采用自適應濾波、小波變換或基于加速度計(可選)的運動狀態檢測等方法進行偽影抑制。
環境光抑制: 雖然MAX30102有內置的環境光抑制,但軟件層面也可以通過數字濾波進一步增強。
平均與穩定性: 為了提高測量結果的穩定性,通常會對連續幾秒的測量結果進行平均,并進行平滑處理。
4.3 人機交互與顯示驅動
按鍵處理: 配置STM32的GPIO為輸入模式,并開啟外部中斷。當按鍵按下時觸發中斷,在中斷服務函數中讀取按鍵狀態并進行消抖處理。根據按鍵的短按、長按等操作,實現不同的功能(如開關機、模式切換、屏幕亮度調節等)。
OLED顯示驅動:
初始化: 通過SPI/I2C發送命令初始化SSD1306控制器,設置顯示模式、對比度、亮度等。
圖形庫: 開發一套簡單的圖形庫,包括點、線、矩形、字符(ASCII、GB2312/UTF8)、數字等繪制函數。
刷新機制: OLED顯示通常采用幀緩沖機制。MCU將要顯示的內容先繪制到內存中的一個緩沖區(幀緩沖),然后一次性將整個緩沖區的數據通過SPI/I2C發送到OLED模塊,刷新屏幕。為了節省RAM,可以只刷新局部區域。
實時波形顯示: 實時繪制脈搏波形圖需要高速的刷新率,可以通過滾動顯示或者部分區域更新來優化性能。
4.4 通信模塊驅動
UART配置: 初始化STM32的UART外設,設置正確的波特率、數據位、停止位和校驗位,與藍牙模塊保持一致。
藍牙協議封裝: 藍牙模塊通常通過AT指令集進行控制和數據透傳。軟件需要實現對AT指令的發送和響應解析。對于數據透傳,將血氧和心率數據按照藍牙GATT(Generic Attribute Profile)服務和特性進行封裝,比如定義一個Health Thermometer Service或自定義服務,包含SpO2 Characteristic和Heart Rate Characteristic。
數據發送: 將計算出的SpO2和心率數據通過UART發送給藍牙模塊,由藍牙模塊廣播或發送給已連接的手機APP。
數據接收: 接收來自手機APP的命令,如請求歷史數據、設置參數等。
5. 系統功能與性能指標
本系統設計旨在實現以下主要功能和性能指標:
5.1 主要功能
實時血氧飽和度(SpO2)測量: 測量范圍70%~100%,誤差在±2%以內。
實時心率(Pulse Rate)測量: 測量范圍30 BPM~250 BPM,誤差在±2 BPM以內。
脈搏波形顯示: 在OLED屏幕上實時顯示脈搏波形圖,直觀反映脈搏搏動情況。
電池電量顯示: 實時顯示電池剩余電量,并具備低電量提醒功能。
按鍵操作: 實現設備的開/關機、測量啟動/停止、屏幕亮度調節等基本操作。
藍牙數據上傳: 通過藍牙BLE將測量數據無線上傳至配套的手機APP,實現數據存儲、歷史趨勢查看、報告生成等。
自動關機: 在一定時間無操作后自動關機,節省電量。
5.2 性能指標
測量精度:
SpO2: ±2% (在70%~100%范圍內)
心率: ±2 BPM
響應速度: 首次測量結果在10秒內顯示。
功耗:
工作模式: 典型功耗應控制在數十毫瓦量級,以實現數小時至數十小時的連續工作時間。
待機模式: 功耗應控制在微瓦量級,以實現數周甚至數月的待機時間。
便攜性: 尺寸小巧,方便攜帶。
可靠性: 硬件電路穩定,軟件算法魯棒,能有效抵抗外界干擾。
易用性: 操作簡單,用戶界面友好。
6. 系統測試與調試
系統開發完成后,需要進行嚴格的測試與調試,以驗證其功能和性能是否達到設計要求。
6.1 硬件調試
電源模塊測試: 檢查各路穩壓輸出電壓是否穩定、紋波是否符合要求。測試電池充電功能、充電電流、充滿指示以及過充/過放保護。
MCU最小系統測試: 確認MCU的時鐘、復位電路正常工作,能通過SWD接口正常下載和調試程序。
傳感器接口測試: 使用邏輯分析儀或示波器檢查I2C通信波形是否正常。讀取MAX30102的設備ID,確認傳感器能正常響應。
模擬前端測試(若分立式): 使用信號發生器輸入模擬信號,觀察各級放大器和濾波器的輸出波形是否符合預期,增益和截止頻率是否正確。檢查ADC采集到的原始數據是否有效。
顯示模塊測試: 編寫簡單的測試程序,驅動OLED/LCD顯示字符和圖形,確認顯示正常。
通信模塊測試: 編寫程序與藍牙模塊進行AT指令交互,測試藍牙廣播、連接和數據傳輸功能。
6.2 軟件調試與性能驗證
數據采集與預處理:
通過串口打印或調試工具,實時查看MCU從MAX30102讀取到的原始紅光/紅外光數據。
觀察經過軟件濾波后的脈搏波形數據,確認噪聲是否有效去除,波形是否平滑。
測試不同環境光下(如室內、室外、陽光下)的測量穩定性。
心率算法驗證:
使用標準脈搏模擬器或在多名志愿者身上進行測試,與醫用級心率計進行對比,評估心率測量的準確性。
測試在運動狀態下(如輕微晃動)心率測量的穩定性。
血氧算法驗證:
這是最關鍵的測試環節。理想情況下,需要與經過國家計量認證的標準脈搏血氧儀進行對比。
在不同血氧飽和度狀態下(如通過呼吸訓練模擬低血氧狀態,但需在專業人員指導下進行,確保安全),采集數據并與標準設備對比,評估SpO2測量的準確性和重復性。
驗證不同膚色、不同手指厚度對測量結果的影響,并考慮在算法中進行補償。
系統功耗測試:
使用高精度電流表測量系統在不同工作模式(測量、待機、藍牙連接等)下的電流消耗,計算電池續航時間。
優化軟件代碼,如合理使用低功耗模式、關閉不用的外設、降低采樣率等,以進一步降低功耗。
用戶體驗測試:
測試按鍵響應、顯示界面切換是否流暢。
藍牙連接速度和穩定性。
設備攜帶是否舒適,操作是否簡便。
7. 展望與擴展
本設計方案提供了一個基于STM32的血氧心率監測系統的基本框架。在此基礎上,未來可以進行以下擴展和優化:
多參數監測: 集成體溫、血壓、呼吸頻率等其他生理參數傳感器,實現多參數綜合健康監測。
數據云平臺: 將數據上傳至云端服務器,實現遠程健康管理、數據可視化和智能預警。
AI健康分析: 結合人工智能算法,對長期數據進行分析,提供個性化健康建議,甚至早期疾病風險預測。
運動狀態識別與補償: 引入加速度計或陀螺儀傳感器,識別用戶運動狀態,并對脈搏波信號進行更有效的運動偽影補償,提高運動時的測量精度。
增強用戶體驗: 引入觸控屏、語音交互等更高級的人機交互方式。
醫療認證: 為實現醫療級應用,系統需要滿足嚴格的醫療器械標準(如ISO 80601-2-61、GB 9706.261等),并進行臨床驗證和注冊。
總結
基于STM32單片機的血氧心率監測系統,通過選用高性能、低功耗的核心元器件,結合精密的硬件電路設計和高效的軟件算法實現,能夠構建一個穩定、準確、便攜的健康監測平臺。從MAX30102的集成式傳感器到STM32L4系列微控制器的強大處理能力,再到低功耗的電源管理和藍牙通信,每一個環節的精心選擇都旨在提升系統的整體性能和用戶體驗。雖然本方案提供了詳細的概述,但在實際開發中,仍需投入大量精力進行細致的電路布線、軟件代碼優化、嚴格的測試和校準,以確保產品的可靠性和市場競爭力。隨著可穿戴醫療設備市場的不斷發展,此類系統將發揮越來越重要的作用,為人們的健康管理帶來便利。
責任編輯:David
【免責聲明】
1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業目的。
3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。
4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。
拍明芯城擁有對此聲明的最終解釋權。