邱杰凡,李成林,陳立建,毛科技
(浙江工業(yè)大學計算機科學與技術學院,杭州 310023)
隨著物聯(lián)網(wǎng)應用的不斷發(fā)展,大量物聯(lián)網(wǎng)邊緣設備作為感知端,需要不斷獲取物理世界的數(shù)據(jù)。這些數(shù)據(jù)具有很大冗余性,并且傳輸這些數(shù)據(jù)需要占用大量的帶寬資源。為了減輕上層云端的計算負擔,同時減少冗余數(shù)據(jù)帶來的傳輸成本,因此,當前的研究希望邊緣設備在本地具有一定的數(shù)據(jù)交換和計算處理的能力[1-2]。當前,近場通信作為一種可以高效地建立局部數(shù)據(jù)傳輸通道的方法,得益于其較低的功耗正在被越來越多的物聯(lián)網(wǎng)邊緣設備所采用。
現(xiàn)有的近場通信方法通常采用電磁波廣播傳輸方式,信號在傳輸過程中容易被截獲竊聽,并不能很好地滿足人們對安全性的需求。并且,未來隨著更多的物聯(lián)網(wǎng)設備并發(fā)地接入,廣播傳輸也會帶來帶寬資源緊張的問題,進一步影響設備接入成功率和通信質(zhì)量。為此,尋求一種新的傳輸方式,作為當前電磁波傳輸方式的補充是很有意義的[3]。當前的研究表明可見光通信VLC(Visible Light Communication)不同于電磁波廣播傳輸,可以實現(xiàn)指向性傳輸,不易被截取竊聽,無疑能為提高近場通信的安全性提供一種可行的解決方案。
當前使用可見光通信需要專門的接入設備,這限制了可見光通信在物聯(lián)網(wǎng)邊緣設備中的大規(guī)模應用。例如,Fan L等人將可見光通信應用于門禁系統(tǒng),為此需要對現(xiàn)有門禁系統(tǒng)進行改進,并增加了專門的可見光通信電路。該電路包括了光電二極管、放大器、比較器和專用的MCU[4]。Wang Y等人設計了基于可見光RGB-LED的雙向室內(nèi)通信系統(tǒng),為了實現(xiàn)高速的傳輸速率和解決多信道傳輸問題,該雙向通信系統(tǒng)中采用了RGB發(fā)光二極管、低通濾波器、電子放大器、光電二極管來提高系統(tǒng)性能[5]。此外,可見光通信技術容易受到環(huán)境光噪聲的影響,Adiono T等人提出了降低室內(nèi)環(huán)境中的光噪聲的解決方案,此方案需要在前端接收器中增加模擬濾波器[6]。這些附加的設備或硬件優(yōu)化,需要在硬件層面對現(xiàn)有物聯(lián)網(wǎng)邊緣設備進行修改,無疑會增加設備的硬件成本。
另一方面,隨著手機、平板電腦等物聯(lián)網(wǎng)邊緣移動設備普及率越來越高,將大大豐富了物聯(lián)網(wǎng)的應用場景。這些量產(chǎn)型(off the shelf)移動設備通常集成了多種傳感器模塊,這些傳感器相互之間協(xié)助工作能夠擴展移動設備本身的功能[7-10]。例如,當前已有研究者使用移動設備中內(nèi)置的聲音傳感器實現(xiàn)了肺活量的檢測[7]以及通過加速度傳感器進行心率檢測[8]。其中,移動設備上的可見光傳感器模塊具備感知可見光的能力,且移動設備的顯示屏以及用于拍照的閃光燈可以作為可見光源。這些外部條件使得移動設備具備了潛在進行可見光通信的能力。
通過查閱相關參考文獻,我們尚未發(fā)現(xiàn)一種針對量產(chǎn)型移動設備傳感器的近場通信方法。為此,我們根據(jù)近場通信的特點,提出了適用于量產(chǎn)型移動設備的可見光近場通信方法。該方法利用移動設備上現(xiàn)有的一系列通用模塊,無需額外的專用設備及元件,也無需對現(xiàn)有移動設備在硬件層面進行修改,實現(xiàn)了基于可見光的近場通信。
與現(xiàn)有的可見光通信系統(tǒng)相比,本文中的可見光通信系統(tǒng)采用了混合雙工通信。根據(jù)現(xiàn)有移動設備構造特點在上、下行鏈路中需要采用不同的傳感器模塊和光源模塊。如圖1所示,上行鏈路采用閃光燈與環(huán)境光傳感器作為信號發(fā)射器和信號接收器,下行鏈路采用屏幕與攝像頭作為信號發(fā)射器和信號接收器。然而,這些量產(chǎn)型移動設備上的通用模塊由于受到傳感性能以及能耗的限制并不能很好地滿足可見光通信需求,為此本文將從提高傳輸速率以及降低通信能量開銷兩個方面對上、下行鏈路展開討論。
圖1 硬件交互圖
在上行鏈路中,閃光燈作為光源發(fā)射信號,位于另一個移動設備上的環(huán)境光傳感器模塊作為接收器通過感知光源變化接收信號。由于目前移動設備上采用的閃光燈和環(huán)境光傳感器模塊并不是專門為可見光通信設計的,現(xiàn)有的無線電通信調(diào)制方法如脈沖寬度調(diào)制(PWM)和脈沖間隔調(diào)制(PIM)由于傳輸速率低且耗能較高,并非最佳的調(diào)制方法。為此我們對現(xiàn)有編碼調(diào)制方法進行優(yōu)化,提出了適用于移動設備的可見光通信調(diào)制方法——狀態(tài)轉(zhuǎn)化調(diào)制STM(State Transaction Modulation),STM調(diào)制將數(shù)據(jù)分組表示,并利用低脈沖表示數(shù)據(jù),在比特序列出現(xiàn)重復時,利用標記符號進行壓縮表示。相比較于現(xiàn)有的可見光編碼調(diào)制,STM調(diào)制在保證誤碼率的同時,可以有效提高數(shù)據(jù)傳輸速率,并降低傳輸能耗。
在下行鏈路中,由于需要承擔的傳輸數(shù)據(jù)量較大,可以將數(shù)據(jù)轉(zhuǎn)化為二維碼顯示在移動設備屏幕上[11],由另一部移動設備的攝像頭傳感器模塊作為接收器,通過掃描二維碼,完成信息交互。在這一過程中,由于需要將高能耗的移動設備屏幕作為發(fā)射器,必須在數(shù)據(jù)傳輸過程中考慮能耗問題。為此,我們還設計了一種反饋式的屏幕亮度控制方法,在保證數(shù)據(jù)傳輸速率的前提下,通過調(diào)節(jié)屏幕亮度,盡量降低發(fā)射端的能耗。
在該系統(tǒng)中,受到的環(huán)境光干擾主要來自于太陽光以及白熾燈光源等。這些光源屬于非調(diào)制光源,對于這些非調(diào)制光源,環(huán)境光傳感器在光信息接收過程中表現(xiàn)為一個恒定的光功率輸入[12]。并且該系統(tǒng)應用在近場通信中,通信距離較近,因此即使移動設備不具備排除環(huán)境光干擾的專用電路,依舊可以實現(xiàn)光編碼的采集。
最終,我們使用現(xiàn)有的Android移動設備實現(xiàn)了一個基于可見光的近場混合雙工通信系統(tǒng)。通過該系統(tǒng),我們從傳輸速率,傳輸環(huán)境,以及能耗三個方面,驗證了可見光通信在量產(chǎn)型移動設備上應用的可行性。
日本是最早提出可見光通信概念并進行研究的國家[13]。2000年,Tanka等人提出將提供照明的白光LED用于室內(nèi)無線鏈路,驗證了采用白光LED同時兼具照明和通信功能的可行性[13-14]。除了室內(nèi)通信以外,Nakajima M等人設計了幫助視覺障礙者識別位置的室內(nèi)導航系統(tǒng)[15],移動設備可通過可見光通信接收LED傳來的信息,經(jīng)過計算定位并路徑優(yōu)化后將結(jié)果反饋到耳機中引導行人,在可見光通信領域,我們更加關注信息交互的方式與過程的研究。Fan L等人利用手機閃光燈與門禁交互完成身份識別[4],手機在該可見光通信系統(tǒng)中僅充當發(fā)射端的角色,負責信息的編碼與發(fā)送,由光接收機參與光信息的接收與解碼。Das S等人采用LED作為發(fā)送端來發(fā)送光信息并利用光電二極管作為接收端來檢測接收光信息,在arduino上實現(xiàn)了點對點的通信[16]。同樣的,CMOS傳感器也具有將光信號接收并轉(zhuǎn)換成電信號的功能,因此許多研究者開始研究攝像頭在可見光通信中的作用。利用CMOS傳感器的卷簾快門特性來捕獲光信息是目前可見光通信研究的熱點之一。Nguyen T等人介紹了使用LED和卷簾快門相機作為發(fā)射器和接收器的光學相機通信[17]。但由于移動設備閃光燈閃爍頻率較低,與卷簾快門掃描速度不匹配,因此我們的系統(tǒng)無法采用該方法進行光信號的采集。
目前在可見光通信中主要采用強度調(diào)制/直接檢測(IM/DD)方式來進行通信[18],主要的調(diào)制策略有以下幾種:Kahn等人提出的開關鍵控調(diào)制(OOK)[19],以高脈沖表示碼元“1”,低脈沖表示碼元“0”,實現(xiàn)起來較為簡單,但抗干擾能力較弱;張建昆等人提出的以脈沖寬度調(diào)制(PWM)波形作為載波的編碼調(diào)制策略[20],使用高脈沖攜帶數(shù)據(jù),以不同的脈寬表示不同的碼元,PWM調(diào)制具有較好的抗干擾能力,但帶寬需求大且不能有效降低高脈沖持續(xù)時間;與PWM調(diào)制相對應還有脈沖間隔調(diào)制(PIM),與PWM調(diào)制不同的是PIM調(diào)制利用低脈沖攜帶數(shù)據(jù),以不同的脈沖間隔大小來表示不同的碼元;之后在PIM調(diào)制的基礎上改進提出了數(shù)字脈沖間隔調(diào)制(DPIM),并且Ghassemlooy等人首次在光通信領域中運用到DPIM調(diào)制[21]。隨后Aldibbiat等人在 DPIM 的基礎上提出了雙頭脈沖間隔調(diào)制(DH-PIM)[22]。
我們首先在量產(chǎn)型移動設備上測試了當前適用于可見光的兩種信號調(diào)制:脈沖間隔調(diào)制(PIM)和脈沖寬度調(diào)制(PWM)。
在上述兩種調(diào)制方法中均存在不足,傳輸速率低且能耗較大。在PIM調(diào)制的基礎上,有一種改進過后的調(diào)制方法:雙頭脈沖間隔調(diào)制DH-PIM(Dual-Header Pulse Interval Modulation)。但DH-PIM無法對二進制比特序列進行壓縮。
當一個二進制比特序列中有多次重復時,為了提高傳輸效率以及減少脈沖量保證低功耗,借鑒DH-PIM調(diào)制的思想,本文提出了一種適用于量產(chǎn)型移動設備近場可見光通信的狀態(tài)轉(zhuǎn)化調(diào)制(STM)。
其核心思想是針對狀態(tài)發(fā)生轉(zhuǎn)化(出現(xiàn)多次重復)的數(shù)據(jù)使用特殊的高脈沖標記出被重復對象和重復次數(shù),沒有發(fā)生轉(zhuǎn)化(沒有出現(xiàn)多次重復)則繼續(xù)使用DH-PIM進行調(diào)制。當調(diào)制階數(shù)M=4時,將比特序列分為4位一組,單位脈沖寬度取作1tb,設一個分組中的比特序列表示的數(shù)值為n,在表示數(shù)據(jù)之前先添加1tb低脈沖作為保護時隙,當n<8時,采用n個單位脈沖寬度的低脈沖來表示數(shù)據(jù),之后增加1tb高脈沖來進行分隔。為了避免每4位比特序列對應的二進制數(shù)過大而導致需要用很長的一段低脈沖來調(diào)制數(shù)據(jù),當n>8時,表示數(shù)據(jù)的低脈沖的單位脈沖寬度數(shù)量則是該分組內(nèi)四位二進制數(shù)按位取反后的值,并且之后采用2tb高脈沖來進行分隔。若出現(xiàn)多次重復時,STM調(diào)制利用特殊的脈沖表示出連續(xù)重復數(shù)據(jù),從而有效縮短編碼長度以及減少高脈沖的持續(xù)時間。
圖2 STM調(diào)制狀態(tài)圖
在STM調(diào)制中分為三種狀態(tài),即開始狀態(tài),傳輸狀態(tài)和結(jié)束狀態(tài)。如圖2所示,當環(huán)境光傳感器還沒有感知到起始信號時為開始狀態(tài),準備接收高脈沖信號。根據(jù)傳輸?shù)臄?shù)據(jù),可以將傳輸狀態(tài)進一步劃分為非重復狀態(tài),單組內(nèi)重復狀態(tài)以及多組重復狀態(tài)。數(shù)據(jù)傳輸需要在這三種狀態(tài)中切換,且根據(jù)不同的狀態(tài),其編碼方式存在差異。當數(shù)據(jù)傳輸結(jié)束時,進入結(jié)束狀態(tài),環(huán)境光傳感器等待下一次數(shù)據(jù)傳輸。
當被調(diào)制數(shù)據(jù)出現(xiàn)多次重復時,需要標記出被重復對象所占的位數(shù),以及重復的次數(shù),這樣就可以利用更少的脈沖數(shù)來表示數(shù)據(jù),采用2tb高脈沖作為重復標記位來標記連續(xù)重復的數(shù)據(jù)。之后的低脈沖所占單位脈沖寬度的數(shù)量表示被重復對象的位數(shù),然后采用1tb高脈沖作為分隔符,后一段低脈沖所占單位脈沖寬度的數(shù)量表示被重復對象的重復次數(shù)。例如,表示“0100重復3次”的STM調(diào)制圖如圖3所示。
我們發(fā)現(xiàn),如果被重復對象的重復次數(shù)太大,會導致表示重復次數(shù)的單位低脈沖數(shù)量過多,傳輸速率下降,甚至上行鏈路接收端無法判斷是否傳輸結(jié)束。因此,在被重復對象的重復次數(shù)大于9的時候,我們在表示重復次數(shù)的低脈沖段中增加2tb高脈沖來分隔出重復次數(shù)的十位和個位數(shù)字。如圖4所示,當被重復對象“0010”重復12次時,分隔出兩段低脈沖時隙來分別表示十位數(shù)字“1”和個位數(shù)字“2”。
圖3 STM調(diào)制
圖4 重復次數(shù)較多的STM調(diào)制
在STM調(diào)制中,如果沒有出現(xiàn)重復的情況,STM調(diào)制與DH-PIM調(diào)制方式是一致的,只有傳輸?shù)男蛄兄谐霈F(xiàn)多次重復才會采用壓縮的調(diào)制方式,所以STM調(diào)制實際上是一種可壓縮的DH-PIM調(diào)制方法。
由于兩個先后出現(xiàn)的連續(xù)重復字符串序列可能存在互相交集的情況,那么先進行傳輸?shù)淖址蛄幸呀?jīng)表達過后傳輸字符串序列的交集部分,這部分內(nèi)容不需要再次進行傳輸。在處理后出現(xiàn)的重復字符串序列時,交集部分需要STM調(diào)制自動進行忽略。忽略之后,與之相對應的,后傳輸字符串的重復標志位也需要被設置到第一個未被交集覆蓋的重復字符串上。例如,當發(fā)送序列為“001001001001001000110001100011”時,第一組序列為“0010”,取其中后三位“010”重復四次,后一個分組是“0011”,取前面的五位“00011”重復兩次。
STM調(diào)制實質(zhì)上是一種壓縮的DH-PIM調(diào)制方法,因此在使用STM調(diào)制之前,需要匹配所調(diào)制數(shù)據(jù)的最長連續(xù)重復串及其子串。根據(jù)匹配的結(jié)果進行編碼并發(fā)送,接收后進行逆運算解碼完成上行鏈路的數(shù)據(jù)傳輸過程。
數(shù)據(jù)一般是按幀進行編碼并傳輸?shù)摹TO一幀的數(shù)據(jù)長度為T,則最長重復串不會超過幀長度的一半T/2。為了找到一幀中所有的數(shù)據(jù)連續(xù)重復串,我們設計了查找重復數(shù)據(jù)的算法。在該算法中,輸入為長度T的數(shù)據(jù)a,輸出一個大小為T×T的連續(xù)字符串矩陣ReMatrix。該矩陣的行表示當前原始字符串的起始位置,列表示當前原始字符串的結(jié)束位置,矩陣的元素是當前原始字符串被重復的次數(shù)。由于字符串開始位置不能大于結(jié)束位置,因此 ReMatrix 至少有一半元素為0。
根據(jù)ReMatrix矩陣,可以判斷所有重復字符串的開始位置,重復位數(shù)以及重復次數(shù)。并把這些信息分別存到Place,Digit以及Frequency集合中。據(jù)此我們給出STM調(diào)制算法,算法的輸入為:開始位置Place,重復位數(shù)Digit,重復次數(shù)Frequency以及被調(diào)制數(shù)據(jù)a,算法的輸出為電平時長列表TimeSeri,列表元素是由二進制序列分組后對應的十進制數(shù)集合組成。
STM調(diào)制算法:
輸入:開始位置Place,重復位數(shù)Digit,重復次數(shù)Frequency,被調(diào)制數(shù)據(jù)a
輸出:電平時長列表TimeSeri
函數(shù)介紹:根據(jù)調(diào)制階數(shù)M=4以及ReMatrix矩陣提供的所有重復字符串的開始位置,重復位數(shù)以及重復次數(shù)將被調(diào)制數(shù)據(jù)a進行分組,并將每個分組轉(zhuǎn)化成對應的十進制數(shù)。
if(Place.size()==0){
Place.add(-1);//表示該序列沒有重復出現(xiàn)
}
for(int i=0,j=0;i if(i!=Place.get(j)){//當前位置沒有出現(xiàn)重復 if(i+4<=send_data.length()){//剩下不少于4位 group.add(send_data.substring(i,i+4));//將4位一組加到分組集合中 isRepeat.add(0);//并標記為沒有重復 } else if(send_data.length()-i>0){//剩下不足4位 group.add(send_data.substring(i,send_data.length()));//則直接分為一組 isRepeat.add(0);//并標記為沒有重復 } i+=4;//i移到4位后 } else if(i==Place.get(j)){ isRepeat.add(1);//標記為有重復 group.add("10000");//標記為重復分組 i=i+Digit.get(j)*Frequency.get(j);//i移到第j個重復序列表示完以后 if(j+1 j++;//下一次重復 } } for(int j=0;j num=Integer.valueOf(group.get(j),2);//將分組中的二進制序列轉(zhuǎn)換為十進制數(shù) decimal.add(num);//將十進制數(shù)存進集合 } 之后可根據(jù)該十進制數(shù)集合來控制高低脈沖的脈寬,并對數(shù)據(jù)進行編碼。PIM調(diào)制和PWM調(diào)制只在一種狀態(tài)下存儲數(shù)據(jù),另外一種狀態(tài)是用來間隔相鄰兩個數(shù)據(jù)的。但在DH-PIM調(diào)制中,由于引入了分組機制,除去了冗余的間隔位。在STM調(diào)制中又對有重復的序列進行了壓縮。這樣一來,與PIM調(diào)制和PWM調(diào)制相比,在相同的脈沖持續(xù)時間內(nèi)傳輸更長的二進制比特序列,STM調(diào)制明顯減少了數(shù)據(jù)傳輸所需要的時間且耗費更少的高脈沖。為了驗證這一結(jié)論,本文進行了實驗,結(jié)果如圖5和圖6所示。 圖5 四種調(diào)制的吞吐量比較 圖6 四種調(diào)制的高脈沖數(shù)量比較 在判斷高脈沖下降沿和上升沿的時候,我們采用的是閾值判別法,即: Data(i-1)-Data(i)>εData(i)-Data(i-1)>ε (1) 式(1)中Data表示接收到的光照強度值序列,i表示兩個序列中的第i個采樣點,Data(i)表示第i個點的光照強度值。ε表示一個判別閾值,本系統(tǒng)中ε=1 000。然后根據(jù)高、低脈沖的寬度還原出對應的二進制比特序列。 在判斷高脈沖上下沿時,需要設置兩個標識符flag_up和flag_down,當Data(i)-Data(i-1)>2ε時,flag_up置為真,表示當前狀態(tài)為第一個高脈沖的上升沿,此時記錄當前的up=i。之后遇到第一個 Data(i-1)-Data(i)>ε,表示高脈沖上升沿結(jié)束,開始進入下降沿狀態(tài)。此時記錄當前的down=i。同樣的,當再遇到Data(i)-Data(i-1)>ε時,flag_down置為真,表示當前狀態(tài)為高脈沖的上升沿,此時更新記錄下up=i。 (2) 式(2)中duration_up高脈沖段中占的單位脈沖寬度數(shù)量。Time表示接收到光照強度值的時間戳序列,down表示下降沿的起始點, up表示上升沿的結(jié)束點,unit表示發(fā)送數(shù)據(jù)的單位脈沖寬度(只有發(fā)送端和接收端的單位脈沖寬度一致才能成功解碼)。使用同樣的方法,我們可以獲得低脈沖段中占的單位脈沖寬度數(shù)量durationdown。這里的durationup和durationdown正是本文還原二進制比特序列的基礎。 在STM調(diào)制過程中。因為STM調(diào)制采用分組的機制,所以可以先將所有脈沖段所占的單位脈沖寬度數(shù)量放入一個數(shù)組中,然后根據(jù)分組機制即可對該數(shù)組中的數(shù)據(jù)進行逆運算解碼。由于數(shù)組里面的數(shù)據(jù)是十進制數(shù)據(jù),除去一些特定特殊的標記位后,把表示數(shù)據(jù)部分的十進制數(shù)轉(zhuǎn)換為二進制比特序列。當獲得二進制比特序列以后,將二進制比特序列按照一定的長度分割,查找存有符號與比特序列映射關系的碼表,映射成相應的字符,還原信息。 圖7 基于QR碼識別的可見光反向通信 在可見光通信系統(tǒng)中,一般都是采用單向的信息傳輸。而已經(jīng)實現(xiàn)的可見光雙向通信系統(tǒng)中,通常使用可見光脈沖作為上行鏈路,IR或者Wi-Fi技術作為下行鏈路實現(xiàn)數(shù)據(jù)的流通。基于可見光近場通信,本文采取掃描二維碼的方式實現(xiàn)下行鏈路的數(shù)據(jù)傳輸,如圖7所示。在最近的從屏幕到攝像頭的通信技術研究中,已經(jīng)實現(xiàn)了將信息編碼隱藏在屏幕內(nèi)容中,從而可以在不影響屏幕正常使用的情況下進行通信[23]。 移動設備的功耗會隨屏幕亮度增加而增大,這是由液晶面板的顯示機理所決定的,背光模塊決定了屏幕的功耗,而背光模塊的耗電量取決于屏幕亮度。所以亮度增大,功耗也隨之增加[24]。在市場上其他的一些應用生成二維碼提供掃描的時候,由于缺乏反饋機制,無法將移動設備的屏幕調(diào)至適合的亮度,大部分應用直接將屏幕調(diào)至最亮的狀態(tài)來保證掃碼的成功率,但這樣會大幅增加移動設備的功耗。針對能耗問題,本文設計了一種自適應調(diào)節(jié)屏幕亮度的掃碼機制,下行鏈路接收端在掃描二維碼時可以根據(jù)掃碼情況動態(tài)調(diào)節(jié)下行鏈路發(fā)送端的屏幕亮度到達滿足當前通信環(huán)境的最佳屏幕亮度。這樣便可無需使屏幕一直保持在最亮狀態(tài),從而有效地降低了移動設備的功耗并保證了二維碼識別率,如圖8所示。 圖8 掃碼自適應流程圖 基于Android操作系統(tǒng),我們設計了相應的近場可見光系統(tǒng)。在該系統(tǒng)中,選用的移動設備需要具備閃光燈、攝像頭、環(huán)境光傳感器等硬件設備。為此我們使用了兩臺量產(chǎn)型移動設備:小米XiaoMi Redmi 3X,Android版本6.0.1和中興ZTE BA601,Android版本5.1進行實驗。 首先,將一臺移動設備設置為上行鏈路發(fā)送端,并設定調(diào)制方式和單位脈沖寬度,根據(jù)設定的調(diào)制方式來編碼用戶輸入的信息,然后通過閃光燈發(fā)送信息。將另一臺移動設備設置為上行鏈路接收端,選擇與上行鏈路發(fā)送端相同的調(diào)制方式和單位脈沖寬度,然后通過移動設備自帶的環(huán)境光傳感器接收光線強度值的變化來解碼信息,之后根據(jù)要發(fā)送的信息繪制成二維碼并顯示在屏幕上,上行鏈路發(fā)送端通過攝像頭掃描識別二維碼來得到反饋信息。之后,上行鏈路發(fā)送端繼續(xù)發(fā)送用戶輸入的信息,實現(xiàn)可見光的雙向通信。完成一次雙向通信大約需要8 s左右。如圖9所示,圖9(a)為可見光發(fā)送數(shù)據(jù),使用可見光通信作為上行鏈路。圖9(b)為QR碼識別,作為雙向可見光通信的下行鏈路。由于上、下行鏈路采用不同的通信方式,我們需要將上、下行鏈路分開進行實驗。 圖9 可見光雙向通信模塊 在環(huán)境光傳感器精度很高,延遲很低的條件下,上行鏈路接收端可以根據(jù)接收到的起始符來判斷上行鏈路發(fā)送端采用的單位脈沖寬度。但由于量產(chǎn)型移動設備中的環(huán)境光傳感器被優(yōu)化的重點是動態(tài)范圍,而不是響應速度[25]。所以為了避免誤差,在實驗中我們需要在上行鏈路接收端也設置單位脈沖寬度的大小。 本文在不同的單位脈沖寬度上對四種調(diào)制檢測了誤碼率,為了避免其他光線對可見光近場通信產(chǎn)生影響,我們把實驗設置在黑暗條件下,實驗結(jié)果如圖10所示。 圖10 不同調(diào)制下脈沖寬度對誤碼率的影響 從圖10中可以看出,在單位脈沖寬度大于等于65 ms時,四種調(diào)制方法的誤碼率相差不大,且可以保證數(shù)據(jù)的正確傳輸。由于PIM調(diào)制是由無脈沖狀態(tài)攜帶數(shù)據(jù)信息,起分隔作用的光脈沖時間間隔可取最小可分辨的固定值。不同大小的脈寬攜帶不同的數(shù)據(jù),1tb表示比特數(shù)據(jù)“0”,3tb表示比特數(shù)據(jù)“1”。當單位脈沖寬度較小時,傳輸比特數(shù)據(jù)“0”表示的1tb無脈沖狀態(tài)的脈寬在上行鏈路接收端有可能檢測不到,導致出現(xiàn)漏碼。但在PWM調(diào)制中,它是由光脈沖狀態(tài)攜帶數(shù)據(jù)信息,起分隔作用的無脈沖時間間隔可取最小可分辨的固定值。由于量產(chǎn)型移動設備上的環(huán)境光傳感器對光脈沖的檢測比對無脈沖的檢測敏感,所以在本實驗設置的條件中基本上不會出現(xiàn)檢測不到光脈沖的情況。導致PWM調(diào)制的誤碼率最高在0.5左右,而PIM調(diào)制由于出現(xiàn)漏碼情況,誤碼率最高可接近于1。在PWM和PIM調(diào)制中,可將上行鏈路接收端檢測到的時間間隔進行預處理,大于2tb的解碼為“1”,小于2tb的解碼為“0”,在一定程度上提高了解碼的準確率。而在DH-PIM和STM調(diào)制中,時隙的大小不止是1tb或3tb,是根據(jù)四位碼表示的數(shù)字大小來調(diào)制出不同大小的時隙,無法對檢測到的時隙進行預處理,導致它們的誤碼率最高也接近于1。 圖11 不同調(diào)制下通信距離對誤碼率的影響 在上行鏈路中,為了探究通信距離對可見光通信誤碼率的影響,本文在黑暗條件下檢測了不同通信距離下四種調(diào)制的誤碼率。實驗結(jié)果如圖11所示。從圖11中可看出,當通信距離小于等于14 cm時,四種調(diào)制均可實現(xiàn)無誤傳輸,當超過14 cm后,DH-PIM和STM兩種調(diào)制開始出現(xiàn)誤碼的情況,這同樣是由DH-PIM和STM兩種調(diào)制無法對檢測到的時隙進行預處理導致的,在傳輸距離超過14 cm時光照強度較低,檢測到的時隙不精準,導致解碼結(jié)果出現(xiàn)誤碼情況。當通信距離超過24 cm時,由于可見光的快速衰減的特性,上行鏈路發(fā)送端的光信號迅速衰減,上行鏈路接收端的環(huán)境光傳感器接收到的信號微弱,四種調(diào)制的誤碼率迅速升高。 在下行鏈路中,掃碼所用的時間與距離有關,當距離小于5 cm的時候,由于距離太近,攝像頭無法掃描到完整的二維碼。當距離大于14 cm時,由于隨著距離增大,上行鏈路接收端接收到的光照強度逐漸變?nèi)?從而導致解碼出現(xiàn)誤碼情況。實驗結(jié)果如圖12所示。 圖12 傳輸距離對掃碼響應時間的影響 在上行鏈路中,為了探究設備間夾角對可見光通信誤碼率的影響,在設備間通信距離為5 cm的條件下,設備間夾角從0°不斷調(diào)大并檢測誤碼率。實驗結(jié)果如圖13所示。實驗結(jié)果表明,在設備間夾角為60°之前,近距離可見光傳輸?shù)恼`碼率很低,四種調(diào)制結(jié)果相似。在設備間夾角超過60°時,由于設備間夾角過大,導致上行鏈路接收端檢測的光線強度太弱,幾乎檢測不到光照強度的變化,導致通信中斷,誤碼率大幅上升。四種調(diào)制的可見光通信誤碼率受角度影響基本一致。 圖13 不同調(diào)制下設備間夾角對誤碼率的影響 在下行鏈路中,掃碼的響應時間與設備間夾角也有關系,如圖14所示。通信距離設置為10 cm時,隨著設備間夾角的增大,掃碼響應時間也逐漸增加,由于本實驗中采用的量產(chǎn)型移動設備的攝像頭性能較低,當設備間夾角大于15°時,會出現(xiàn)無法識讀二維碼的情況。 圖14 設備間夾角對掃碼響應時間的影響 采用反饋式亮度控制方法和直接將屏幕調(diào)至最亮的能耗比較如圖15所示。當屏幕調(diào)至最亮狀態(tài)時,累積用電量與時間呈線性關系。采用反饋式亮度控制方法時,由于屏幕是根據(jù)接收到的反饋信息控制亮度逐漸增亮的,屏幕并不是一直保持在最亮狀態(tài),因此采用反饋式亮度控制方法能有效降低能耗。 圖15 反饋式屏幕亮度控制方法與屏幕調(diào)至 最亮狀態(tài)的耗電量比較 本文將可見光通信應用于現(xiàn)有量產(chǎn)型移動設備,并提出了一種基于可見光的近場混合通信方法。即在上下行鏈路中采用不同的傳感器模塊。針對上行鏈路,我們將閃光燈和環(huán)境光傳感器作為信號發(fā)射/接收器,并在現(xiàn)有可見光DH-PIM調(diào)制的基礎上提出了狀態(tài)轉(zhuǎn)化調(diào)制(STM)。實驗結(jié)果表明STM調(diào)制與PIM調(diào)制和PWM調(diào)制相比,STM調(diào)制在吞吐率和能耗上占較大優(yōu)勢。在傳輸序列有重復的情況下,STM調(diào)制的吞吐率亦優(yōu)于DH-PIM調(diào)制。針對下行鏈路,我們通過掃描二維碼傳輸信息,并提出了一種反饋式屏幕亮度控制方法,有效降低了屏幕的能量開銷。最終,我們基于量產(chǎn)的Android手機,設計了相應的近場通信系統(tǒng),并在真實環(huán)境中驗證了本文所設計的通信系統(tǒng)的可行性。 在未來的工作中,我們將繼續(xù)對調(diào)制編碼展開研究,并引入合適的糾錯方法,進一步降低環(huán)境背景光噪聲帶來的影響,提高傳輸速率。3.2 STM的解碼
4 下行鏈路:反饋式屏幕亮度控制方法
5 實驗與實驗結(jié)果分析
5.1 實驗場景
5.2 上行鏈路:脈沖寬度的影響
5.3 上/下行鏈路:通信距離的影響
5.4 上/下行鏈路:設備間夾角的影響
5.5 能耗問題
6 總結(jié)