自宅で航空無線 ADS-B を受信してFlightradar24にデータ提供する話
航空無線には ADS-B という規格があります。ADS-B は、航空機自身がコードや位置情報、速度などを発信するための仕組みです。通常、この ADS-B は航空管制のために利用されますが、この情報をコミュニティで共有して地図を作成しているサイトも存在します。その代表例が Flightradar24 です。
この情報は世界中に設置されたアンテナから収集され、航空機の位置情報が地図上に表示されます。誰でもアンテナを設置し、こうしたサイトに情報を提供することが可能です。
自宅にアンテナを設置して5年
私は5年ほど前から自宅にアンテナを設置し、USB接続で航空機の情報を受信し、Flightradar24 などにデータを送信しています。開始当初は屋外に設置していましたが、屋内でも十分に受信できることが分かり、現在は屋内設置に移行しました。
このタイミングで、構成を Raspberry Pi から x86 の通常の PC サーバー へ移行しました。
Raspberry Piは電源容量の都合から、USBハブを追加したり面倒でした。受信はSDRになるのでそこそこCPUを回すので、発熱などの対処なども考えると余っているx86サーバへ繋げたほうが話が早かったです。
物理的なセットアップ
受信機には RTL2832U チップが乗ったものを使用し、ADS-B の中心周波数である 1090MHz を受信できるアンテナを直接接続。これらをスチールラックに設置しました。
接続のための部品は 3Dプリンター で自作しました。
部品はすべて AliExpress で購入しました。別で購入した受信機は1090MHzが受信可能と書いていながら、この周波数帯にセットするとチューナから対応していない旨エラーが出力されるものもあったので、到着次第はやめに検証するほうが良いと思う。
5年前の価格
- RTL2832U+R820T: 3,000円弱
- 10 dbi 1090MHz Antenna 375mm: 500円程度
ソフトウェア的なセットアップ
今回は dump1090-fa を利用しました。セットアップは簡単で、Web UI から受信機が直接受信している航空機の情報を地図にマッピングできる点が便利です。
設定は systemd の override を利用して行います。座標は自分の設置場所に合わせて書き換えてください。
# /etc/systemd/system/dump1090-fa.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/share/dump1090-fa/start-dump1090-fa --write-json %t/dump1090-fa --stats-every 60 --lat ***** --lon ***** --enable-agc
Flightradar24 へのデータ提供
Flightradar24 にデータを送信すると、有料プラン相当の機能が無料で利用できます。そのため、データ送信用のソフトウェアも導入しました。
設定はシンプルで、dump1090-fa が待ち受ける Beast TCP のポートに接続するだけです。
$ cat /etc/fr24feed.ini
receiver="beast-tcp"
fr24key="**********"
host="127.0.0.1:30005"
bs="no"
raw="no"
logmode="2"
logpath="/var/log/fr24feed"
mlat="yes"
mlat-without-gps="yes"
受信感度について
Flightradar24 のサイトからステータスを確認できます。多くの航空機は 20〜30NM 以内で受信していますが、稀に 70NM 程度の航空機も受信できています。
↑このステータス表示は割とラグがあるので注意
設置場所は空が見通せる場所なので、室内でも受信感度はそれほど悪くありません。ただし、当然ながら窓の方向に依存し、狭い範囲での受信に限られます。我が家では、関西空港のアプローチ機が追えてるので満足です。
この記事はGoogle Docsで音声入力したテキストをChatGPTに清書させました。