,
(中國(guó)民用航空飛行學(xué)院 空中交通管理學(xué)院,廣漢 618307)
所謂的遠(yuǎn)程塔臺(tái)技術(shù)[1]是指為偏遠(yuǎn)地區(qū)的小型機(jī)場(chǎng)提供遠(yuǎn)程管制服務(wù)的技術(shù)。管制員并不能通過(guò)所在塔臺(tái)的窗口直接觀察到管制地區(qū)機(jī)場(chǎng)內(nèi)的飛機(jī),而是通過(guò)將現(xiàn)場(chǎng)的實(shí)時(shí)視頻信號(hào)傳輸?shù)竭h(yuǎn)方管制室來(lái)實(shí)現(xiàn)對(duì)飛機(jī)的遠(yuǎn)程指揮[2]。在管制員實(shí)施管制服務(wù)的整個(gè)過(guò)程當(dāng)中,工作人員完全可以像在一般塔臺(tái)指揮飛機(jī)一樣來(lái)實(shí)施管制服務(wù),但是在管制員遠(yuǎn)程指揮飛機(jī)的整個(gè)過(guò)程中,對(duì)于駕駛員來(lái)說(shuō)是不可見(jiàn)并且是完全察覺(jué)不到的。管制員可以在管制室對(duì)偏遠(yuǎn)地區(qū)機(jī)場(chǎng)內(nèi)的各種傳感器、告警系統(tǒng)、燈光系統(tǒng)以及相關(guān)的空中交通管理與監(jiān)視設(shè)備進(jìn)行操控。管制員在進(jìn)行整個(gè)指揮的過(guò)程中,所有的視頻信息及圖像信息都會(huì)被完整地記錄并保存下來(lái),這些信息數(shù)據(jù)可以用于以后的分析。
在實(shí)驗(yàn)室中以樹(shù)莓派為載體,來(lái)進(jìn)行遠(yuǎn)程塔臺(tái)技術(shù)模擬實(shí)驗(yàn)平臺(tái)的搭建。采用樹(shù)莓派Raspberry Pi 3B整合自編程序搭建遠(yuǎn)程終端,直接將信息采集設(shè)備收集的信息整理并傳輸,該種方法效率較高,且開(kāi)發(fā)板體積小巧,操作便利,搭建簡(jiǎn)單,整體性強(qiáng),能較好地根據(jù)即將進(jìn)行的多種測(cè)試進(jìn)行調(diào)整。采用路由器創(chuàng)造無(wú)線網(wǎng)環(huán)境,使樹(shù)莓派Raspberry Pi 3B和用于遠(yuǎn)程控制的筆記本電腦具有同一IP,通過(guò)遠(yuǎn)程桌面來(lái)控制樹(shù)莓派,并利用其進(jìn)行數(shù)據(jù)傳輸。
局域網(wǎng)環(huán)境下數(shù)據(jù)傳輸快,延遲低,且有效解決了有線數(shù)據(jù)傳輸?shù)牟季€復(fù)雜和成本問(wèn)題。所搭建好的實(shí)驗(yàn)平臺(tái)如圖1所示,相關(guān)平臺(tái)原理圖如圖2所示,Linux是一種開(kāi)源的操作系統(tǒng),獲得模塊和軟件的途徑多且便利,有利于不同功能的整合,并采用OpenCV、VLC等組件實(shí)施視頻采集和傳輸。Python語(yǔ)言具有豐富和強(qiáng)大的庫(kù),能夠把用其它語(yǔ)言制作的各種模塊很輕松地聯(lián)結(jié)在一起,利用Python的相關(guān)編程設(shè)計(jì),實(shí)現(xiàn)DHT11模塊對(duì)溫濕度的采集并傳輸,通過(guò)控制RTL天線并運(yùn)行DUMP1090模塊實(shí)現(xiàn)對(duì)ADS-B信號(hào)的獲取。
圖1 實(shí)驗(yàn)平臺(tái)的搭建
圖2 平臺(tái)原理圖
樹(shù)莓派[3](Raspberry Pi) 是2012 年由英國(guó)樹(shù)莓派基金會(huì)發(fā)行的一款卡片式計(jì)算機(jī),本次實(shí)驗(yàn)所用樹(shù)莓派如圖3所示,它采用了 ARM架構(gòu)處理器和 Linux 操作系統(tǒng),在只有信用卡大小、購(gòu)買(mǎi)成本只需200 元左右的硬件電路板上實(shí)現(xiàn)了個(gè)人計(jì)算機(jī)的全部功能。樹(shù)莓派接口豐富,可擴(kuò)展性強(qiáng),有著豐富的開(kāi)源軟件資源,與傳統(tǒng)的嵌入式開(kāi)發(fā)平臺(tái)相比,在速度、集成度、價(jià)格和效率上有著明顯的優(yōu)勢(shì),因而上市以來(lái)在嵌入式開(kāi)發(fā)領(lǐng)域發(fā)展迅速。本文將以樹(shù)莓派Raspberry Pi 3B型機(jī)作為開(kāi)發(fā)機(jī),它搭載了1.2 GHz的64位4核處理器,內(nèi)裝802.11 b/g/n無(wú)線網(wǎng)卡和藍(lán)牙4.1適配器,最大驅(qū)動(dòng)電流增為2.5 A。在接口方面,樹(shù)莓派擁有15針頭MIP相機(jī)(CSI)界面,可被樹(shù)莓派相機(jī)(無(wú)紅外線版)使用;4個(gè)USB2.0規(guī)范接口;MicroSD卡槽;17個(gè)GPIO及HAT 規(guī)格鋪設(shè)[4]。
圖3 實(shí)驗(yàn)所用的樹(shù)莓派
DHT11是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器[5]。本次實(shí)驗(yàn)所用的DHT11如圖4所示, 其精度濕度為±5%RH, 溫度為±2 ℃,量程濕度為20~90%RH, 溫度為0~50 ℃。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性和卓越的長(zhǎng)期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、響應(yīng)快、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式存在OTP內(nèi)存中,傳感器內(nèi)部在檢測(cè)信號(hào)的處理過(guò)程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口使系統(tǒng)集成變得簡(jiǎn)易快捷。超小的體積、極低的功耗,使其成為該類(lèi)應(yīng)用中在苛刻應(yīng)用場(chǎng)合的最佳選擇。產(chǎn)品為4針單排引腳封裝,連接方便。
DHT11模塊與樹(shù)莓派引腳的連接說(shuō)明為(有3線和4線制兩種,本文用的是3線制):①VCC 外接3.3~5 V;②GND 外接GND;③out 小板開(kāi)關(guān)數(shù)字量輸出接口,接樹(shù)莓派I/O口。
圖4 實(shí)驗(yàn)所用DHT11
DHT11與樹(shù)莓派連接圖如圖5所示。
圖5 DHT11與樹(shù)莓派相連接
本文所用的RTL天線采用R820T2 TUNER芯片取代R820T,其接收效果更好,靈敏度更高,支持SDR RTL1090接收ADS-B信號(hào)、978 MHz和1 090 MHz的脈沖信號(hào),支持DVB-T地面無(wú)線數(shù)字電視信號(hào)和DAB FM等無(wú)線信號(hào)。在視頻監(jiān)控方面,使用樹(shù)莓派的CSI接口攝像頭。
用樹(shù)莓派板子上的內(nèi)置Camera接口來(lái)獲取影像,通過(guò)網(wǎng)絡(luò)Streaming Protocol的方法將攝像機(jī)的影像傳到網(wǎng)絡(luò)上,用VLC軟件來(lái)實(shí)現(xiàn)遠(yuǎn)程監(jiān)控[6]。其命令如下:
$sudo apt-get update
$sudo apt-get upgrade #更新系統(tǒng)的安裝程序apt-get
$sudo raspi-config #選擇Enale Camera引導(dǎo)樹(shù)莓派的攝像機(jī)
$sudo apt-get install vlc #安裝vlc軟件
$raspivid -o - -t 0 -w 1024 -h 768 -fps 30 |cvlc -vvv stream:///dev/stdin --sout‘#standard{access=http,mux=ts,dst=:8160}’ :demux=h264 #執(zhí)行streaming,制作視頻流(參數(shù)介紹:w視頻寬度,h視頻高度,fps每秒傳輸幀數(shù),dst網(wǎng)絡(luò)的端口,demux視頻壓縮格式h264)
運(yùn)行raspivid,樹(shù)莓派的Teminal終端顯示如圖6所示,樹(shù)莓派開(kāi)始采集視頻流。在遠(yuǎn)程連接的筆記本電腦上通過(guò)VLC軟件,連接地址http://192.168.0.100:8160(本實(shí)驗(yàn)所用樹(shù)莓派IP為192.168.0.100),就能監(jiān)視樹(shù)莓派的實(shí)時(shí)影像,所監(jiān)視的飛機(jī)模型如圖7所示。
圖6 樹(shù)莓派Teminal終端顯示
圖7 遠(yuǎn)程監(jiān)視的畫(huà)面
3.2.1編程語(yǔ)言選用
Python語(yǔ)言具有豐富和強(qiáng)大的庫(kù),它常被昵稱為膠水語(yǔ)言,能夠把用其它語(yǔ)言制作的各種模塊很輕松地聯(lián)結(jié)在一起[7]。Python是純粹的自由軟件,語(yǔ)法簡(jiǎn)潔清晰。Python還可以交互模式運(yùn)行,比如主流操作系統(tǒng)Unix/Linux、Mac、Windows都可以直接在命令模式下直接運(yùn)行Python交互環(huán)境。直接下達(dá)操作指令即可實(shí)現(xiàn)交互操作。樹(shù)莓派Raspberry Pi的操作系統(tǒng)是Linux系統(tǒng),因此選用Python語(yǔ)言通過(guò)相應(yīng)的編程來(lái)調(diào)用DHT11模塊功能,獲取溫濕度數(shù)據(jù)。在樹(shù)莓派上安裝Python語(yǔ)言,輸入以下命令:
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install python2.7
編碼方式:PR庫(kù)有兩種方式,一種是bcm,另一種是wiringPi的方式,兩者的區(qū)別大致是bcm的pin的序號(hào)為0,1,3,...是與每一個(gè)GPIO引腳對(duì)應(yīng)的,不包含GND和電源之類(lèi)的在內(nèi),而wiringPi則是從電源開(kāi)始為0,然后按增序排。本文采用bcm方式,在Python的腳本中,應(yīng)在setmode函數(shù)里面制定編碼方式為bcm,所連樹(shù)莓派引腳為GPIO4,即channel=4,腳本編輯為:
channel=4
data=[]
j=0
GPIO.setmode(GPIO.BCM)
3.2.2DHT11模塊時(shí)序信號(hào)
DHT11模塊有兩個(gè)關(guān)鍵的時(shí)序信號(hào):開(kāi)始握手階段和數(shù)據(jù)發(fā)送階段。開(kāi)始握手階段:主機(jī)端GPIO發(fā)送開(kāi)始信號(hào)首先拉低至少18 ms,然后拉高20~40 μs,模式變?yōu)镮N等待信號(hào)輸入,DHT11等待主機(jī)端開(kāi)始信號(hào)(低電平)結(jié)束后,發(fā)送80 μs低電平響應(yīng)開(kāi)始信號(hào),然后DHT11拉高電平80 μs。握手完畢,如圖8所示。
數(shù)據(jù)發(fā)送階段:一次的濕度和溫度數(shù)據(jù),DHT11需要發(fā)送40位(0、1)數(shù)據(jù),每一位數(shù)據(jù)之前都以50 μs低電平開(kāi)始,隨后的高電平時(shí)序信號(hào),持續(xù)26~28 μs表示這一位是0,持續(xù)70μs表示這一位是1,然后繼續(xù)50 μs低電平,緊接著下一位的高電平開(kāi)始,如圖9所示。40位數(shù)據(jù)的組成=8位濕度整數(shù)部分+8位濕度小數(shù)部分(暫時(shí)沒(méi)用)+8位溫度整數(shù)部分+8位溫度小數(shù)部分(暫時(shí)沒(méi)用)+8位校驗(yàn)和。8位的順序都是高位先出,然后用移位相加的方式,將這8位轉(zhuǎn)換成整型數(shù)字。
圖8 開(kāi)始握手階段
圖9 數(shù)據(jù)發(fā)送階段
腳本編輯為:
while j < 40:
k = 0
whileGPIO.input(channel) == GPIO.LOW:
continue
whileGPIO.input(channel) == GPIO.HIGH:
k+=1
if k > 100:
break
if k < 8:
data.append(0)
else:
data.append(1)
計(jì)算濕度、溫度、校驗(yàn)和按照每8位轉(zhuǎn)換成一個(gè)十進(jìn)制數(shù)字,腳本編輯為:
fori in range(8):
humidity +=humidity_bit[i] * 2 ** (7-i)
humidity_point += humidity_point_bit[i] * 2 ** (7-i)
temperature +=temperature_bit[i] * 2 ** (7-i)
temperature_bit += temperature_point_bit[i] * 2 ** (7-i)
check +=check_bit[i] * 2 ** (7-i)
tmp = humidity + humidity_point + temperature + temperature_point
通過(guò)文本編輯器輸入以下程序,并保存成DHT11.py:
$nano DHT11.py
輸入完成后,通過(guò)Ctrl+O組合鍵存儲(chǔ)程序,Ctrl+X組合鍵離開(kāi)nano編輯器。輸入以下命令就能獲取當(dāng)前的溫度和濕度:
$sudo python dht11.py
若check值和tmp值不相等,就會(huì)輸出“wrong”,并輸出相應(yīng)的校驗(yàn)值,直到check=tmp,才會(huì)輸出溫濕度值,如圖10所示為測(cè)試幾次輸出的錯(cuò)誤校驗(yàn)值,圖11所示為正確值,當(dāng)前所測(cè)溫度為19 ℃,濕度為36%。為了檢驗(yàn)所測(cè)數(shù)據(jù)的準(zhǔn)確性,把手指放在DHT11傳感器上,顯示結(jié)果會(huì)明顯發(fā)生變化,溫濕度值均會(huì)升高。
所需要的軟件都是在網(wǎng)上的,首先要先安裝一個(gè)svn軟件,用git即可。終端下輸入指令:
#sudo apt-get install git
#sudo apt-get install cmake
安裝兩個(gè)軟件,“rtl-sdr”軟件,網(wǎng)址位于:http://github.com/pinkavaj/rtl-sdr.git,它是一個(gè)RTL28320芯片的控制軟件,負(fù)責(zé)控制電視棒頻率,類(lèi)似破解驅(qū)動(dòng)。另一個(gè)是“dump1090”軟件,網(wǎng)址位于:https://github.com/antirez/dump1090。它是一個(gè)把無(wú)線電中的數(shù)字信號(hào)提取出來(lái)并解碼的軟件[8],就是解碼S模式應(yīng)答機(jī)的內(nèi)容,分別下載安裝兩個(gè)軟件并編譯,(以dump1090為例)終端下輸入指令:
#git clone https://github.com/antirez/dump1090.git
#cd dump1090/
# make
圖10 錯(cuò)誤數(shù)據(jù)的校驗(yàn)
圖11 所獲取的溫濕度
運(yùn)行dump1090,模型將開(kāi)始收集附近配備ADS-B[9]飛機(jī)的信息。終端下輸入如下命令:
#sudo rmmod dvb_usb_rtl28xxu
#sudo ./dump1090 --interacitve --net
樹(shù)莓派終端就會(huì)顯示此時(shí)在天空中飛行的一些飛機(jī)的數(shù)據(jù)信息,如圖12所示,既能收到中國(guó)民航飛行學(xué)院廣漢分院訓(xùn)練用的小型機(jī),又能收到在空中飛過(guò)的大型民航運(yùn)輸客機(jī)的信息,界面的相關(guān)參數(shù)為:Hex16進(jìn)制數(shù)據(jù)、Flight航班號(hào)、Altitude飛行高度、Speed飛行速度、Lat/Long經(jīng)緯度地理坐標(biāo)。用遠(yuǎn)程控制的筆記本電腦進(jìn)一步訪問(wèn)http://192.168.0.103:8080,便可獲取結(jié)合Google地圖的詳細(xì)飛機(jī)軌跡等相關(guān)信息[10],如圖13所示。對(duì)于民航客機(jī),還可訪問(wèn)FlightAware、FlightStats等相關(guān)網(wǎng)站,獲取和此航班有關(guān)的更多信息,比如飛行時(shí)間、機(jī)型型號(hào)、飛行計(jì)劃和歷史航班等,如圖14所示。
圖12 終端顯示的ADS-B信息
圖13 結(jié)合Google地圖的顯示畫(huà)面
圖14 訪問(wèn)FlightAware獲取航班信息
本文介紹了遠(yuǎn)程塔臺(tái)的主要實(shí)現(xiàn)和工作原理,并羅列了主要的程序設(shè)計(jì)過(guò)程。程序設(shè)計(jì)主要通過(guò)Linux系統(tǒng)和Python語(yǔ)言完成,實(shí)現(xiàn)了對(duì)遠(yuǎn)程終端(樹(shù)莓派Raspberry Pi 3B)的控制,以及遠(yuǎn)程終端影像視頻信息獲取、傳輸,溫濕度氣象數(shù)據(jù)的獲取,ADS-B信號(hào)接收的功能。本次模型建設(shè)基本實(shí)現(xiàn)遠(yuǎn)程塔臺(tái)技術(shù)的幾個(gè)基本功能,但在功
能的實(shí)現(xiàn)中,還存在一些不足之處:影像視頻傳輸存在2~3 s的延遲,氣象數(shù)據(jù)只采集了溫濕度,還可添加更多的傳感器模塊,實(shí)現(xiàn)更豐富的氣象資料的采集傳輸。DHT11在獲取溫濕度時(shí),錯(cuò)誤率還是比較高的,暫時(shí)不知道如何比較準(zhǔn)確地識(shí)別時(shí)序信號(hào),而且在樹(shù)莓派執(zhí)行多任務(wù)時(shí),很可能錯(cuò)得很離譜。