見出し画像

ADS-Bを受信してFlightradar24と連携!

Outline

  • ADS-Bを受信するわけ(ADS-Bの解説)

  • ADS-Bの受信、Flightradar24への提供と法律懸念(違法じゃないの?)

  • ADS-Bを受信するために必要なもの(物品紹介)

  • ADS-Bを受信する(コマンド紹介)

Author

学生団体Keisei 副代表 @negishi_tako
たこ系エンジニアやってます。

1. ADS-Bを受信するわけ

まず、ADS-Bについて知っている人は少ないと思います。私もこの開発を始めようと思うまで知りませんでした。(航空オタクの代表はもちろん知っていました 笑)

ADS-B(Automatic Dependent Surveillance-Broadcast)とは、世界中の空を飛んでいる航空機が、現在の機体の位置と高度情報を放送(Broadcast)するもので、従来のレーダーよりも低いコストでトラッキングが可能で山岳地帯でも有用とされています。

Asahinet www.ne.jp/asahi/nature/kuro/RDBX/RD_ADS.htm (間接引用)

そんなADS-Bですが、それを利用したサイトがFlightradar24(Fr24)です!
Flightradar24はブラウザやネイティブアプリを利用して、世界中を飛行している航空機の位置情報や高度、速度を見ることができるアプリです。おもしろいですよ!

北海道の翼 AIRDO 飛んでますね~

話がそれますが、フライトの記録にはmyflightradar24もおすすめですよ!
さて、そんなFr24はユーザが取得したADS-Bの情報を集めることで運営されています。(人工衛星も使っているという話もありますが…)
それに我々も情報を提供しよう!のが今回のテーマです。

ちなみに、情報提供をすることで年間$500のBusinessプランが無料になります!すごい!

2. ADS-Bの受信、Flightradar24への提供と法律の懸念

※この記事の法やルールの解釈は当団体のもので、これによって一切の責任を負うものではありません。また、この記事は法律の解釈の正当性を主張するものではなく、技術の紹介を行うものです。

やる気満々になっていると思いますが、一つ懸念点があります。それは電波法です。電波法第59条では以下のように記されています。

何人も法律に別段の定めがある場合を除くほか、特定の相手方に対して行われる無線通信(電気通信事業法第四条第一項又は第百六十四条第三項の通信であるものを除く。第百九条並びに第百九条の二第二項及び第三項において同じ。)を傍受してその存在若しくは内容を漏らし、又はこれを窃用してはならない。

e-Gov 法令検索 laws.e-gov.go.jp/law/325AC0000000131

色々調べたところ、特定の相手方に対して行われる無線通信にBroadcast(だれでも聞ける)が当てはまるのか???というところが議論されているようです。とても懸念ですね…

3. ADS-Bを受信するために必要なもの

ADS-Bを受信するには少し道具が必要です。中華製も多いので今回使用したものをピックアップします。
(今後たくさん作る予定なのでその時は比較記事をつくります。)

  • Raspberry Pi Zero 2 W

  • ラズパイ用電源

  • SDカード

  • SMAドングル

  • アンテナ

  • microB to A 変換コネクタ

実際に購入したのは

購入時点(2024年11月19日)で12,686円でした。ラズパイのケースは3Dプリンターで印刷するか、買ってください。
届いたらよしなに組み立てます。特に難しいところはないと思いますが、アンテナが3本ついていたので黒い金属のものを使ってみました。

4. ADS-Bを受信する

やる工程はあまり難しくありません。
ただし、インストールの順番を間違えると競合したりしてめんどくさくなるので、順番は守った方が良いです。(経験者)

工程
i. ラズパイにOSの書き込み
ii. FAとFr24へのサインアップ
iii. ラズパイの初期設定
iv. FAのインストール
v. dump1090のインストール
vi. Fr24のインストール

各モジュールの役割
FlightAware: ローカル環境でマップに飛行機の位置情報表示、FAへのfeed
dump1090: 受信したADS-Bのデコード
Flightradar24: Fr24へのfeed

ググるとFr24推奨の最新の方法が出てきますが、これはRaspberry Pi 3b+以上のモデルでしかできません。お金があればそうしましょう。

www.flightradar24.com/build-your-own

i.ラズパイにOSの書き込み

Raspberry Pi imagerをインストールして書き込みます。

デバイス: Raspberry Pi Zero 2 W
OS: Raspberry Pi OS Lite(32bit)

書き込む際に起動後の設定を編集のボタンが出てくるので編集します。

ホスト名: 設定
SSH: 認証を設定(鍵認証を推奨)
ユーザ名・パスワード: 設定
Wi-Fi: SSID/パスワードを設定(有線接続の場合は不要)

ここでSSHとWi-Fiの設定をすることで、ディスプレイがなくても設定できます。

ii. FlightAware Flightradar24へのサインアップ

書いてる間に終わらせちゃってください。登録済みなら不要です。https://login.flightaware.com/signup
https://www.flightradar24.com/premium/signup

iii. ラズパイの初期設定

SDカードをラズパイに差し込み、電源を入れます。ログイン画面が表示されるのでよしなにログイン。SSHを利用する場合には、同一ローカルネットワーク内からラズパイのIPアドレスに対してSSHコマンドを実行します。IPアドレスがわからないときには、SSHするPCで

PS > arp -a

などを実行し、IPアドレスを取得してください。
ログインしたら、更新作業を行います。

$ sudo apt update
$ sudo apt upgrade

iv. FlightAwareのインストール

FlightAwareはFlightradarに似たサービスです。じゃあ要らないと思うかもしれませんが、このツールも同居させることで、ローカルネットワークからアクセスした際に、web画面にマップが表示されて楽しいです。

$ wget https://ja.flightaware.com/adsb/piaware/files/packages/pool/piaware/f/flightaware-apt-repository/flightaware-apt-repository_1.2_all.deb
$ sudo dpkg -i flightaware-apt-repository_1.2_all.deb
$ sudo apt update
$ sudo apt install piaware
$ sudo piaware-config allow-auto-updates yes
$ sudo piaware-config allow-manual-updates yes

公式docがあります!

ちなみにステータスは以下で確認可能です。

$ sudo systemctl status piaware
$ sudo systemctl enable piaware #自動起動設定

インストールが完了したら https://ja.flightaware.com/adsb/piaware/claim  にアクセスし、受信機(クライアント)を登録します。

v. dump1090のインストール

$ sudo apt install dump1090-fa
$ sudo reboot #再起動

アメリカだと以下も実行します。

$ sudo apt install dump978-fa

ちなみにステータスは以下で確認可能です。

$ sudo systemctl status dump1090-fa
$ sudo systemctl enabole dump1090-fa #自動起動設定

vi. Flightradar24のインストール

Flightradar24より必要なソフトウェアをダウンロード、インストールします。

$ sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"

色々入力を求められるので入れます。

Step 1.1: Flightradar24に登録したメールアドレス
Step 1.2: 引継ぎなければそのままEnter
Step 1.3: yes(MLATという機能がある)
Step 3.A: アンテナを設置している場所の緯度
Step 3.B: アンテナを設置している場所の経度
Step 3.C: アンテナを設置している場所の高さ(feet)

これらを入力すると、先ほど入れたdump1090があるから、よしなにセッティングするか~的なことを聞かれます。お願いします。(yes)
これでインストールが完了です。
ちなみにステータスは以下で確認可能。

$ fr24feed-status
$ sudo systemctl status fr24feed

デバッグ録 fr24feedコマンドをつかう

入れる順番をごちゃごちゃにしてた際、再起動として

$ fr24feed

を実行しましたが書き込み不可能のエラーが出ました。こちらは

$ sudo systemctl stop fr24feed

でアプリを停止し、アプリケーションを停止させてから再度実行するときにのみ使えます。

デバッグ録 rtl_testコマンドをつかう

アンテナの接続が確認できない場合に、rtl_testコマンドを使用しました。

$ rtl_test
#デバイスが発見されると、ここに表示されます。

インストールも簡単です。

$ sudo apt install rtl-sdr

EX. 飛行機を楽しもう!

Flightradar24の受信情報 http://{Local_IP}:8754
FlightAwareの受信情報(マップ付き) http://{Local_IP}:8080

学校のTVに映して嗜んでいる様子

感想

今回は、ADS-Bを受信し視覚化を行いました。どちらもドキュメントが整備されていて、以外とセットアップが簡単だった印象です。現在は、安定稼働のために、自宅サーバの監視技術を活かし、CloudFlared,Prometheus,Grafanaでの遠隔監視などに挑戦中です!
Flightradar24やFlightAwareへのデータ提供については各自の判断で実施してください!

参考

いいなと思ったら応援しよう!