許俊杰 林木泉 李智敏 張偉杰



摘 要:該設計使用低功耗藍牙為通信手段,由臂環和報警器2部分組成。通過體溫傳感器WD3703和6軸運動處理傳感器MPU6050,使用互補濾波算法融合MPU6050內置的陀螺儀和加速度計的數據計算出較為準確的傾角數據,使用中位值平均濾波法計算溫度數據,從而實現嬰幼兒體溫和睡眠姿態的實時監測,并存儲數據。數據異常時會進行報警提示,有效減輕父母在看護嬰幼兒生病發燒時的負擔。該設計存儲的睡眠姿態數據能及時提供給父母作為參考,以便對嬰幼兒的不良睡姿進行調整。
關鍵詞:WD3703;互補濾波算法; MPU6050;中位值平均濾波法
文章編號:2095-2163(2019)04-0194-04 中圖分類號:TN98 文獻標志碼:A
0 引 言
由于當前社會很多年輕父母把更多時間投入工作,嬰幼兒生病發燒后,有時工作還不能落下,甚至需要在家加班。這種情況下,照顧起來往往力不從心,倍感疲憊。即使能放下手頭的工作,也幾乎是整夜無眠,不時測量孩子的體溫,這對父母的身心也是一種考驗。基于此,本文設計了一種具備實時監測嬰幼兒體溫的監測器,減輕父母看護過程中的負擔。同時該設備具備記錄孩子睡眠姿勢的功能,因為孩子的體型在發育階段,70%的時間都是在床上度過[1],該功能能及時矯正孩子的不良睡姿。
1 系統原理
監測器分為2部分:臂環和報警器。臂環戴在嬰幼兒手臂上監測體溫和睡眠的動作狀態,同時將數據通過藍牙發送到報警器。報警器實時通過大尺寸的紅色數碼管顯示嬰兒當前的體溫,同時在液晶顯示屏上顯示嬰幼兒當前的睡眠姿勢。可通過報警器的按鍵查詢嬰幼兒體溫和睡眠姿勢的歷史記錄。系統結構如圖1所示。
2 監測器硬件設計
2.1 臂環硬件組成
臂環的電源芯片使用TP4058,有600mA的可編程充電電流,為臂環內置的鋰電池進行充電管理。鋰電池通過XC6203E332PR低壓差LDO穩壓器輸出3.3 V為傳感器和控制芯片供電。加速度傳感器使用MPU6050,該芯片內部包括一個3軸MEMS陀螺儀和3軸MEMS加速度計[2]。藍牙模塊使用蜂匯物聯科技公司的低功耗BLE射頻模塊,該模塊是基于TI公司的CC2541F256芯片設計而成。體溫傳感器使用WD3703,具有用戶可編程的13位(0.031 25 ℃)分辨率,通過一根數據線實現Single-Line協議完成串行傳輸數據,與控制芯片的PA5引腳連接。控制芯片使用低功耗芯片STM32L151C8T6,具有214 uA/mHz的運行模式和9uA低功耗運行模式[3]。臂環硬件各部分電路詳情如圖2所示。
2.2 報警器硬件組成
報警器的數碼管使用TM1650芯片驅動4位共陰數碼管,報警器使用和臂環同型號的藍牙模塊,通過內存寄存器即可配置主從模式。液晶顯示器使用SPI通信接口的1.8寸TFT屏。存儲芯片使用AT24C32,是一個32K位串行CMOS E2PROM,器件通過IIC總線接口進行操作,有一個專門的寫保護功能[4],內部存放體溫和睡眠姿態數據。一個用戶按鍵,用來切換顯示的內容,聲光報警電路由一個蜂鳴器和LED組成。報警器硬件各部分電路如圖3所示。
3 監測器軟件設計及運行測試
3.1 程序流程圖
臂環程序代碼分為2部分:一是主程序,首先進行傳感器初始化后立即進入低功耗狀態。另一部分是定時器,MPU6050傳感器和體溫傳感器數據的采集在定時器2中每隔200 μs獲取一次,獲取后立即通過藍牙模塊發送數據。
報警器的程序流程如圖4所示。
開機上電后設備先初始化,然后開始接收臂環通過藍牙發送過來的數據,數據通過自定義協議進行數據傳輸。數據異常時進行聲光報警,同時將體溫數據和睡眠姿態通過液晶屏顯示出來。體溫和睡眠姿態數據通過存儲芯片進行長期保存,通過報警器的按鍵可隨時查詢。
在該系統中,藍牙模塊發送的自定義數據幀包括7個字節,第1字節0XFF,表示幀頭,第2字節表示體溫數據的十位,第3字節表示體溫數據的小數位,例如體溫數據是37.5℃,那么第2字節發送的就是37的十六進制數0X25,第3字節是5的十六進制數0X05,第4字節表示睡姿數據,規定0X01是左側躺,0X02是右側躺,0X03是仰躺,0X04是臥躺,第5字節的數據,0X01表示從睡眠中醒來,0X02表達睡眠狀態正常、第6字節、第7字節預留,即目前值都為0X00,方便后續功能的增加,第8字節為前面除幀頭外的校驗和。
3.2 臂環算法設計
臂環主要監測體溫和睡眠姿勢。體溫由接觸式傳感器WD3703通過Single-Line協議直接傳回,該系統使用中位值平均濾波法,即溫度數組中去掉最大值和最小值后取平均值。對于偶然出現的脈沖性干擾,可消除由其所引起的采樣值偏差。
睡眠姿勢的判斷需2個參數,一個是加速度,一個是傾角。本監測器中,通過計算傾角可以監測的睡眠姿勢有仰躺、臥躺、左側躺、右側躺。通過對加速度值的處理可以監測嬰幼兒是否從睡眠中醒來。
每隔20 s主控芯片采集一次MPU6050傳感器的加速度數據,把3個軸加速度的絕對值求和放入一維數組,采集8次。當第1次采集完8個數據之后,第9個數據則替換原來數組中的第1個數據,第10個數據替換原來的數組中的第2個數據,以此類推,保證數組中保存的都是最新采集的8個數據。判斷數組8個元素之和,若大于某個閾值,則說明孩子手臂動作較大,且堅持了較長時間,判定孩子從睡眠中醒來。
對睡眠姿勢的判定需要獲取傾角數據。對MPU6050傳感器而言,加速度計對嬰幼兒手臂動作的加速度比較敏感,取瞬時值計算傾角誤差比較大,而陀螺儀積分得到的角度不受手臂動作產生的加速度影響。但隨著時間的增加,積分漂移和溫度漂移帶來的誤差比較大。通過互補濾波算法可以實現2種傳感器的缺點互相彌補,互補濾波就是短時間內采用陀螺儀得到的角度做為最優,定時對加速度采樣的角度進行取平均值來校正陀螺儀得到的角度[5]。長時間用加速度計較為準確,即加速度計濾高頻信號,陀螺儀濾低頻信號,然后相加得到整個頻帶的信號,互補濾波需要選擇切換的頻率點,即高通和低通的頻率。 算法代碼如下所示:
float K2 =0.14;
float x1,x2,y1;
float dt=20*0.001;
float AngleAmend;
void SecondOrderFilter(float Angle_Acce, float Angle_Gyro)
{
x1=(Angle_Acce-AngleAmend)*(1-K2)*(1-K2);
y1=y1+x1*dt;
x2=y1+2*(1-K2)*(Angle_Acce-AngleAmend)+Angle_Gyro;
AngleAmend=AngleAmend+ x2*dt;
}
其中,K2表示對加速度取值的權重;dt表示濾波器采樣時間;AngleAmend表示二階濾波后的角度;Angle_Acce表示由加速度求出的角度;Angle_Gyro表示角速度。
3.3 監測器的運行及測試
測試階段對測試對象進行了4個睡眠姿勢的識別正確率測試。例如測試仰躺時,前一個睡眠姿勢隨機,即可能是左側躺轉仰躺,也可能是右側躺或者臥躺轉仰躺。每個姿勢測試50次。測試結果見表1。
從測量結果來看,算法具備較高的準確度,能夠滿足監測需求。但是仍然存在一定的誤差,算法存在改進空間。對比體溫計和該監測器測得的數據,誤差在±0.2 ℃以內。
4 結束語
該監測器能夠實時監測嬰幼兒的體溫,對于異常的體溫數據能夠及時產生報警信號提醒監護人,同時記錄的睡眠姿勢便于提醒父母及時調整嬰幼兒的不良睡姿。臂環和報警器的連接無需經過復雜的配對,對于老年監護人員使用方式較為友好。但目前該監護器并未實現聯網功能,且監測的生理參數不多,未能對心率、血氧進行監測。
參考文獻
[1] 李立早, 胡曉燕, 鄭子昊. 一種智能嬰兒睡姿調整系統的設計[J]. 信息通信, 2018 (9):53-55.
[2]徐秀林, 姚曉明, 徐奚嬌. MPU6050在評定人體上肢關節角度中的應用[J]. 生物醫學工程學進展, 2015,36(3):137-141.
[3]朱武輝, 王放. 基于STM32的無線傳感網絡車輛檢測節點的設計[J]. 計算機光盤軟件與應用, 2012(9):166-167.
[4]陳博. AT24C系列貼片式EEPROM芯片[J]. 電子世界, 1998(10):35-36.
[5]張承岫, 李鐵鷹, 王耀力. 基于MPU6050和互補濾波的四旋翼飛控系統設計[J]. 傳感技術學報, 2016,29(7):1011-1015.