1. 程式人生 > >基於 Raspberry Pi 構建一個飛機觀察器

基於 Raspberry Pi 構建一個飛機觀察器

步驟 inux 進展 定義 lan 擁有 hit mbo helper

此項目使用帶超低成本軟件無線電 (SDR) 硬件的 Raspberry Pi,來接收數百萬裏之外的機載 S 模式應答器發送的跟蹤信息。Raspberry Pi 配備了靈巧的 3.5 英寸 TFT 顯示屏,以提供便捷的飛機活動概覽。

技術分享

硬件

基於 RTL2832U 的微小 SDR 接收器 (124-5461) 專為 DVB-T 的接收設計並第一次投放市場。然而,由於 Linux 內核黑客這幾年的努力,已經可以獲取設備的原始樣本,而不僅僅還只是一個被解調的 DVB 信號。這意味著無線系統之後可以應用於軟件,實現巨大的靈活性。

技術分享

RTL2832U 芯片通常與調諧器 IC 配接。具體到 Adafruit 的 USB 接收器中,它是一個 R820T,可接收 24MHz 至 1,850MHz 的信號。應該指出的是,RTL-SDR 硬件配備 8 位 ADC 分辨率和約 7 位的有效位數 (ENOB),在更昂貴的 SDR 平臺的動態範圍內無競爭優勢。但是對於許多用途來說,它已經足夠,並擁有極高的性價比。

技術分享

用於接收和解碼 S 模式信號的軟件提供了一個基於 Google 地圖的網站界面和一個並不特別需要的本地顯示屏。然而,Adafruit PiTFT 3.5 英寸顯示屏 (124-5487) 的增加提供了“一目了然”的簡明空中活動概覽。另外,Raspberry Pi、SDR 接收器和 TFT 顯示屏的結合還可配置成一個相當酷炫、實現頻譜可視化的獨立掃描儀。

TFT 顯示屏只需插入 Pi 的 P1 管座,SDR 接收器則只需插入一個 USB 端口。

Raspbian

Raspbian 的安裝有兩種選項:從 Adafruit 為已配置好的 TFT 顯示屏下載一個受內核支持的映像,或編寫一個 Raspbian 內置映像,然後進行相應配置。我選擇了後者,因為我通常傾向於使用官方 O/S 安裝映像,然後執行所需自定義操作。然而,前者包含的步驟更少,更不容易出錯。Adafruit 為兩種方法提供指導。

使用 “dd” 編寫 Micro SD 卡後,我通過編輯文件將主機名從默認的 “raspberrypi” 更改為 “planepi”,以更方便地找到網絡:

etc/hostname

etc/hosts

註意開始處缺失的斜線,因為您不會想在編寫 SD 卡的計算機上的 /etc 下編輯文件 - 所以,不管您的電腦已經安裝了什麽路徑,您都需要在 SD 卡下添加根文件系統。

如果您傾向於通過附帶的鍵盤、顯示器和鼠標配置系統,則不必啟動 SSH。但是,如果您像我一樣傾向於通過 SSH 連接進行配置,則需執行以下操作:

$ sudo touch boot/ssh

隨便用什麽替代 “boot”。完整路徑是為了在 SD 卡上引導系統文件。

如果 Pi 連接至一個有線網絡,您可以移除Micro SD 卡,插入 Pi 然後引導。但是,如果您使用無線網絡連接,則還需編輯:

etc/wpa_supplicant/wpa_supplicant.conf

再次重申,這不是您編寫 SD 卡的計算機上 /etc/wpa_supplicant 中的配置文件,配置文件位於 SD 卡根文件系統上的 etc/wpa_supplicant 目錄中。

如需手動配置無線網絡的詳情,請參閱 Raspberry Pi 文檔。

PiTFT 設置

技術分享

因為我使用 Raspbian 內置映像,並需為 TFT 顯示屏配置此映像的內核支持,我按照 Adafruit 提供的 DIY 安裝人員腳本說明:輕松安裝進行安裝。然而,”sudo apt-get install” 行出現如上所示錯誤,因為內置映像出現了更新的軟件版本,因此,需運行以下腳本強制進行降級:

$ sudo apt-get install -y --force-yes raspberrypi-bootloader adafruit-pitft-helper raspberrypi-kernel

隨後運行輔助腳本,以便安裝 3.5 英寸電阻型 PiTFT。

$ sudo adafruit-pitft-helper -t 35r

通常建議使用 Adafruit 提供的提前配置好的 Raspbian 映像。但是,以上信息只對使用 Raspbian 內置映像的新手有用,不管其出於任何原因,如向運行其他應用程序的現有系統添加這些功能。

最後,如果出現本文頂部圖像所示情況,即 USB 電源引線朝 Pi 向下,則需要更新配置才可將顯示屏旋轉 180 度。通過編輯 /boot/config.txt 文件並將 rotate=270 更改為 rotate=90 即可完成。

dump1090

有多種軟件可用於接收和解碼 S 模式傳輸,這在 5 年前就實現了,那時我撰文介紹過基於 GNU Radio 的地對空模式。然而,這一次,我們打算使用名為 dump1090 的軟件,其以 S 模式的使用頻率 1090MHz 命名。

與 GNU Radio 相比,dump1090 的好處包括:擁有最低的外部依賴性;它還特別堅固,擅長於解碼弱信號。當在交互模式下工作時,它將向控制臺打印出活動概覽,且在 GitHub 上共享的分支會經過細微修改,以便適應 3.5 英寸 TFT 顯示屏。

要進行構建,我們需要運行以下腳本:

$ sudo apt-get install libusb-1.0-0-dev librtlsdr-dev rtl-sdr
$ git clone https://github.com/DesignSparkrs/dump1090
$ cd dump1090
$ make

隨後編輯 /etc/rc.local 文件,並在 “exit 0” 前添加以下行:

cd ~pi/dump1090; ./dump1090 --net --net-http-port 80 --interactive &

運行

技術分享

現在我們需要重新啟動以便為 TFT 顯示屏配置內核,如果未為 RTL-SDR 硬件加載默認的電視調諧器支持,則該配置將會受阻。如果一切進展順利,dump1090 將通過我們剛剛添加至 /etc/rc.local 的行啟動。隨後 TFT 顯示屏應會在接收到信號時開始顯示內容。

技術分享

如果瀏覽器連接Raspberry Pi,我們將會獲得一個簡單的網絡應用程序。該程序基於 Google 地圖,帶有飛機位置標記和海拔等數據牛肉板面。

請註意,SDR 接收器隨附的天線對於 1090MHz 來說不是最優的,但是在大部分地區,使用該天線起碼可以獲取某些飛機信號。請確保將其放置於窗戶邊或窗外。如果您運氣不佳,無法接收信號,有在線的簡單DIY天線的計劃可以調諧到1090MHz,增益更高。

其他軟件和服務

技術分享

dump1090 還可讓原始 S 模式信息在網絡上可用,這些可與 PlanePlotter 等軟件一起使用,以實現更復雜的顯示。此外,數據還可從接收器發送到提供眾包飛行數據訪問權限的在線服務,如 OpenSky Network FlightAware。

基於 Raspberry Pi 構建一個飛機觀察器