祝云凱,李成林,單加響,邱杰凡
(1.浙江杭佳科技發展有限公司,浙江 杭州 310015;(2.浙江工業大學 計算機科學與技術學院,浙江 杭州 310014)
無線傳感器網絡中的傳感器節點通過無線的方式進行通信,對節點的更新修復通常依賴于已構建的無線網絡。然而,無線網絡往往存在很大的安全隱患。由于無線網絡通過電磁波在空中傳輸數據,只要在該網絡覆蓋區域內都有可能被截取竊聽數據,因此,要將數據只發送給指定接收者顯然是不可能的。在傳輸調試信息時,存在泄露節點內部敏感信息的可能。一旦傳感器節點內部敏感信息發生泄漏,可能會影響到整個網絡系統的性能與安全。同時,由于節點通常被部署到難以接觸的地方,無法采用有線連接的方式接收節點的調試信息。
以在故宮博物館部署的無線傳感器網絡監測系統為例,玻璃展柜中的節點需要封閉至少三個月才能回收維護[1]。一旦在封閉期間節點需要更新修復,為了保證節點內部敏感信息不泄露,需要尋求一種可代替的非接觸式調試信息傳輸方案。近年來,可見光通信技術(Visible Light Communication,VLC)不斷發展,可見光通信以光波作為信息的載體,可進行定向傳輸且覆蓋范圍有限可控,具有不易被截取竊聽的特性,為傳感器節點調試信息的安全傳輸提供了可靠的通信環境。如果采用可見光通信進行調試信息傳輸,不僅在無線網絡出現故障時可成為替代的調試交互手段,還能減輕網絡整體的帶寬壓力[2]。
隨著硬件資源豐富的移動終端(如智能手機、平板電腦等)的普及,越來越多的移動終端配備了豐富的傳感器元件,使得移動設備具備了潛在進行可見光通信的能力。傳統意義的可見光通信是利用在接收端的光電檢測器(PD)接收信號,這對光電檢測器的精度和靈敏度要求較高。然而,量產型移動設備上配備的光電檢測器精度較低,無法有效感知到傳感器節點上LED發送的頻閃信息。作為可見光通信技術的一種,光學相機通信(Optical Camera Communication,OCC)同樣具有定向通信的隱蔽性。移動設備搭載的CMOS傳感器也具有將光信號接收并轉換成電信號的功能。因此,可采用光學相機采集光信號,實現信息的傳輸。同時,許多研究者也開始研究光學相機在可見光通信中的應用。例如文獻[3]將數據信息編碼后由個人電腦鍵盤上的LED指示燈發送,并采用光學相機進行拍照捕獲頻閃信息進行解碼。張民[4]根據CMOS傳感器卷簾快門的特性,驗證了基于手機攝像頭進行光學相機通信的可行性。
我們通過挖掘移動終端和傳感器節點現有可見光模塊的潛能,設計了一種調試信息傳輸方案。如圖1所示,在對封閉在博物館玻璃展柜中的傳感器節點,采用節點端的LED作為信號發送器,移動設備端的光學相機作為信號接收器來接收傳感器節點的調試信息。實際的硬件交互圖如圖2所示。

圖1 場景示意圖

圖2 系統硬件交互圖
在調試信息的傳輸過程中,基于光學相機的卷簾快門工作機制可以有效提高數據傳輸效率,然而由于可見光具有較高的指向性,輕微的晃動也可能對數據傳輸造成影響。此外,由于光學相機以圖像幀為單位完成拍攝,而節點LED發送一幀數據所用時長需要與光學相機的曝光時間保持一致才能成功傳輸調試信息。為此,進一步提出一種面向卷簾快門的反饋式幀同步方案。該同步方案由移動設備與節點通信協同完成信號的同步傳輸與接收。對采集到的圖像做實時檢測,當數據發生丟失時,移動設備端發送反饋信息,重傳丟失數據并再次同步,以此來保證數據傳輸質量。
目前市場上大多數移動設備配備的光學相機采用的是卷簾快門工作機制,卷簾快門工作機制能有效捕獲來自LED的頻閃信息。如圖3所示,卷簾快門不同于全局快門,它在成像的過程中是以逐行曝光的方式采集光信息。由于不同像素行的開始曝光時間點不同,因此可以利用不同像素行的曝光時間差來記錄頻閃序列。
因此,在卷簾快門逐行曝光的過程中,如果傳感器節點上的LED快速閃爍切換狀態,則最終成像的結果如圖4所示為明暗相間的條紋圖片。

圖3 卷簾快門工作機制

圖4 卷簾快門采集光信息序列示意圖
采集到的條紋圖片通過圖片處理進行解碼,由于在節點端采用的是OOK調制方式,根據明暗條紋的寬度即可解碼出數據信息。但是圖片中的一些過渡帶會影響到解碼的判別。由圖4可知,過渡帶越窄對解碼判別的影響就越小。通過減少相機的曝光時間,可以有效降低過渡帶的寬度。在當前Android9.0版本中,智能手機相機最新API接口為Camera 2。該接口可手動更改或重新配置相機曝光時間。實驗結果如圖5所示。

圖5 不同曝光時間條件下的成像比較
在光學相機通信中,同步一直是最重要的問題之一。首先,光學相機的采樣是隨機進行的。它可能在發送信號的任何符號期間發生,因此任何時候都有可能丟失任何符號。其次,幀采樣的間隔是變化的,它取決于圖像傳感器和光學通道的特性[5]。當光學相機采集節點LED頻閃信息時,由于發送端和接收端沒有統一的開啟時間以及光學相機幀率不穩定,會導致數據符號的丟失。
為此,提出了一種面向卷簾快門的反饋式幀同步方案。在通信過程中,取綠燈作為檢測同步狀態的指示燈,黃燈和紅燈在圖像的幀持續時間內各自連續發送一幀數據幀,保證一張圖像中的黃燈和紅燈都能成功接收一幀的數據。該方案包括兩個部分:
(1)傳輸開始階段的起始同步;
(2)傳輸中斷后的再次同步。
同時,為了區分不同的數據幀,在每幀數據前面加入一段高頻脈沖作為幀頭。數據幀結構如表1所示。

表1 數據幀結構
起始同步的整個過程如圖6所示。在起始階段,有很多準備工作要做,當節點處于就緒狀態時,三個LED常亮,移動設備進行拍照采集并根據圖像處理的結果確定同步參數的值,同步參數如圖7所示。移動設備根據LED燈在圖像中的位置計算出有效區域寬度,記作X。之后移動設備會將該參數編碼發送到節點端,其中編碼序列中的高脈沖對應bit“1”,低脈沖表示bit“0”。將有效區域寬度編碼發送到節點端后,節點端根據該參數,可計算出適合于有效區域寬度的LED發射頻率。

圖6 起始同步示意圖

圖7 傳輸參數示意圖
由于移動設備上的光學相機幀率通常在30 fps左右,移動設備捕獲一幀圖像的時間tp≈33 ms,并且節點端單個LED需要在圖像有效區域范圍內完成一幀的數據幀傳輸,需要保證該指示燈在有效區域至少能捕獲兩組數據幀,因此根據幀長和有效區域曝光時間可以確定LED的發射頻率。
在起始同步之后,節點LED在每幀圖像幀持續時間內一直重復發送對應的數據幀。但是由于幀率的不穩定,會導致數據條紋在圖像幀中發生偏移,當偏移量超過一幀圖像幀的持續時間時,同一幀圖像幀中的單個LED可能包含相鄰的兩幀數據幀。因此采用綠燈作為同步狀態的檢測,每當發送完一幀數據幀時,綠燈會發送一段低脈沖分隔兩幀相鄰的數據幀,當圖像幀中的綠燈檢測到了暗條紋,則說明該圖像幀中的有效區域采集到的數據包含兩幀相鄰的數據幀,同步已經失效,需要重新同步。
移動設備端將發生同步失效的圖像序號通過閃光燈反饋到節點端,當節點端接收解碼后,從該序號表示的數據幀重新同步發送。
本研究將可見光通信應用于現有的移動設備和傳感器節點,設計并實現了一個基于光學相機通信的傳感器節點調試信息安全傳輸方案。針對通用CMOS光學相機具有幀率不穩定的特點,還設計了幀同步方案以確保快速可靠地傳輸調試信息。最后,在智能手機和通用節點上,驗證了本文設計的通信方案在實際環境中的可行性。