王嘉露,霍 瑩
(北京市101中學,北京 100091)
近視已經成為我國的“國病”,我國5歲以上人群中,近視比例為35.16%~39.21%,近視的總患病人數在4.37億~4.87億之間,其中,高度近視的比例在2.33%~2.47%之間,患有高度近視的總人口高達2 900萬~3 040萬。如果不能采取有效的政策干預,預計到2020年,我國5歲以上人口的近視發病率將增長到50.86%~51.36%[1]。全國學生體質健康調研最新數據表明,我國小學生近視眼發病率為22.78%,中學生為55.22%,高中生為70.34%.引起近視的原因有很多,比如對手機和電腦的使用和依賴等,但用眼距離過近,特別是閱讀、寫字過近是產生此問題的重要原因之一[2]。
目前,市場上預防近視的產品主要有矯正寫字姿勢的書桌、坐姿監控學習椅、預防近視紙夾以及通過聲、光、電方式檢測距離或者檢測頭部姿態并報警的電子裝置,這些裝置在一定程度上能夠起到預防近視的作用。但上述裝置也存在不足,比如移動不便、活動受限、不習慣,以及結構復雜、成本較高、容易誤判等問題。
iBeacon是2013年9月蘋果公司發布的一項藍牙低功耗產品,基于藍牙4.0標準開發,只有幾立方厘米左右的體積,能耗極低,可以近距離感測,有廠家利用該裝置生產了箱包防丟器。本文采用該裝置設計并實現了預防近視裝置。
本裝置采用基于iBeacon的智能手機對固定在用戶頭部的iBeacon進行測距,當距離小于設定的閾值時,采用聲音、發光或震動提醒用戶,以達到預防近視的目的。裝置包括iBeacon發射模塊和手機終端。iBeacon發射模塊在使用時打開,佩戴在用戶眼部附近位置,按預設的頻率和強度發射信號;手機終端包括藍牙模塊和測距報警應用,藍牙模塊用于接收iBeacon模塊發射的信號,測距報警應用采用基于RSSI的無線測距原理,測算iBeacon模塊與手機終端的距離,當距離低于閾值時報警;當距離增大到超過閾值時報警停止。圖1為裝置原理圖。

圖1 裝置原理圖
按照基本原理設計的裝置包括2個部分:iBeacon發射模塊和手機終端。
iBeacon發射模塊是內置電池且具有通信功能的藍牙設備,該模塊使用低功耗藍牙技術周期性地向周圍發送自己特有的ID等信號。手機終端通過自身配置的4.0或以上版本的藍牙模塊接收iBeacon發射模塊的廣播信號。手機終端含有應用,包含設置模塊、定時模塊、信號接收模塊、距離計算模塊、容錯計算模塊、判斷報警模塊共6個主要模塊。圖2為手機應用模塊。

圖2 手機應用模塊
其中,設置模塊負責選擇目標iBeacon發射模塊、選擇報警方式(比如提示鈴聲種類、音量大小、有無振動等)、設定合適的報警閾值、設定定時模塊接收信號的頻率。
信號接收模塊負責接收含目標iBeacon發射模塊發出的信號在內的藍牙信號,并根據設置的iBeacon發射模塊ID篩選出目標發射模塊的信號。
距離計算模塊通過接收iBeacon發射模塊的RSSI信號強度計算出iBeacon發射模塊與手機終端的距離。
容錯計算模塊負責根據n次瞬時距離數值經過平均和剔除粗大誤差并計算出最終距離數值。
判斷報警模塊通過比對最終距離數值與閾值來判斷是否需要報警。
基于iBeacon預防近視的手機終端應用通過定時模塊啟動測量報警流程,在此之前需要設定iBeacon的UUID、Major、Minor參數。測量流程要有接收指定iBeacon信號的功能,該iBeacon通過UUID識別,接收模塊收集信號時,根據此UUID值對掃描到的所有信號進行過濾,只接受此UUID的iBeacon信號,對iBeacon信號幀的信號內容進行解析,將攜帶的信號RSSI信息保存下來用來計算距離,同時獲取該信號的RSSI強度值。
因為多種因素的存在會影響到iBeacon信號的傳播,收集到的信號會受到噪聲的影響,所以需要對信號進行處理,得到最優的信號值。軟件流程如圖3所示。
iBeacon在藍牙的廣播通道以設定的頻率發送數據包,廣播數據包結構如表1所示,主要由iBeacon Prefix(前綴)、Proximity UUID(接近唯一標識符)、Major(分組號)、Minor(組內號)、Signal Power(信號強度)5部分構成。
前綴包括低功耗藍牙標志、包的長度、蘋果特定的數據格式等;Proximity UUID是接近唯一標識符,可以對應一個特定的應用,應用根據此標識符判斷周邊的iBeacon是不是相關;Major和Minor由iBeacon發布者自行設定,都是16位的標識符,換算成十進制數為0-65535之間的任一值,前者為分組號,后者為組內號,Proximity UUID、Major和Minor三者唯一確定一個iBeacon;Signal Power是iBeacon模塊與接收器之間相距1 m時的參考接收信號強度,單位為分貝,接收器根據該參考值與接收信號的強度來推算發送模塊與接收器的距離。在收取廣播包的同時還獲取了RSSI數值,這個是接收信號的強度,單位為分貝,根據此值和信號強度可以計算距離。

圖3 軟件流程圖

表1 iBeacon的廣播包數據結構
2.2.1 單次距離計算
無線信號對數路徑衰減模型為[3]:

則無線信號模型可以簡化為:

式(2)中:Rt為終端測得的RSSI值;R0為距離設備1 m時候的RSSI值;dt為需要計算的距離。
由于R0的值不帶負號,所以,此式應該取Rt的絕對值,則dt可表示為:

根據公式(3)和接收模塊接收到的信號強度及Signal Power數值計算iBeacon模塊與接收模塊之間的瞬時距離,γ值根據不同iBeacon的不同特性可以進行實際測量調整。
2.2.2 平均距離計算
計算平均距離主要是起到容錯的作用,但容錯計算模塊除了計算平均距離外,還需要剔除粗大誤差,該模塊具體流程如圖4所示。
2.2.2.1 計算前n次距離的平均值
n為設置值,這里設置為10,平均值有可能計算2次,第1次計算平均值主要用來判斷是否存在粗大誤差,若不存在,直接作為結果;若存在,則剔除粗大誤差后重新計算。

圖4 容錯模塊流程圖
2.2.2.2 剔除粗大誤差
判斷是否存在粗大誤差,判斷方法有多種,這里采用萊以達準則進行判斷[4]。

如果∣vi∣>3S,則di存在粗大誤差,去掉這個值。
2.2.3 報警判斷
軟件設置里可以設置閾值,默認值設置為25 cm(建議用眼距離為一尺),判斷上面計算的平均值是否小于設定的閾值,如果小于閾值,就會調用報警模塊發出報警信號。
在計算平均值時會出現一種情況,就是使用者第一次過于接近時,會被判斷為粗大誤差而舍棄,這時的距離平均值不會小于閾值,因此不會報警。當使用者保持接近的姿態舍棄幾次之后,近距離會變為主導,從而會舍棄之前的距離值,這時的平均值會小于閾值而報警。
在實際使用中,使用者不可能保持長期固定靜止,往往會伴有身體的運動,比如晃動身體、翻書、喝水等動作,導致瞬間眼睛與書本間距離過小,如果采用瞬時值,就會報警,但實際情況并不需要。
可見,本文的算法除了更精確之外,還降低了敏感性,降低了誤報的可能性。
按照上述設計,采用Estimote公司生產的iBeacon-Eddystone進行了多組測距實驗,發射信號強度選為-70 db,根據測試數據選取γ值為2.5,典型的數據如表2所示。

表2 iBeacon的廣播包數據結構
測試數據沒有粗大誤差,與實際距離相比,距離有一定的誤差,但趨勢正確,在低于25 cm的情況下有報警,驗證了本裝置的可行性。
本文采用iBeacon結合手機設計了通過藍牙信號測距并報警的近視預防裝置,由于iBeacon的RSSI進行距離計算有比較大的隨機誤差,因此采用容錯機制,剔除粗大誤差,采用平均值來提高測距精度。所實現的近視預防裝置具有體積小、質量輕、非接觸、防誤報等優點,應用前景廣闊。
參考文獻:
[1]李玲.國民健康視覺報告[M].北京:北京大學出版社,2016.
[2]陳秀華,馬紅.青少年如何以中醫養眼?[J].黃金時代:學生族,2013(4):61-62.
[3]周艷,李海成.基于RSSI無線傳感器網絡空間定位算法[J].通信學報,2009,30(6):75-79.
[4]廖碧濤,邱蘭.基于萊以達準則的粗大誤差的自動剔除[J].內江科技,2017(11):50-51.