張翠玉,王軍敏,胡海峰
(平頂山學院 信息工程學院,河南平頂山,467000)
心血管疾病嚴重威脅人類健康和生命安全,需要對此類疾病患者進行科學高效地監測[1]。但現有的心電監測系統存在一些不足,例如操作復雜、價格昂貴等。為了解決上述問題,本文設計一個微型化、智能化、便攜式的心電監測系統,使用戶能實時便捷地、不受外界環境條件限制地對自身心電信號進行監測。
基于STM32 單片機的心電監測系統設計主要包含硬件和軟件兩部分。一方面控制硬件利用傳感器采集各項數據并顯示到TFT 顯示屏上,當心率值和體溫超過閾值則發出警報;另一方面通過藍牙模塊將數據信息發送至移動端APP,達到遠程實時查看的功能。
該系統主要實現心率監測、溫度監測、運動步數和狀態監測。心電監測系統的STM32 主控單元負責接收數據,當讀取到心率值或溫度超過閾值時,蜂鳴器啟動報警。此外,主控將數據讀取后,可以通過藍牙模塊將數據上傳到移動客戶端,實現數據在客戶端APP 的實時顯示,用戶還可以通過手機APP 下發命令,實現對系統的遠程控制。
圖1 展示了該系統的架構圖。該系統可以完成各項數據的采集,按鍵控制、閾值的設置和長鳴報警,數據信息的遠距離無線傳輸以及用戶遠程的控制操作。

圖1 基于STM32 單片機的心電監測系統原理圖
本系統采用Pulsesensor 脈搏心率傳感器對用戶的心率進行檢測,此傳感器是集成了放大電路和噪聲消除電路的光學心率傳感器[2]。另外選擇LM393 比較器將進行波形濾波,使傳感器輸出信號轉換為標準方波信號,更利于單片機采集,保證了信號的穩定檢測。圖2 為利用LM393 比較器模塊對Pulsesensor 脈搏心率傳感器模塊濾波的電路原理圖。
采用DS18B20 溫度傳感器檢測用戶體溫,DS18B20 是常用的數字溫度傳感器,其輸出的是數字信號,具有體積小、硬件開銷低、抗干擾能力強、精度高的特點[3]。DS18B20 的工作電源為3.0~5.5V,測溫范圍為-55℃~ +125℃。圖3 為溫度檢測模塊的電路原理圖,VCC 接5V 電源,GND 接地。

圖3 溫度檢測電路原理圖
本系統采用ADXL345 傾角傳感器檢測用戶的運動步數和運動狀態,ADXL345 是一款小而薄的超低功耗3軸加速度計,測量范圍達± 16g[4]。ADXL345 非常適合移動設備應用,它可以在傾斜檢測應用中測量靜態重力加速度,還可以測量運動或沖擊導致的動態加速度。該器件具有較高的空間分辨能力,能夠測量不到1.0°的傾斜角度變化。圖4 為傾角檢測電路的原理圖。

圖4 傾角檢測電路原理圖
本系統所采用的報警模塊為5V有源蜂鳴器模塊,電路中采用三極管9012 來驅動,只要單片機控制引腳為高電平,蜂鳴器就會鳴叫報警,反之則不報警[5]。可以通過控制單片機引腳方波輸出形式控制蜂鳴器的鳴叫方式。電阻為限流電阻,起保護作用。圖5 為蜂鳴器報警電路的原理圖。

圖5 蜂鳴器報警電路原理圖
本系統的顯示電路采用2.4 寸TFT彩屏模塊,具有高亮度、高對比度、層次感強、色彩鮮艷等優點。TFT 液晶為每個像素都設有一個半導體開關,每個像素都可以通過點脈沖直接控制,因而每個節點都相對獨立,并可以連續控制。圖6 為顯示電路的原理圖。

圖6 顯示電路原理圖
STM32 單片機使用單線接口方式連接DS18B20 模塊,通過一個IO 口改變輸入輸出狀態并讀取溫度數據。利用STM32 的AD 采集功能實時采集心率傳感器信號輸出引腳輸出的模擬電壓,通過將采集到的模擬信號在STM32 內部進行運算處理,將數據波形實時顯示到TFT 顯示屏上。當心率值和體溫超標時,驅動蜂鳴器進行報警。使用USART 串口進行單片機與藍牙模塊的通信,然后將采集到的數據發送至手機APP,從而進行數據的可視化顯示,同時可以在APP 界面進行一些控制命令的下發,如修改心率值和體溫的閾值。圖7 為主程序的工作流程圖。

圖7 主程序的工作流程圖
3.2.1 溫度檢測子程序設計
首先復位DS18B20 溫度傳感器,初始化DS18B20 的IO 口,檢測DS 是否存在,若不存在則返回0 然后繼續檢測,若存在則傳感器開始讀取采集到的數據,讀取到數據后進行溫度值轉換,轉換成功后返回精確度為0.1 的溫度值。圖8(a)為溫度檢測子程序的工作流程圖。

圖8 子程序的工作流程圖
3.2.2 心率檢測子程序設計
首先進行心率數組、心率濾波計數、心率延時處理、心率值等變量的定義,初始化光電心率傳感器,設置濾波防止抖動的定時周期為300ms,濾波濾掉手指未放的情況。記錄前后兩次事件的間隔,記錄超過4 次后進行濾波處理,每次定時5ms,取60s 內4 次數據的平均值,得到心率值,最后進行延時清零。圖8(b)為心率檢測子程序的工作流程圖。
3.2.3 傾角檢測子程序流程設計
首先初始化ADXL345,設置數據傳輸速度為100Hz 并開啟測量模式,讀取x,y,z 三個軸的數據并存儲在BUF 中,接著連續讀取ADXL345 times 次數后根據次數取平均值,計算數據后得到角度。最后根據角度變化判斷出運動步數和狀態,返回步數值和運動狀態。圖8(c)為傾角檢測子程序的工作流程圖。
本系統的手機端基于Eclipse 進行APP 開發,這是一款基于Java 的可擴展開發平臺。Eclipse 具有強大的代碼輔助功能,能夠幫助程序開發人員自動完成語法、補全文字、代碼修正、API 提示等編碼工作,可以節省大量的開發時間[6]。
在設計本系統的界面時,從開發界面左邊的表單、空格和文本框中根據需要進行選擇,然后拖動到設計界面上的相應位置,并根據需要在右側工作區的屬性欄中修改屬性,如文字的顏色、字體大小等。本系統設計的移動終端界面如圖9 所示,可以在主界面對心率值、體溫、運動步數以及運動狀態等數據進行實時顯示,并且可以在移動終端對心率值和體溫的閾值進行設置。

圖9 移動端主界面
本文采用STM32 單片機、多種傳感器和藍牙模塊設計一個心電監測系統,該系統以STM32 單片機為控制核心,使用Pulsesensor 脈搏心率傳感器、DS18B20 溫度傳感器等多種類型的傳感器采集各項數據,并利用藍牙通信模塊將數據傳送至移動客戶端,用戶可通過客戶端APP 遠程實時查看心率值和體溫狀況,具有重要的應用價值。