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