遼寧大學 韓鵬飛 曹 政 都 瑞
本文采用TI單片機MSP-EXP430F5529LP為控制核心,通過通信用單片機WEMOS D1,與開源服務器Blynk相連接,實現無線傳輸與云端控制的物聯網功能。同時,通過心電信息模塊、運動信息模塊、溫度信息模塊來組成整體系統。實驗結果表明,該系統對信息處理穩定且精確,通過無線傳輸可以實現所得數據在上位機的顯示,同時表現出Blynk平臺作為開源項目,便于自建服務器來實現數據的傳遞與保存的優勢。
運動傳感器節點(Motion Sensor node)作為智能手環接受外界信息的重要部件,隨著智能手環的普及,越來越受到外界關注。傳統的運動傳感器節點,只能將內部傳感器收到的外界信息進行處理直接顯示在屏幕上,同時系統維護也不夠便捷,導致結果只具有瞬時性。隨著科學技術的進步與發展,怎樣確保得到的數據在可以被保存下來的基礎上保證數據的精度,已成為急需解決的一個問題。本文將設計的一個可實現無線上傳和數據保存功能,并且可以顯示人體體溫、運動距離與步數、心電信息及對應心電圖的無線運動傳感器節點系統。
該系統可以實現心電測量、溫度測量與運動信息測量,以及將這些信息無線傳輸至上位機并保存的功能。系統主要采用主控單片機MSPEXP430F5529LP、無線傳輸機WEMOS D1、以及各個傳感器模塊組成。圖1所示為系統拓撲結構圖。

圖1 系統拓撲結構圖
系統采用專用溫度傳感器LMT70傳遞溫度信息,心電信息專用數模轉換器ADS1292處理心電信息,陀螺儀mpu6050傳遞運動信息。采用鋰電池作為電源的主要供給,其與傳統的USB供電方式相比,最大的好處是給予了系統可移動性,從而解決了系統運動狀態下無法穩定工作的問題。在電池與元器件之間接入穩壓芯片,將鋰電池提供的大電壓,轉化成5V與3.3V的電壓供給給元器件使用。系統采用顯示屏ssd1306作為顯示部件,實時顯示所測得的心率、步數、距離、溫度與心電圖。
系統框圖如圖2所示。

圖2 系統框圖
心電信息由醫用電極與導聯進行接收與傳輸,其中導聯焊接的穩定與否,直接影響了外界噪聲對有用信息干擾的大小。該部分僅需采用3根導聯線,分別接左腰下側、左胸上側、右胸上側。通過這三根導聯線便可得到穩定可靠的心電信息。心電信息經電極收集后,由導聯傳輸給專用心電模數轉換芯片ads1292進行處理。
溫度信息的接收由專用的溫度傳感器LMT70負責,其+10.0mV/℃增益足以保證原始數據的穩定性與精確性。溫度信息專用模數轉換器ads1115可以將從LMT70處得到的心電模擬電壓轉換成數字量,這個電壓測量的范圍包含人體體溫理論上轉變為模擬電壓的最大值和最小值。
運動信息由陀螺儀MPU6050進行接收傳輸,MPU6050在通過程序設定初始位置之后,由其自身運動產生的加速度,經過本身處理,產生一系列的數字電信號傳給MSP-EXP430F5529LP,從而經由算法處理,可得到精確的運動步數與運動距離信息。
無線傳輸模塊由arduino系列的WEMOS D1單片機進行處理。WEMOS D1包含esp8266無線通信模塊,相較于單獨的esp8266模塊具有引腳全,接線少,燒錄程序時可直接連線而不用于借助于其他模塊的優點,
因此選擇D1作為無線收發機。加入W25QXX作為存儲芯片,可將接收到的信息進行存儲,保證舊信息的可查性。將熱點與esp8266模塊進行連接,從而在虛擬服務器中實現信息的無線上傳與保存。
本次設計采用Energia進行編程,使用比較完善的庫,以MSPEXP430F5529LP作為主要的數據采集、數據處理芯片。由于此次心電數據模塊ADS1292自帶時鐘,提供采樣頻率不同的工作模式,這里只需讀取ADS1292的特定引腳就可以判斷是否要采集數據,基于這一特點,程序中沒有采用中斷,而是利用這一特點,選取125HZ的采樣頻率,在每次采樣的8ms間隔內,進行數據的處理的信息的反饋。
關于信息的顯示,這里采用了兩個渠道,一個是通過主控單片機MSP-EXP430F5529LP連接的SSD1306顯示屏直接顯示,另一個是通過將數據加密后通過串口發送到無線傳輸機WEMOS D1,WEMOS D1將解密后的數據通過其上的WIFI模塊發送到上位機。
圖3所示是MSP-EXP430F5529LP的程序流程圖。

圖3 MSP-EXP430F5529LP的程序流程圖
3.2.1 心率計算方法
將心電信息模數轉換器ADS1292采集回來的數據經過濾波之后存儲在十六位的數組中,數組的長度起碼能夠包括兩個完整的心跳周期,由于采樣頻率是125HZ,所以暫把數組長度設置為300。根據QRS波的特點,R波峰值較大,遠遠大于其它波,找到最大最小值,將最大值減最小值為間隔,進而把比最大值小十分之一間隔的值作為閾值,找到R波波峰上升一側的閾值點,相鄰的兩個閾值點x1、x2之間的時間間隔即為周期,心率的計算公式為:

3.2.2 步數算法
運動信息是與心率信息一同采集并存儲在較大的數組中,當數組采集完成后,先用卡爾曼濾波算法將陀螺儀MPU6050采集的加速度信息進行去噪聲處理,然后把x,y,z三軸方向上的加速度進行合成,即r=(x^2+y^2+z^2)^2,合成數據的曲線應該是一條平滑的曲線。在實際運動測量的時候會產生峰值,通過檢測曲線的大峰值個數,來確定行走的步數,這時要多檢測幾組峰值點兩邊的數據,避免將小擾動誤判為走動。根據查閱資料和實際測量,一步大約行走0.5m,行走距離即為步數×0.65。
3.2.3 溫度算法
用溫度傳感器和測溫槍(代表準確的實際溫度)分別測二十個人的手心溫度,將穩定后的度數記錄下來,得到二十組,四十個數據。溫度傳感器的值作為x(自變量),測溫槍的值作為y(因變量)在MATLAB的擬合曲線工具箱中擬合一條二次曲線,再經過調試得到由傳感器讀數到準確的實際溫度轉換公式:

WEMOS D1的核心芯片是esp8266。使用Arduino作為開發環境,blynk作為物聯網平臺。Arduino其中包含WEMOS D1這塊板子作為設備接入blynk的例程,在此基礎上進行改編聯結至手機提供的熱點網絡,定時向物聯網云端發送接受到的數據信息。終端采用物聯網軟件Blynk從云端進行接收數據并顯示。
測試方案:
實驗在固定設置的手機熱點的條件下進行(無線模塊所必須)。測試者佩戴好整套裝置,用右手攥住溫度傳感器LMT70的測溫部分來傳遞手掌溫度,將系統整體置于小臂處,在一個周長為30m的固定圓形線路上運動。實現對心率、體表溫度、步數及步距測量的實時測量,在無線運動傳感器節點顯示測量結果和動態心電圖。同時將數據上傳,在上位機ipad端的blynk服務器界面顯示測量結果和動態心電圖。完整的Blynk項目界面圖如圖4所示。

圖4 Blynk項目界面圖
本設計使用通信用單片機WEMOS D1實現數據在主控單片機與上位機間的無線傳輸,使用溫度傳感器LMT70測量溫度信息,使用心電專用模數轉換器ADS1292處理心電信息,使用陀螺儀MPU6050處理步數信息,進而由步數信息通過公式運算測得距離信息。該系統穩定性好,測量結果精確,測量速度較快,并可實時現實。測試時的顯示屏界面如圖5所示。

圖5 測試時的顯示屏界面