熊宇,陶曾杰,彭勇,范湘玉,何紅梅
(湖南信息學院 電子科學與工程學院,湖南長沙,410151)
隨著中國老齡化越來越嚴重,依據第七次人口普查的結果表明,國家60 歲以上的老齡人口已經達到了2.6 億,比例占總人口數的18.7%[1}。中國老年人的身體健康不容樂觀,根據對全國老年人的健康水平調查,只有20%~25%的老年人主要器官處于健康狀態[2]。這些數據預示著我們國家在醫療這一塊以及社會經濟壓力、醫療保險等方面都有著巨大的壓力和挑戰。現實中大多數人由于工作原因,導致生活作息不規律,飲食的隨便性,給自身的健康帶來了極大的隱患。因此,設計一款體感檢測裝置,通過健康監護設備,對佩戴者的身體機能實時檢測,為其健康做保障,尤其是老年人,可以實時監測其健康參數,并將數據發送到手機或子女手機上。
此系統首先要研究的內容是根據需求選擇采集生理數據的傳感器型號,能夠采集到體溫、心率以及人體姿態等數據。通過STM32 主控單元對傳感器的采集原理進行分析,對數據進行相應的算法來得到穩定的數值。把采集得到的監測值通過顯示屏顯示,進而可以時刻監測生理參數,最終實現基于STM32 體感檢測裝置的研究和設計。通過溫度傳感器和心率血氧傳感器采集到的信號,通過約定好的通信協議傳遞給主控單元,主控單元對其做出分析和處理,從而獲得個人生命體征值。顯示模塊通過協議與主控單元進行通信,把采集到的數據顯示到屏幕上,方便使用者及時地觀看采集到的數據,時鐘模塊可用于為使用者提供提醒服務,聲光提示模塊在檢測的數據超過正常范圍時進行報警。系統總體構成框架如圖1 所示。

圖1 總體結構框圖
主控通過I2C 協議即可對MAX30102 心率傳感器中的數據進行讀取,大幅度提高了開發的效率,減少的主控處理器的負擔。模塊會發出兩種特定波長的光,當人體肌膚接收了兩種不同的光,再反射回來經過了光電檢測器,這時光電傳感器將光信號轉換為電信號[3]。經電路放大后,通過模數轉換芯片把AD 轉化為DC,并將處理后的數據存儲在其內部寄存器中。再由STM32F103VET6 的I2C 接口讀取,最后通過串口發送到主控單元中。MAX30102 心率傳感器電路設計如圖2 所示。

圖2 心率傳感器電路設計圖
本設計利用DS18B201 溫度傳感器對人體溫度進行測量,DS18B20 是一款非常常用的高精度數字測溫芯片,單線通信協議,通過DQ 進行數據的收發[4]。在接收到數據時,它的輸入是高阻態;發送數據時,它的輸出是開漏輸出。本身沒有輸出高電平的能力。也就是說,輸出0 時在MOS 中下拉到0,輸出1 時變為高電阻。它必須連接外部上拉電阻才能將其拉到高電平。否則,不能輸出1。DS18B20 引腳DQ 連接于主控單元STM32F103VET6 的PB5。DS18B20電路設計圖如圖3 所示。

圖3 溫度傳感器電路設計
本系統使用MPU6050 模塊監測人體加速度變化,進行摔倒檢測。MPU6050 是可以通過I2C 接口與微控制器通信,MPU6050 對陀螺儀和加速度計分別集成了三個16 位的ADC,并將其測量的模擬量轉化為可輸出的數字量[5]。I2C 接口電路需要包括SDA 和SCL 兩個信號線,以及上拉電阻。在設計時,需要注意I2C 總線的抗干擾能力和通信速率。采用4.7kΩ 的上拉電阻,可以保證I2C 信號的穩定和可靠傳輸。一般使STM32 的GPIO 引腳可以設置為上拉模式,以替代使用外部上拉電阻。在輸入模式下,使能上拉會將引腳拉高至邏輯高電平,從而有效地實現了上拉功能。這樣可以減少外部元件,簡化設計。對于需要高速傳輸的應用,對寄存器的讀取和中斷使用的是20MHz 的SPI。模塊采用3.3V 的直流電源供電,MPU6050 模塊電路連接如圖4 所示。

圖4 MPU6050 模塊電路設計
在MCU 接收到異常人體生理數據時驅動GSM 模塊給提前設定好的號碼發送報警短信。本設計利用SIM800A 作為GSM 模塊為用戶的監護人提供報警提示,SIM800A 是基于GSM 的手機通訊模塊,可發短信,可打電話。SIM800A采用串口通信,只要發送AT 指令就能對它進行操作。
模塊接口說明,SIM800A 模塊使用串口通信與主控系統通信。VCC 端口接5V,GND 端口接GND,RXD 端口接主控系統串口發送端,TXD 端口接主控串口接收端。模塊為5V 直流電源供電,若電壓過低,模塊將不會工作。供電電流需保證能提供2A 的峰值電流。當開機和數據傳輸時電流非常大,通常在模塊VCC 和GND 兩端并聯一個大電容進行電流補償,若輸出電流不夠會造成電壓跌落,而導致模塊關機。GSM 模塊如圖5 所示。

圖5 GSM 通信模塊電路設計
設備使用STM32F103VET6 為控制核心,在主函數中,主要進行各個模塊的初始化,主控單元來控制運行的時序,按照所需要的要求運行,具體流程圖如圖6 所示。

圖6 系統軟件整體流程圖
先對MAX30102 模塊的端口與主控單元STM32 是否連接正常,使用萬用表的蜂鳴器檔,來進行調試。此次測試選取了4 位室友A、B、C、D 來進行心率的測試,每隔10s來對測試者進行手腕的心率6 次的采集,測試時要先按下按鍵將MODE 模式由0 設置為1,才進行信號的采集。采集的結果如表1 所示。

表1 測試者采集心率值(次/分)
表1 是4 位室友測試者進行了6 次測試的數據。表中可以看出對代碼進行處理之后的數據,比較穩定,但依舊存在誤差。其原因,第一在測試過程中,有外界光強弱的干擾導致產生電信號,就會出現誤差。第二在測試過程中存在手腕每次貼緊的程度不一樣,會存在檢測的信號過于弱;綜上所述,要在干擾小,并且測試需貼緊被測部位、被測位置也合理的情形下,來計算心率的數據。
本文是基于STM32 體感檢測裝置的設計,主要完成了測量心率和體溫以及進行摔倒檢測,用OLED 顯示檢測的各項數據;通過按鍵來控制開始心率檢測;使用STM32F103VET6 為主控單元,測心率的模塊MAX30102,OLED 顯示用7 針的SPI 協議來顯示數據參數;使用DS18B20 溫度傳感器檢測體溫,系統設置了體溫度閾值和摔倒檢測,閾值超標蜂鳴器報警;每次將檢測到的生理參數值超標就會通過GSM 模塊向監護人報警。通過系統測試,整體運行穩定,數據準確可靠。