熊宇,陶曾杰,彭勇,范湘玉,何紅梅
(湖南信息學(xué)院 電子科學(xué)與工程學(xué)院,湖南長沙,410151)
隨著中國老齡化越來越嚴(yán)重,依據(jù)第七次人口普查的結(jié)果表明,國家60 歲以上的老齡人口已經(jīng)達(dá)到了2.6 億,比例占總?cè)丝跀?shù)的18.7%[1}。中國老年人的身體健康不容樂觀,根據(jù)對全國老年人的健康水平調(diào)查,只有20%~25%的老年人主要器官處于健康狀態(tài)[2]。這些數(shù)據(jù)預(yù)示著我們國家在醫(yī)療這一塊以及社會經(jīng)濟(jì)壓力、醫(yī)療保險等方面都有著巨大的壓力和挑戰(zhàn)?,F(xiàn)實(shí)中大多數(shù)人由于工作原因,導(dǎo)致生活作息不規(guī)律,飲食的隨便性,給自身的健康帶來了極大的隱患。因此,設(shè)計(jì)一款體感檢測裝置,通過健康監(jiān)護(hù)設(shè)備,對佩戴者的身體機(jī)能實(shí)時檢測,為其健康做保障,尤其是老年人,可以實(shí)時監(jiān)測其健康參數(shù),并將數(shù)據(jù)發(fā)送到手機(jī)或子女手機(jī)上。
此系統(tǒng)首先要研究的內(nèi)容是根據(jù)需求選擇采集生理數(shù)據(jù)的傳感器型號,能夠采集到體溫、心率以及人體姿態(tài)等數(shù)據(jù)。通過STM32 主控單元對傳感器的采集原理進(jìn)行分析,對數(shù)據(jù)進(jìn)行相應(yīng)的算法來得到穩(wěn)定的數(shù)值。把采集得到的監(jiān)測值通過顯示屏顯示,進(jìn)而可以時刻監(jiān)測生理參數(shù),最終實(shí)現(xiàn)基于STM32 體感檢測裝置的研究和設(shè)計(jì)。通過溫度傳感器和心率血氧傳感器采集到的信號,通過約定好的通信協(xié)議傳遞給主控單元,主控單元對其做出分析和處理,從而獲得個人生命體征值。顯示模塊通過協(xié)議與主控單元進(jìn)行通信,把采集到的數(shù)據(jù)顯示到屏幕上,方便使用者及時地觀看采集到的數(shù)據(jù),時鐘模塊可用于為使用者提供提醒服務(wù),聲光提示模塊在檢測的數(shù)據(jù)超過正常范圍時進(jìn)行報警。系統(tǒng)總體構(gòu)成框架如圖1 所示。
圖1 總體結(jié)構(gòu)框圖
主控通過I2C 協(xié)議即可對MAX30102 心率傳感器中的數(shù)據(jù)進(jìn)行讀取,大幅度提高了開發(fā)的效率,減少的主控處理器的負(fù)擔(dān)。模塊會發(fā)出兩種特定波長的光,當(dāng)人體肌膚接收了兩種不同的光,再反射回來經(jīng)過了光電檢測器,這時光電傳感器將光信號轉(zhuǎn)換為電信號[3]。經(jīng)電路放大后,通過模數(shù)轉(zhuǎn)換芯片把AD 轉(zhuǎn)化為DC,并將處理后的數(shù)據(jù)存儲在其內(nèi)部寄存器中。再由STM32F103VET6 的I2C 接口讀取,最后通過串口發(fā)送到主控單元中。MAX30102 心率傳感器電路設(shè)計(jì)如圖2 所示。
圖2 心率傳感器電路設(shè)計(jì)圖
本設(shè)計(jì)利用DS18B201 溫度傳感器對人體溫度進(jìn)行測量,DS18B20 是一款非常常用的高精度數(shù)字測溫芯片,單線通信協(xié)議,通過DQ 進(jìn)行數(shù)據(jù)的收發(fā)[4]。在接收到數(shù)據(jù)時,它的輸入是高阻態(tài);發(fā)送數(shù)據(jù)時,它的輸出是開漏輸出。本身沒有輸出高電平的能力。也就是說,輸出0 時在MOS 中下拉到0,輸出1 時變?yōu)楦唠娮?。它必須連接外部上拉電阻才能將其拉到高電平。否則,不能輸出1。DS18B20 引腳DQ 連接于主控單元STM32F103VET6 的PB5。DS18B20電路設(shè)計(jì)圖如圖3 所示。
圖3 溫度傳感器電路設(shè)計(jì)
本系統(tǒng)使用MPU6050 模塊監(jiān)測人體加速度變化,進(jìn)行摔倒檢測。MPU6050 是可以通過I2C 接口與微控制器通信,MPU6050 對陀螺儀和加速度計(jì)分別集成了三個16 位的ADC,并將其測量的模擬量轉(zhuǎn)化為可輸出的數(shù)字量[5]。I2C 接口電路需要包括SDA 和SCL 兩個信號線,以及上拉電阻。在設(shè)計(jì)時,需要注意I2C 總線的抗干擾能力和通信速率。采用4.7kΩ 的上拉電阻,可以保證I2C 信號的穩(wěn)定和可靠傳輸。一般使STM32 的GPIO 引腳可以設(shè)置為上拉模式,以替代使用外部上拉電阻。在輸入模式下,使能上拉會將引腳拉高至邏輯高電平,從而有效地實(shí)現(xiàn)了上拉功能。這樣可以減少外部元件,簡化設(shè)計(jì)。對于需要高速傳輸?shù)膽?yīng)用,對寄存器的讀取和中斷使用的是20MHz 的SPI。模塊采用3.3V 的直流電源供電,MPU6050 模塊電路連接如圖4 所示。
圖4 MPU6050 模塊電路設(shè)計(jì)
在MCU 接收到異常人體生理數(shù)據(jù)時驅(qū)動GSM 模塊給提前設(shè)定好的號碼發(fā)送報警短信。本設(shè)計(jì)利用SIM800A 作為GSM 模塊為用戶的監(jiān)護(hù)人提供報警提示,SIM800A 是基于GSM 的手機(jī)通訊模塊,可發(fā)短信,可打電話。SIM800A采用串口通信,只要發(fā)送AT 指令就能對它進(jìn)行操作。
模塊接口說明,SIM800A 模塊使用串口通信與主控系統(tǒng)通信。VCC 端口接5V,GND 端口接GND,RXD 端口接主控系統(tǒng)串口發(fā)送端,TXD 端口接主控串口接收端。模塊為5V 直流電源供電,若電壓過低,模塊將不會工作。供電電流需保證能提供2A 的峰值電流。當(dāng)開機(jī)和數(shù)據(jù)傳輸時電流非常大,通常在模塊VCC 和GND 兩端并聯(lián)一個大電容進(jìn)行電流補(bǔ)償,若輸出電流不夠會造成電壓跌落,而導(dǎo)致模塊關(guān)機(jī)。GSM 模塊如圖5 所示。
圖5 GSM 通信模塊電路設(shè)計(jì)
設(shè)備使用STM32F103VET6 為控制核心,在主函數(shù)中,主要進(jìn)行各個模塊的初始化,主控單元來控制運(yùn)行的時序,按照所需要的要求運(yùn)行,具體流程圖如圖6 所示。
圖6 系統(tǒng)軟件整體流程圖
先對MAX30102 模塊的端口與主控單元STM32 是否連接正常,使用萬用表的蜂鳴器檔,來進(jìn)行調(diào)試。此次測試選取了4 位室友A、B、C、D 來進(jìn)行心率的測試,每隔10s來對測試者進(jìn)行手腕的心率6 次的采集,測試時要先按下按鍵將MODE 模式由0 設(shè)置為1,才進(jìn)行信號的采集。采集的結(jié)果如表1 所示。
表1 測試者采集心率值(次/分)
表1 是4 位室友測試者進(jìn)行了6 次測試的數(shù)據(jù)。表中可以看出對代碼進(jìn)行處理之后的數(shù)據(jù),比較穩(wěn)定,但依舊存在誤差。其原因,第一在測試過程中,有外界光強(qiáng)弱的干擾導(dǎo)致產(chǎn)生電信號,就會出現(xiàn)誤差。第二在測試過程中存在手腕每次貼緊的程度不一樣,會存在檢測的信號過于弱;綜上所述,要在干擾小,并且測試需貼緊被測部位、被測位置也合理的情形下,來計(jì)算心率的數(shù)據(jù)。
本文是基于STM32 體感檢測裝置的設(shè)計(jì),主要完成了測量心率和體溫以及進(jìn)行摔倒檢測,用OLED 顯示檢測的各項(xiàng)數(shù)據(jù);通過按鍵來控制開始心率檢測;使用STM32F103VET6 為主控單元,測心率的模塊MAX30102,OLED 顯示用7 針的SPI 協(xié)議來顯示數(shù)據(jù)參數(shù);使用DS18B20 溫度傳感器檢測體溫,系統(tǒng)設(shè)置了體溫度閾值和摔倒檢測,閾值超標(biāo)蜂鳴器報警;每次將檢測到的生理參數(shù)值超標(biāo)就會通過GSM 模塊向監(jiān)護(hù)人報警。通過系統(tǒng)測試,整體運(yùn)行穩(wěn)定,數(shù)據(jù)準(zhǔn)確可靠。