劉賽靜,謝金鵬,胡海峰
(平頂山學院 信息工程學院,河南平頂山, 467000)
在傳統(tǒng)的醫(yī)學檢測上,醫(yī)生通過聽診或者把脈的方式[1]來測量人體的心率,但這種方式有很明顯的缺陷,首先是應用范圍有限,只能有專業(yè)的醫(yī)生操作,其次這種人為的測試方法會產生很大的誤差,并且僅能片面地測量人體的心律,不能測量人體的血氧值。隨著技術的不斷發(fā)展,現在市場上出現了可同時測量心率和血氧的健康檢測儀,但它的生產成本比較高并且檢測過程復雜,通常是在醫(yī)院或者是健康體檢中心等比較大的場所中使用,小型便攜性的心率血氧采集在市場上還是比較少見[2]。
體溫也是人體健康狀態(tài)檢測的一項重要指標。但是傳統(tǒng)的溫度計不易攜帶,測量時間長,且不易保存,在人多的場合用它來測量體溫十分不便。市面上的溫度計、心率計等傳統(tǒng)的檢測儀只能測量一個參數,這就導致了它們的功能比較單一,適用范圍也比較局限。例如,王彰云設計了一款基于STM32 的人體紅外測溫系統(tǒng)設計與實現,只能測量體溫[3];徐涵設計了光電脈搏波的心率檢測系統(tǒng),只能測量心率這一個檢測量[4]。
本設計采用STM32F103 單片機、OLED 液晶屏、MAX30102 心率血氧傳感器、DS18B20 溫度傳感器以及蜂鳴器模塊,設計一款可同時檢測人體心率、血氧、溫度的健康檢測儀,該檢測儀具有檢測速度快、成本低、易于操作、方便攜帶等優(yōu)點。
該系統(tǒng)主要包括四個方面的設計內容:一是電路的電源,選用5V 的USB 進行供電;二是人機交互,由3 個獨立按鍵和OLED 液晶顯示屏構成[5];三是信號處理,采用STM32F103 單片機實現該功能;四是數據采集,通過MAX30102 和DS18B20 傳感器采集數據。
該系統(tǒng)的設計框圖如圖1 所示。其中核心處理器是STM32 單片機,心率血氧傳感器和溫度傳感器分別用來采集人體的心率血氧值和溫度值,采集到的數值在OLED 液晶屏上顯示,當人體的心率血氧或溫度超過人體的正常值時蜂鳴器會報警提醒,另外還有復位和按鍵電路[6]。
圖1 總體設計框圖
該模塊只需要用STM32 的一個最小系統(tǒng)板。STM32F103C8T6 單片機作為核心處理器實現數據處理和邏輯判斷功能,它是一種低功耗的高性能單片機[7]。該模塊電路圖如圖2 所示。
圖2 主控模塊電路
OLED 具有自發(fā)光、視角范圍大、功耗小、響應速度快等優(yōu)點[8],OLED 模塊只需要4 條連線就可工作,除2 根VCC 與GND 外。主控芯片只需要通過SDL、SCL 信號線根據時間順序對有機發(fā)光二極管進行讀寫,就可以實現有機發(fā)光二極管的顯示。該模塊電路圖如圖3 所示。
圖3 OLED液晶顯示模塊電路
該報警模塊由1k 的上拉電阻、三極管和蜂鳴器組成,當人體的檢測數據超出正常范圍時,STM32 的BEEP 引腳發(fā)出高電平信號,經三極管放大后驅動蜂鳴器發(fā)出報警提醒。該模塊的電路圖如圖4 所示。
圖4 蜂鳴器模塊電路
本設計采用USB 接口進行供電,只需要將USB 線插入電腦或者充電寶的USB 接口便可以直接使用。它具有操作簡單、安全性高、使用方便等優(yōu)點,可以滿足用戶的不同需求。該模塊的電路圖如圖5 所示。
圖5 電源模塊電路圖
將MAX30102 佩戴在手指、耳垂和手腕處[9],可以有效地測量出心率和血氧值,心率血氧模塊通過I2C 接口與主控模塊進行通信,將人體的測量結果上傳給STM32。該模塊電路圖如圖6 所示。
圖6 MAX30102 模塊電路圖
該設計采用的是DS18B20 溫度采集模塊,它是一種數字溫度傳感器,其輸出的數字信號,其只使用一條口線通信,可以直接與單片機的IO 管腳相連,然后通過OLED 液晶屏顯示數據[10]。該模塊電路圖如圖7 所示。
圖7 DS18B20模塊電路圖
該檢測儀的工作流程是:上電后各模塊初始化,然后在OLED 上顯示當前信息,用戶可通過按鍵切換設置模式及各參數范圍,開始檢測,當檢測數據超出設置范圍時,蜂鳴器發(fā)出報警提醒,說明人體健康狀況異常。主程序工作流程如圖8 所示。
圖8 主程序設計流程圖
要使液晶顯示屏正常工作,首先進行OLED 液晶屏初始化,經過3s 延時之后,觀察顯示屏是否顯示數據,顯示數據說明顯示器正在工作,必須等待,反之說明工作完成,然后寫入指令和需要顯示的數據。該子程序設計流程圖如圖9 所示。
圖9 液晶子程序設計流程圖
該設計的工作流程是:開始后,首先判斷檢測數據是否在正常范圍內,超出設置范圍則會發(fā)出聲光報警提醒。如果報警聲不夠響,可以將其頂部的紙片撕下來或者減小蜂鳴器的上拉電阻。該子程序設計流程圖如圖10 所示。
圖10 報警子程序設計流程圖
該設計的流程是:首先I2C 初始化,延時后,設置I2C數據結束函數,觀察檢測總線的狀態(tài),若無應答信號說明總線狀態(tài)不正常,需要進一步檢測,反之可直接傳輸數據,等待傳輸結束即可讀取當前數據。該子程序設計流程圖如圖11 所示。
圖11 I2C 子程序設計流程圖
該設計的流程是:首先將DS18B20 復位,然后寫入指令,并延時750~900μm,對DS18B20 復位,然后寫入轉換指令,并讀取轉換結果[11],再對DS18B20 復位,接著整合數據并判斷是否為正數,如果是則求出十進制數值,反之則求反補一后得到十進制數。該子程序設計流程圖如圖12 所示。
圖12 溫度子程序設計流程圖
該設計的流程是:首開始,通過I2C 數據通信,將采集到的數據信息發(fā)送給應用程序。然后計算并讀取數據即可。該子程序設計流程圖如圖13 所示。
圖13 心率血氧子程序設計流程圖
首先采用本次設計的人體健康檢測系統(tǒng)測量各項參數,在保證外界各種影響因素相同的情況下,用小米5 手環(huán)測出的心率、血氧值以及傳統(tǒng)溫度計測量出的溫度值作為參考標準。對一個健康成年女性進行10 次心率血氧和體溫的測量,并記錄所有測量數據。從表1 中的測試數據得出結論,該設計的人體健康檢測系統(tǒng)相對誤差較小,心率血氧的相對誤差大部分低于5%,溫度的相對誤差大部分低于10%(體表溫度與人體溫度相差約4℃),接近標準值,所有誤差值基本達到了預期的精度范圍要求[12~13]。系統(tǒng)測試實物圖如圖14 所示,測試結果如表1 所示。
圖14 系統(tǒng)測試實物圖
本文主要設計了基于STM32 的人體健康檢測系統(tǒng),由STM32F103C8T6 單片機、MAX30102 心率血氧傳感器、DS18B20 溫度傳感器、OLED 液晶屏以及蜂鳴器模塊構成,最終實現了對人體心率、血氧和溫度的實時檢測功能。在設計過程中充分考慮了以下內容:設計標準是否可以滿足系統(tǒng)的運行需求,系統(tǒng)是否能夠有效地執(zhí)行任務,電路的設計是否穩(wěn)定可靠,程序的編寫是否規(guī)范等,最后經過測試達到了預期要求。