树莓派 docker homeassistant_利用树莓派追踪飞机航行轨迹的骚姿势分享(转载)
開篇
你知道如何利用你手中的樹莓派來觀察天空中的飛機嗎?通過調諧和接收距離你所在地點250英里以外飛機無線電信號,你就可以追蹤飛機航線,而完成這個任務,僅需要隨處就能購買到的廉價USB電視棒。
本文將介紹如何追蹤飛機飛行航道以及規律,同時介紹項目中用到的軟件、硬件,以及使用Docker開源容器引擎來管理物聯網項目中的軟件。
該項目類似 FlightAware網站項目,后者已經可以可以分析來自世界各地幾萬人次的飛機飛行路線,而這種項目中需要用到的設備,僅僅是35美元的樹莓派以及USB電視棒。
如果你有興趣的話可以拿起手中的工具來,并為這些實時追蹤飛機的網站(FlightAware.com、Flightradar24和planefinder.net)盡一份力,你將會獲得詳細的度量值(無線電定向與測距(雷達))數據以及其它獎勵。
為什么要分析飛機飛行規律?
對于那些對樹莓派不感興趣的人來說該項目很實用,成本也很低
可以實現在線追蹤飛機飛行規律并與你所在地的航班日程對比
安放天線并獲取超詳細的飛行統計數據
將數據用于自己的編程項目,同時可以學習到有關航空的知識
最重要的是,這是一個非常有趣的項目,可通過研究樹莓派來獲得滿足感,值得一提的是,這個項目不會用到很多錢。
零件
樹莓派,SD卡(Raspbian Lite 、PIXEL)
我建議使用樹莓派2、3代,這樣有更多的可用內存,并可以進行多任務處理(如果想安裝多個接收器還想省錢可以使用Pi Zero)
USB電視棒
FlightAware Pro Stick(注意自己樹莓派的型號)-內置靜噪濾波器
SMA連接器-配置1090 MHz天線
DVB-T USB電視棒(Pimoroni上購買的)-我之前做了測試并選擇該芯片型號,并將伸縮天線推至最小位置
NESDR SDR-三天線、SMA接口,考慮城市環境因素內置靜噪濾波器
如果你想要買更便宜的接收器,需要保證他們有R820T 芯片組的設備。
注:為了取得更明顯的實驗結果,請購買品牌USB電視棒(沒有必然聯系)
天線
DVB-T USB電視棒主要利用天線接收電視機信號,而非1090 MHz的ADS-B信號。雖然你仍可以觀察到一些飛機航道,但這取決于你所在位置范圍內飛機高度和地面開闊度。
如果你需要一個1090 MHz天線,你可以購買一個SMA接頭(3 dBi版本)。我曾做了一個樣品,并將它放在窗臺上,結果僅獲取到150英里范圍內的飛行航道。
最終當我使用FlightAware外置天線的時候,你可以觀察到250英里的飛行航道,如果你安裝在屋頂上,那么你就會觀察的更遠。
功率問題
你也需要一個2.5a-3a的電源,以確保有足夠的電力為樹莓派和USB電視棒供電,你當然可去官網購買樹莓派(Pimoroni),ModMyPi還有樹莓派3件套,然后你就可以繼續開始這個項目了。
術語
我們將會使用usb電視棒來接收飛機ADS-B信號,但我們先從飛機的定義開始解釋。
ADS-B信號
現代飛機可以從導航儀器面板上的自動應答器上收集信息,并利用ADS-B信號將這些信息傳播到周邊地區。任何人都可以接收這樣的信號信息,無論是一架飛行控制臺、飛機或一臺樹莓派。
自動相關監視-廣播(ADS-B),確切說是一種監視技術,飛機通過衛星導航確定其位置,并定期發送信號,使之能被追蹤。
DVB-T USB電視棒
電視調諧器DVB-T,主要為數字視頻廣播(地面站)接收設備。當然你也可以使用這些設備來接收喜歡的電視節目,也不是所有的DVB-T設備都能改變用途,這就需要購買之前進行詳細的研究。
SMA天線接頭
SMA(微型版)連接器會比同軸款小些,如果你購買了廉價的DVB-T,那么有可能需要配更小的連接器,上面會有一個“辮子”。這些主要的天線連接器(同軸款連接器、SMA以及RF)都可以從網上電子商店購買,解碼ADS-B信號核心便是 dump1090,就1090來說是我們處理和解碼原始數據時,所用到的頻率大小。
dump1090是一個開源項目,該項目經手數人,不斷進行完善和改進。所以在選擇軟件構建和測試時會令人覺得困惑。
這是我在GitHub上找到該系統的歷史:
antirez在2012年圣誕節期間開始這個項目
MalcolmRobb 接手該項目,衍生代碼并添加更多功能
mutability在MalcolmRobb衍生代碼工作之后繼續開始
FlightAware 接手項目后保留了mutability 庫文件
我們使用 Docker來架構代碼,這樣你就可以很容易的在終端運行指令,使用Docker 優點:
可重復構建編寫腳本程序
可以讓我們在不同版本代碼之間切換
不用安裝在樹莓派什么程序,這樣使用起來也很方便
可以與朋友共享映像文件,也可以與其它樹莓派共享
對于dump1090多數版本來說還有一個網絡接口,可以讓你實時查詢飛機航道
FlightAware
FlightAware是上文提到的網站之一,你可以使用dump1090匯總到的數據,之后使用虛擬雷達將其可視化。當然你也可以獲得詳細的統計數據,幫助你跟蹤飛機航道以及飛行范圍。
這是我的顯示界面,利用的工具是FlightAware專用天線以及DVB-T(降噪)。
你可以查看我的詳細信息(alexellisuk),這里有更多的統計數據。
MLAT
MLAT-多點定位場面監視系統(如樹莓派),用來追蹤ADS-B信號,它能夠準確的分析時間偏差,這樣可以比單一追蹤信號獲取更多航道信息。
軟件安裝
安裝Docker
我們下面就會使用Docker 映像,我們可以添加除主機二進制文件以外的文件
$ curl -sSL https://get.docker.com | sh從GitHub上下載
$ git clone https://github.com/alexellis/eyes-in-the-skyUSB電視棒黑名單
為了電視棒兼容 dump1090,我們在其內核模塊設置了黑名單。
添加到文件目錄/etc/modprobe.d/blacklist.conf:
blacklist dvb_usb_rtl28xxu重新啟動
dump1090
安裝dump1090
如果你想要查看自己的位置(經度以及維度),請用CMD命令 編輯最后一行Dockerfile.malcolmrobb,你就可以在谷歌地圖發現自己的位置了。
$ cd eyes-in-the-sky/dump1090$ docker build -t alexellis2/dump1090:malcomrobb . -f Dockerfile.malcolmrobb-t-指的是我們之后指定的圖像名稱
-f-我自定義一個函數名稱Dockerfile,同時相當于為mutability也提供一個
使用Docker ,你可以在軟件中將圖像分享給其他人,同時上傳到Docker 項目中,這樣出現問題之后可以繼續架構dump1090,如若出現問題也不需要從頭再來。
$ docker pull alexellis2/dump1090:malcolmrobb測試dump1090
測試代碼
$ docker rm -f 1090 # remove any old container$ docker run --privileged -p 8080:8080 -p 30005:30005 -p 30003:30003 --privileged --name 1090 -d alexellis2/dump1090:malcomrobbdocker 的功能主要負責運行你的代碼,如果你重啟樹莓派并運行docker,同時加載dump 1090,則需要在docker運行指令rm -f 1090來阻止這一進程。
- P指令已經標記Docker容器端口,你可以通過更改Docker容器端口號和名稱,并運行dump1090
-d指令便是將Docker容器以daemon方式運行,如果僅僅是看到控制臺輸出信息,請輸入
docker logs --tail 20 -f 1090如果你清楚樹莓派的IP地址,那么你現在就可以打開網頁
http://192.168.0.10:8080/
當然你也可以利用ifconfig指令查找IP地址
那么你現在就可以登錄到樹莓派,找出飛機航道,以及你現在所在位置
提示:無權限訪問
如果不想用高級權限運行Docker容器,那么可以利用以識別USB設備名稱,然后更改,例如輸入–privileged 或–device=/dev/bus/usb/001/004
這時你應該輸入004,最終通過輸入lsusb指令查找正確號碼
$ lsusbBus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
安裝FlightAware
雖然之前也介紹了幾個飛行航道分析網站,但我還是選擇FlightAware,他們的軟件與你dump1090相連,并統計數據與網上的其他人的數據對比。
你可以安裝FlightAware.deb文件到你的樹莓派中,當然我已經創建了一個文件(Docker),這樣做有兩個優點,即不需要進行軟件拷貝,還有就是不需要在樹莓派的幫助下進行程序版本切換,無論是使用圖像文件還是分享圖像,都需要輸入指令如下
docker pull alexellis2/flightaware:3.5.0:
$ cd eyes-in-the-sky/flightaware$ docker build -t alexellis2/flightaware:3.5.0 .注:一定小心最后一行末尾的圓點
現在就可以在FlightAware.com網站上注冊一個賬號
編輯piaware.conf 文件更改下面信息
主機地址(樹莓派IP地址)
FlightAware用戶名(注冊信息)
FlightAware密碼(注冊信息)
FlightAware 通過 MAC地址選取樹莓派信息是正確的,幸運的是,我們可以利用軟件更改Docker中 MAC地址。如果僅僅是改變MAC 地址,那么里面每一部分都是獨立的。
運行并觀察最后結果
$ cd eyes-in-the-sky/flightaware$ docker rm -f piaware_1$ docker run --mac-address 02:42:ac:11:00:01 -v `pwd`/piaware.conf:/etc/piaware.conf --name piaware_1 -d alexellis2/piaware:3.5.0看到出現結果之后按下Control + C
$ docker logs --tail 20 -f piaware_1幾分鐘后你就可以在線看到自己樹莓派的相關信息
常見問題
設備功率多少?
樹莓派2/3以及Pi Zero 需要2-3瓦特,當dump1090程序在樹莓派上工作時,用電量會增長50%,這對Pi Zero來說也是一樣的,這其中額外電力主要為 USB DVB-T供電。
能用充電寶為設備供電嗎?
可以,如果你每天追蹤航班運行不到3個小時,那么就可以堅持3天。
我可以使用太陽能發電裝置供電?
我想使用太陽能發電裝置并不是一個明智的選擇,你不能在這種情況下穩定運行樹莓派,而且你還需要額外的設備,包括控制器、太陽能電池板以及蓄電池。
你最好在屋頂開闊地方放置設備,然后通過網絡控制樹莓派,這是我之前用到的零件清單(點我查看)。
有沒有在外部設備存儲鏡像文件的解決方案?
首先你可以趣 FlightAware上下載相應文件,并存儲在sd卡中,如果你之前按前文使用標準的配件,那么你可以直接在設備上安裝dump1090系統以及對應軟件。
你打算詳細解讀里面每個零件功能以及其它用途嗎?
如果大家對這篇文章關注多了,我會在以后詳細解讀里每個組件的其它用途。
注:樹莓派易受電壓尖峰影響,因此請考慮使用電涌保護器以防止損壞,如果您所在地區為高電壓尖峰地區,請考慮使用800焦耳的電涌保護器。
總結
以上是生活随笔為你收集整理的树莓派 docker homeassistant_利用树莓派追踪飞机航行轨迹的骚姿势分享(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么使用bat批处理删除文件夹和文件
- 下一篇: 投影矩阵的推导(转载)