王嘉露,霍 瑩
(北京市101中學(xué),北京 100091)
近視已經(jīng)成為我國(guó)的“國(guó)病”,我國(guó)5歲以上人群中,近視比例為35.16%~39.21%,近視的總患病人數(shù)在4.37億~4.87億之間,其中,高度近視的比例在2.33%~2.47%之間,患有高度近視的總?cè)丝诟哌_(dá)2 900萬(wàn)~3 040萬(wàn)。如果不能采取有效的政策干預(yù),預(yù)計(jì)到2020年,我國(guó)5歲以上人口的近視發(fā)病率將增長(zhǎng)到50.86%~51.36%[1]。全國(guó)學(xué)生體質(zhì)健康調(diào)研最新數(shù)據(jù)表明,我國(guó)小學(xué)生近視眼發(fā)病率為22.78%,中學(xué)生為55.22%,高中生為70.34%.引起近視的原因有很多,比如對(duì)手機(jī)和電腦的使用和依賴(lài)等,但用眼距離過(guò)近,特別是閱讀、寫(xiě)字過(guò)近是產(chǎn)生此問(wèn)題的重要原因之一[2]。
目前,市場(chǎng)上預(yù)防近視的產(chǎn)品主要有矯正寫(xiě)字姿勢(shì)的書(shū)桌、坐姿監(jiān)控學(xué)習(xí)椅、預(yù)防近視紙夾以及通過(guò)聲、光、電方式檢測(cè)距離或者檢測(cè)頭部姿態(tài)并報(bào)警的電子裝置,這些裝置在一定程度上能夠起到預(yù)防近視的作用。但上述裝置也存在不足,比如移動(dòng)不便、活動(dòng)受限、不習(xí)慣,以及結(jié)構(gòu)復(fù)雜、成本較高、容易誤判等問(wèn)題。
iBeacon是2013年9月蘋(píng)果公司發(fā)布的一項(xiàng)藍(lán)牙低功耗產(chǎn)品,基于藍(lán)牙4.0標(biāo)準(zhǔn)開(kāi)發(fā),只有幾立方厘米左右的體積,能耗極低,可以近距離感測(cè),有廠家利用該裝置生產(chǎn)了箱包防丟器。本文采用該裝置設(shè)計(jì)并實(shí)現(xiàn)了預(yù)防近視裝置。
本裝置采用基于iBeacon的智能手機(jī)對(duì)固定在用戶(hù)頭部的iBeacon進(jìn)行測(cè)距,當(dāng)距離小于設(shè)定的閾值時(shí),采用聲音、發(fā)光或震動(dòng)提醒用戶(hù),以達(dá)到預(yù)防近視的目的。裝置包括iBeacon發(fā)射模塊和手機(jī)終端。iBeacon發(fā)射模塊在使用時(shí)打開(kāi),佩戴在用戶(hù)眼部附近位置,按預(yù)設(shè)的頻率和強(qiáng)度發(fā)射信號(hào);手機(jī)終端包括藍(lán)牙模塊和測(cè)距報(bào)警應(yīng)用,藍(lán)牙模塊用于接收iBeacon模塊發(fā)射的信號(hào),測(cè)距報(bào)警應(yīng)用采用基于RSSI的無(wú)線測(cè)距原理,測(cè)算iBeacon模塊與手機(jī)終端的距離,當(dāng)距離低于閾值時(shí)報(bào)警;當(dāng)距離增大到超過(guò)閾值時(shí)報(bào)警停止。圖1為裝置原理圖。
圖1 裝置原理圖
按照基本原理設(shè)計(jì)的裝置包括2個(gè)部分:iBeacon發(fā)射模塊和手機(jī)終端。
iBeacon發(fā)射模塊是內(nèi)置電池且具有通信功能的藍(lán)牙設(shè)備,該模塊使用低功耗藍(lán)牙技術(shù)周期性地向周?chē)l(fā)送自己特有的ID等信號(hào)。手機(jī)終端通過(guò)自身配置的4.0或以上版本的藍(lán)牙模塊接收iBeacon發(fā)射模塊的廣播信號(hào)。手機(jī)終端含有應(yīng)用,包含設(shè)置模塊、定時(shí)模塊、信號(hào)接收模塊、距離計(jì)算模塊、容錯(cuò)計(jì)算模塊、判斷報(bào)警模塊共6個(gè)主要模塊。圖2為手機(jī)應(yīng)用模塊。
圖2 手機(jī)應(yīng)用模塊
其中,設(shè)置模塊負(fù)責(zé)選擇目標(biāo)iBeacon發(fā)射模塊、選擇報(bào)警方式(比如提示鈴聲種類(lèi)、音量大小、有無(wú)振動(dòng)等)、設(shè)定合適的報(bào)警閾值、設(shè)定定時(shí)模塊接收信號(hào)的頻率。
信號(hào)接收模塊負(fù)責(zé)接收含目標(biāo)iBeacon發(fā)射模塊發(fā)出的信號(hào)在內(nèi)的藍(lán)牙信號(hào),并根據(jù)設(shè)置的iBeacon發(fā)射模塊ID篩選出目標(biāo)發(fā)射模塊的信號(hào)。
距離計(jì)算模塊通過(guò)接收iBeacon發(fā)射模塊的RSSI信號(hào)強(qiáng)度計(jì)算出iBeacon發(fā)射模塊與手機(jī)終端的距離。
容錯(cuò)計(jì)算模塊負(fù)責(zé)根據(jù)n次瞬時(shí)距離數(shù)值經(jīng)過(guò)平均和剔除粗大誤差并計(jì)算出最終距離數(shù)值。
判斷報(bào)警模塊通過(guò)比對(duì)最終距離數(shù)值與閾值來(lái)判斷是否需要報(bào)警。
基于iBeacon預(yù)防近視的手機(jī)終端應(yīng)用通過(guò)定時(shí)模塊啟動(dòng)測(cè)量報(bào)警流程,在此之前需要設(shè)定iBeacon的UUID、Major、Minor參數(shù)。測(cè)量流程要有接收指定iBeacon信號(hào)的功能,該iBeacon通過(guò)UUID識(shí)別,接收模塊收集信號(hào)時(shí),根據(jù)此UUID值對(duì)掃描到的所有信號(hào)進(jìn)行過(guò)濾,只接受此UUID的iBeacon信號(hào),對(duì)iBeacon信號(hào)幀的信號(hào)內(nèi)容進(jìn)行解析,將攜帶的信號(hào)RSSI信息保存下來(lái)用來(lái)計(jì)算距離,同時(shí)獲取該信號(hào)的RSSI強(qiáng)度值。
因?yàn)槎喾N因素的存在會(huì)影響到iBeacon信號(hào)的傳播,收集到的信號(hào)會(huì)受到噪聲的影響,所以需要對(duì)信號(hào)進(jìn)行處理,得到最優(yōu)的信號(hào)值。軟件流程如圖3所示。
iBeacon在藍(lán)牙的廣播通道以設(shè)定的頻率發(fā)送數(shù)據(jù)包,廣播數(shù)據(jù)包結(jié)構(gòu)如表1所示,主要由iBeacon Prefix(前綴)、Proximity UUID(接近唯一標(biāo)識(shí)符)、Major(分組號(hào))、Minor(組內(nèi)號(hào))、Signal Power(信號(hào)強(qiáng)度)5部分構(gòu)成。
前綴包括低功耗藍(lán)牙標(biāo)志、包的長(zhǎng)度、蘋(píng)果特定的數(shù)據(jù)格式等;Proximity UUID是接近唯一標(biāo)識(shí)符,可以對(duì)應(yīng)一個(gè)特定的應(yīng)用,應(yīng)用根據(jù)此標(biāo)識(shí)符判斷周邊的iBeacon是不是相關(guān);Major和Minor由iBeacon發(fā)布者自行設(shè)定,都是16位的標(biāo)識(shí)符,換算成十進(jìn)制數(shù)為0-65535之間的任一值,前者為分組號(hào),后者為組內(nèi)號(hào),Proximity UUID、Major和Minor三者唯一確定一個(gè)iBeacon;Signal Power是iBeacon模塊與接收器之間相距1 m時(shí)的參考接收信號(hào)強(qiáng)度,單位為分貝,接收器根據(jù)該參考值與接收信號(hào)的強(qiáng)度來(lái)推算發(fā)送模塊與接收器的距離。在收取廣播包的同時(shí)還獲取了RSSI數(shù)值,這個(gè)是接收信號(hào)的強(qiáng)度,單位為分貝,根據(jù)此值和信號(hào)強(qiáng)度可以計(jì)算距離。
圖3 軟件流程圖
表1 iBeacon的廣播包數(shù)據(jù)結(jié)構(gòu)
2.2.1 單次距離計(jì)算
無(wú)線信號(hào)對(duì)數(shù)路徑衰減模型為[3]:
則無(wú)線信號(hào)模型可以簡(jiǎn)化為:
式(2)中:Rt為終端測(cè)得的RSSI值;R0為距離設(shè)備1 m時(shí)候的RSSI值;dt為需要計(jì)算的距離。
由于R0的值不帶負(fù)號(hào),所以,此式應(yīng)該取Rt的絕對(duì)值,則dt可表示為:
根據(jù)公式(3)和接收模塊接收到的信號(hào)強(qiáng)度及Signal Power數(shù)值計(jì)算iBeacon模塊與接收模塊之間的瞬時(shí)距離,γ值根據(jù)不同iBeacon的不同特性可以進(jìn)行實(shí)際測(cè)量調(diào)整。
2.2.2 平均距離計(jì)算
計(jì)算平均距離主要是起到容錯(cuò)的作用,但容錯(cuò)計(jì)算模塊除了計(jì)算平均距離外,還需要剔除粗大誤差,該模塊具體流程如圖4所示。
2.2.2.1 計(jì)算前n次距離的平均值
n為設(shè)置值,這里設(shè)置為10,平均值有可能計(jì)算2次,第1次計(jì)算平均值主要用來(lái)判斷是否存在粗大誤差,若不存在,直接作為結(jié)果;若存在,則剔除粗大誤差后重新計(jì)算。
圖4 容錯(cuò)模塊流程圖
2.2.2.2 剔除粗大誤差
判斷是否存在粗大誤差,判斷方法有多種,這里采用萊以達(dá)準(zhǔn)則進(jìn)行判斷[4]。
如果∣vi∣>3S,則di存在粗大誤差,去掉這個(gè)值。
2.2.3 報(bào)警判斷
軟件設(shè)置里可以設(shè)置閾值,默認(rèn)值設(shè)置為25 cm(建議用眼距離為一尺),判斷上面計(jì)算的平均值是否小于設(shè)定的閾值,如果小于閾值,就會(huì)調(diào)用報(bào)警模塊發(fā)出報(bào)警信號(hào)。
在計(jì)算平均值時(shí)會(huì)出現(xiàn)一種情況,就是使用者第一次過(guò)于接近時(shí),會(huì)被判斷為粗大誤差而舍棄,這時(shí)的距離平均值不會(huì)小于閾值,因此不會(huì)報(bào)警。當(dāng)使用者保持接近的姿態(tài)舍棄幾次之后,近距離會(huì)變?yōu)橹鲗?dǎo),從而會(huì)舍棄之前的距離值,這時(shí)的平均值會(huì)小于閾值而報(bào)警。
在實(shí)際使用中,使用者不可能保持長(zhǎng)期固定靜止,往往會(huì)伴有身體的運(yùn)動(dòng),比如晃動(dòng)身體、翻書(shū)、喝水等動(dòng)作,導(dǎo)致瞬間眼睛與書(shū)本間距離過(guò)小,如果采用瞬時(shí)值,就會(huì)報(bào)警,但實(shí)際情況并不需要。
可見(jiàn),本文的算法除了更精確之外,還降低了敏感性,降低了誤報(bào)的可能性。
按照上述設(shè)計(jì),采用Estimote公司生產(chǎn)的iBeacon-Eddystone進(jìn)行了多組測(cè)距實(shí)驗(yàn),發(fā)射信號(hào)強(qiáng)度選為-70 db,根據(jù)測(cè)試數(shù)據(jù)選取γ值為2.5,典型的數(shù)據(jù)如表2所示。
表2 iBeacon的廣播包數(shù)據(jù)結(jié)構(gòu)
測(cè)試數(shù)據(jù)沒(méi)有粗大誤差,與實(shí)際距離相比,距離有一定的誤差,但趨勢(shì)正確,在低于25 cm的情況下有報(bào)警,驗(yàn)證了本裝置的可行性。
本文采用iBeacon結(jié)合手機(jī)設(shè)計(jì)了通過(guò)藍(lán)牙信號(hào)測(cè)距并報(bào)警的近視預(yù)防裝置,由于iBeacon的RSSI進(jìn)行距離計(jì)算有比較大的隨機(jī)誤差,因此采用容錯(cuò)機(jī)制,剔除粗大誤差,采用平均值來(lái)提高測(cè)距精度。所實(shí)現(xiàn)的近視預(yù)防裝置具有體積小、質(zhì)量輕、非接觸、防誤報(bào)等優(yōu)點(diǎn),應(yīng)用前景廣闊。
參考文獻(xiàn):
[1]李玲.國(guó)民健康視覺(jué)報(bào)告[M].北京:北京大學(xué)出版社,2016.
[2]陳秀華,馬紅.青少年如何以中醫(yī)養(yǎng)眼?[J].黃金時(shí)代:學(xué)生族,2013(4):61-62.
[3]周艷,李海成.基于RSSI無(wú)線傳感器網(wǎng)絡(luò)空間定位算法[J].通信學(xué)報(bào),2009,30(6):75-79.
[4]廖碧濤,邱蘭.基于萊以達(dá)準(zhǔn)則的粗大誤差的自動(dòng)剔除[J].內(nèi)江科技,2017(11):50-51.