楊世權(quán) 張謙述 胡 玥
(西華師范大學(xué)電子信息工程學(xué)院, 四川 南充 637000)
GPS在室外的定位效果較好,在室內(nèi)則由于衛(wèi)星信號受墻壁等障礙物的阻擋而衰減,定位精度較低。因此,實現(xiàn)對室內(nèi)的精準(zhǔn)定位是亟待解決的難題。LED可見光具有可用頻帶寬、不受電磁場干擾、設(shè)備搭建容易、誤碼率低等優(yōu)點,并且LED響應(yīng)快,可以高頻調(diào)制,又是綠色能源,使用范圍廣泛,因此,基于LED可見光的定位技術(shù)將成為提高室內(nèi)定位精度的重要選擇。
在這方面,國內(nèi)外已經(jīng)有許多研究成果。文獻(xiàn)[1]提出了一種基于圖像傳感器的可見光定位系統(tǒng),可以測量目標(biāo)端的位置。不過,圖像處理技術(shù)和算法較復(fù)雜。文獻(xiàn)[2]提出了一種基于TDOA的室內(nèi)可見光定位方法,通過測量接收不同信號的時間差來實現(xiàn)定位。但參考節(jié)點之間需要進(jìn)行時間同步,對硬件設(shè)備要求較高。文獻(xiàn)[3]提出的基于采集指紋的定位算法,需要采集大量指紋信息,工作量大。文獻(xiàn)[4]提出利用OFDM技術(shù),基于三角形定位算法來實現(xiàn)定位,證實了可見光實現(xiàn)定位的可行性。文獻(xiàn)[5]中介紹的選用高速相機接收信號,基于萊文伯格-馬夸特(LM)算法實現(xiàn)定位的方法,最大誤差小于10 cm。但此方法對相機的性能要求高,而且誤差仍然較大。文獻(xiàn)[6]提出的基于 CDMA調(diào)制的室內(nèi)可見光定位技術(shù),可克服光源間的干擾,但編碼過程較復(fù)雜。文獻(xiàn)[7]提出了基于視覺信息的室內(nèi)可見光定位方法,但沒有考慮背景光及噪聲的影響。文獻(xiàn)[8]提出了改進(jìn)的加權(quán)三邊定位算法,但沒有進(jìn)行測試驗證。文獻(xiàn)[9]提出了一種利用室內(nèi)照明LED發(fā)光強度實現(xiàn)室內(nèi)可見光定位的方法,并對定位設(shè)計方案進(jìn)行了測試,但其測試空間(80 cm×70 cm×40 cm)較小。
本次研究,通過借鑒有關(guān)研究成果,提出一種利用脈寬對LED光源的ID進(jìn)行編碼傳輸、基于RSSI來估測收發(fā)端投影距離的三燈定位方法。
基于RSSI測距,即根據(jù)接收信號強弱指標(biāo)來估測收發(fā)兩端投影距離。理論上,光信號由發(fā)送端向外傳播的過程中,其強度是逐漸變小的。因此,可以通過測量接收端光電壓值與收發(fā)端的投影距離數(shù)據(jù),用MATLAB擬合出光源的測距函數(shù)模型。依據(jù)該測距函數(shù)模型,只要獲得接收端接收的光電壓值,即可求出收發(fā)兩端對應(yīng)的投影距離。擬合測距函數(shù)如式(1)所示。
(1)
式中:d—— 收發(fā)兩端對應(yīng)的投影距離,cm;
H—— 光源的高度,cm;
U(0,0) —— 光源中心光電壓,mV;
U(x,y) —— 待測點的光電壓,mV。
假設(shè):給定3個發(fā)送端的底面投影坐標(biāo)為O1(a1,b1)、O2(a2,b2)和O3(a3,b3);接收端P到投影點的距離分別為d1、d2、d3,可根據(jù)式(1)獲得。由此,建立3個底面投影圓的方程組,方程組的解即為接收端的位置坐標(biāo)。方程組為:
(2)
室內(nèi)定位模型如圖1所示。設(shè)待求點P的坐標(biāo)為(x,y)。解方程組(2),可求出待測點的坐標(biāo)。
圖1 室內(nèi)定位模型
室內(nèi)可見光定位系統(tǒng)主要由發(fā)送端和接收端兩
部分組成。系統(tǒng)采用STM32F4單片機作為控制芯片。在發(fā)送端,首先單片機對3個LED的ID進(jìn)行脈寬編碼,然后經(jīng)時分復(fù)用發(fā)送給驅(qū)動電路放大,驅(qū)動LED發(fā)送光信號。在接收端,探測器把接收的光信號送給放大電路進(jìn)行放大,然后送至單片機AD端口進(jìn)行解碼與測壓;再將解碼的坐標(biāo)和測壓轉(zhuǎn)化后的距離代入式(2),求出待測點坐標(biāo),并用LCD顯示出來。系統(tǒng)總體框架如圖2所示。
2.2.1 發(fā)送端電路
發(fā)送端選用STM32F407作為處理芯片。它為 32位ARM處理器,最高頻率為72 MHz,閃存1 Mkb,SRAM為192 kb。內(nèi)部定時器共有14個,每個定時器最多4個用于輸入捕獲輸出比較PWM或脈沖計數(shù)通道。該芯片優(yōu)勢突出,用于系統(tǒng)的脈寬調(diào)制和后續(xù)接收端對脈寬的捕獲,能夠滿足兩端需求。
圖2 室內(nèi)可見光定位系統(tǒng)框架
因為LED正常工作需150 mA電流驅(qū)動,故發(fā)送端選用NPN三極管來放大經(jīng)單片機編碼的輸出信號。發(fā)送端電路原理如圖3所示。
圖3 發(fā)送端電路原理
2.2.2 發(fā)送端程序
發(fā)送端程序設(shè)計流程為:開機啟動,進(jìn)行初始化配置,選用定時器3的1、2、3通道,設(shè)置好psc(時鐘預(yù)分頻數(shù))。然后,通過改變arr(自動重裝值),產(chǎn)生3路不同的PWM波。第一路PWM波輸出后,對LED1進(jìn)行控制。接著時分復(fù)用,依次輸出其余兩路PWM波形,分別對LED2、LED3進(jìn)行控制[10]。3路PWM波輸出完畢后,進(jìn)入下一輪循環(huán)。發(fā)送端程序流程如圖4所示。
2.3.1 接收端電路
圖4 發(fā)送端程序流程
圖5 接收端電路原理圖
2.3.2 接收端程序
接收端程序設(shè)計流程為:首先開機啟動,進(jìn)行程序初始化。接著開啟輸入捕獲,同步后,檢測燈的ID。獲得檢測結(jié)果之后,開啟AD轉(zhuǎn)換,讀取對應(yīng)燈的光電壓值,代入測距函數(shù)模型,求出收發(fā)兩端距離。3個燈的距離都求出后,代入三邊定位算法方程,求出待測點位置坐標(biāo),并在LCD上進(jìn)行顯示。接收端程序流程如圖6所示。
考慮到調(diào)制的信號在空間傳輸中失真度要低、抗干擾能力要強、易實現(xiàn)等要求,本系統(tǒng)采用脈寬調(diào)制方式。脈寬調(diào)制(PWM)原理:通過控制電路開關(guān)器件的通斷,輸出一系列幅值相等的脈沖;通過對各脈沖的寬度按一定規(guī)則進(jìn)行調(diào)制,改變輸出電壓和頻率[11]。與其他調(diào)制技術(shù)相比,PWM技術(shù)易于用脈寬實現(xiàn)編碼,在無線信道中傳輸較穩(wěn)定,同時易于實現(xiàn)解碼。
圖6 接收端程序流程
為了使接收到的數(shù)據(jù)準(zhǔn)確,本系統(tǒng)設(shè)計的數(shù)據(jù)幀由6位構(gòu)成,脈寬調(diào)制的幀格式如圖7所示。
圖7 脈寬調(diào)制的幀格式
幀中第一位為同步位,第二位為ID位。識別不同的LED光源,通過不同的脈寬對應(yīng)不同的ID號來實現(xiàn)。第三位為ID反碼,校驗前面接收到的ID是否正確。第四、五位為測壓區(qū),根據(jù)電壓幅值高低代入測距函數(shù)模型,估測收發(fā)端距離。第六位為停止位,用低電平表示,用來分隔下一個數(shù)據(jù)幀。脈寬調(diào)制的軟件實現(xiàn)過程是:利用單片機的定時器3的任意3個通道,產(chǎn)生3路不同的PWM波形,在設(shè)置好psc(時鐘預(yù)分頻數(shù))后,通過改變arr(自動重裝值)來控制占空比,最后用三個IO口輸出。
解碼采用STM32的TIM5輸入捕獲來實現(xiàn)。具體配置過程為:先進(jìn)行時鐘的初始化,將PA0復(fù)用為TIM5,定時器采用向上計數(shù)、上升沿捕獲;再設(shè)置psc、arr;最后開啟定時器,使能中斷,搶占優(yōu)先級設(shè)為0級。當(dāng)碼型的上升沿到來時,開啟定時器5,計量時間即脈寬;下降沿來臨時,關(guān)閉計時。脈寬若與同步碼脈寬一致,則表示已同步。繼續(xù)捕獲下一脈沖,進(jìn)行ID位識別,匹配LED光源。接著捕獲下一脈沖,進(jìn)行ID反碼校驗。校驗成功,則表示ID識別正確,調(diào)用RAM中預(yù)先存儲的位置坐標(biāo)信息。接著關(guān)閉定時器,開啟AD轉(zhuǎn)換,讀取脈沖電壓平均值,代入測距函數(shù)模型測距(即收發(fā)端的投影距離)。
實驗測試場景如圖8所示。發(fā)送端由單片機、驅(qū)動電路、LED組成,接收端由光電管、放大電路、單片機、LCD等組成。
圖8 實驗測試場景
MATLAB畫出光源的測距函數(shù)模型,如圖9所示。
從圖9可看出,實測電壓點落在擬合的測距函數(shù)曲線上及其附近,說明兩者之間誤差小,測距函數(shù)擬合效果好。因此,可以用擬合的測距函數(shù)式(1)來估測收發(fā)兩端的投影距離。
3路編碼信源經(jīng)探測器接收后的輸出波形,如圖10所示。從圖中可看出,3路信號在不同的時間段循環(huán)發(fā)送、互不干擾,放大電路工作正常,信號輸出穩(wěn)定,頻率為1 kHz。
圖9 測距函數(shù)模型
已知探測器測量精度為5 cm。搭建80 cm×80 cm×80 cm的測試空間(見圖8),將3個燈的位置按等腰三角形固定:LED1(-35,30,80),LED2(35,30,80),LED3(0,-30,80)。以底面的中心為坐標(biāo)原點,建立三維坐標(biāo)系。在底面選取90個點進(jìn)行實測。實驗環(huán)境的最大信噪比為23 dB,最小信噪比為14 dB,滿足通信要求。根據(jù)方程組式(2)估測目標(biāo)點位置,并用MATLAB將每個測量點的誤差用高度表示出來。實測數(shù)據(jù)中,最大誤差為3.7 cm,最小誤差為1.42 cm,平均誤差為3.38 cm,均方差為1.57 cm。三燈底面投影區(qū)域內(nèi)實測定位誤差分布,如圖11所示。從圖可知,靠近三角形中心的位置定位精度較高,遠(yuǎn)離三角形中心的位置定位精度較低。通過基于PWM技術(shù)的三燈定位算法,可以把誤差由5 cm降為3.7 cm。
圖10 3路信源輸出波形
圖11 實測定位誤差分布
在現(xiàn)實的三燈定位系統(tǒng)中,光信號在空間傳輸過程中易受外界環(huán)境干擾,從而影響定位精度。為解決這個問題,我們提出了脈寬編碼的解決方法。用此方法,可有效抵抗環(huán)境干擾,光信號傳輸距離遠(yuǎn)、失真度小,而且易于后續(xù)解碼?;赗SSI技術(shù),采集收發(fā)兩端不同距離的光電壓數(shù)據(jù),擬合出收發(fā)兩端距離與光電壓的關(guān)系函數(shù)模型,用來計算測量距離。在80 cm×80 cm×80 cm定位空間中進(jìn)行實驗測試,實測定位誤差為3.7 cm,表明此方法是可行的。本次研究,只對不同LED光源的ID進(jìn)行了編碼傳輸;對燈的位置坐標(biāo)進(jìn)行編碼傳輸是下一步研究的方向。