Raspberry Piを使ってフライトレーダーを作ってみるぞ【構築編】

Raspberry Piを使ってフライトレーダーを作るぞ
  • URLをコピーしました!

前回、Raspberry Piなど必要な機器を購入しました。

AliExpressの配送がエポス便でしたので心配していたのですが、注文から5日間で玄関先に置き配されていました。

目次

Raspberry Pi OSのインストールと設定

インストールについては、たくさんのページで紹介されておりますので省略します。
基本的には、インストール用のソフトウェアがかなり丁寧に作られているため、問題なくインストールできると思います。

こちらのサイトから、専用のOSインストールアプリ(Raspberry Pi Imager)をダウンロードしてインストールします。
画面上の指示に従って進めることでSDカードへのインストールが完了します。

OSは推奨の64bitをインストールしました。
WiFi設定、SSHの設定をインストール時に設定できるので設定してしまいます。
そうすることで、SSHのみであればキーボード等を繋がなく進めることができます。

SSHの設定

Macの場合となりますが、インストール時にSSHの設定(公開鍵認証のみ)をすると、秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が「~/.ssh」に格納されます。

SSHを利用する場合は、「~./.ssh/config」に設定を入れてしまうとSSHの接続が簡単です。
「~./.ssh/config」の修正は、ターミナルにてファイルを修正します。

ディレクトリを移動

cd ~/.ssh

configファイルを開く

nano config

SSH接続情報を追加する

Host、HostName、Userはご自身の環境に合わせてください。
HostNameは、インストール時に決めたホスト名でも大丈夫です。
例えば、ホスト名を「pi.local」にした場合は、「HostName pi.local」となります。

Host pi
    HostName 192.168.1.xx
    User xxxx
    Port 22
    IdentityFile ~/.ssh/id_rsa
    ServerAliveInterval 1
    TCPKeepAlive yes

このようにconfigを設定することで、Raspberry Piへの接続は以下のコマンドで接続できるようになります。

ssh pi

Raspberry Piへ接続後に、念のためRaspberry Pi側のsshの設定ファイルを確認します。

SSHの設定ファイルを開きます。

nano /etc/ssh/sshd_config

SSHの設定確認をします。

以下のようになっていれば大丈夫です。
Raspberry Piに関してRootのログインがあるのかわかりませんが、一応塞いでおきます。

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

設定を変更した場合は、設定を反映させます。

sudo systemctl restart sshd

HHKBだと、viのカーソル移動がうまくできませんでした。
同様の方は、最初にvimをインストールしましょう。
vimなら問題なかったです。

時刻同期の設定(timesyncdの設定)

時刻同期が動いているかわかりませんので、最初に時刻同期の設定を入れておきます

同期設定用のファイルを開きます。

sudo nano /etc/systemd/timesyncd.conf

NTPの設定を追加

次の2行を追加します。
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com

[Time]
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com
#RootDistanceMaxSec=5

同期設定を反映させます。

sudo timedatectl set-ntp true
sudo systemctl daemon-reload
sudo systemctl restart systemd-timesyncd

念のため、動作しているか確認します。

sudo systemctl status systemd-timesyncd

タイムアウトなどのエラーが表示されてなければ大丈夫です!

OSのアップデート

OSの設定は済みましたので、OSをアップデートします。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update

すべて終わるのには時間がかかりますので、気長に待ちましょう。

終わったら再起動します。

sudo reboot

スワップ容量を増やす

Raspberry Pi Zero 2 Wはメモリが512Mと少ないので、スワップファイルを大きくしておきます。

スワップの設定ファイルを開く

sudo nano /etc/dphys-swapfile

スワップの容量を100Mから2Gに変更するため、「CONF_SWAPSIZE」を変更する

CONF_SWAPSIZE=2048

増えたか確認する

Swapのtotalが2048くらいになっていればOK

free -m

リモート操作(VNC)の設定

HDMIでモニターを接続して設定を変えても良いですし、SSH接続で有効にすることもできます。

HDMIで接続してGUIで設定する

HDMIで接続して設定する場合は、次のように設定します。
設定画面を開きます。

Raspberry Piの設定画面を開きます

「Interface」タブの中の「VNC」のスイッチをオンにします。

Interfaceタブの中にあるVNCを有効にします。

ターミナルからCUI(コマンド)で設定する

ターミナルから設定画面を読み出します。

sudo raspi-config

画面が変わるので、3 Interface Optionsを選択します。

13 VNCを選択します。

Yesを選択します。

これで有効になります。

接続用のソフト(Real VNC)にて接続

Real VNCをダウンロードしてインストールします。

非商用利用の場合は無料で利用することができます。

起動して接続します。
枠の部分にホスト名かIPアドレスを入れて接続します。

ホスト名やIPで接続します

あとは画面に従って、OSをインストールした時のユーザー名とパスワードで接続するだけです。
一度設定を済ませれば、Address bookのところに入るので、ダブルクリックのみで接続できるようになります。

これでRaspberry PiのOS設定は終了です。

ADS-Bでの受信設定

ADS-Bの接続とアンテナの置き場所

ハードウェアの接続は問題ないと思いますが、
今回購入したADS-B受信用のUSBドングルとアンテナを接続します。
USBドングルとRaspberry Pi Zero 2 Wとの接続には、OTGケーブルを挟んで接続します。
ケースセットを購入していれば、中に含まれていますので別途購入する必要はありません。

アンテナの設置位置は、室内であれば、より窓辺、より見通しが良い、より高い位置ほど良く受信します。

室内でも、西側に置いたら7機くらいしか受信できなかったのに、東側に置いたら、多い時で60機くらいを受信するようになりました!
場所を変えるだけでだいぶ変わります!
ログを見ると400km超を受信した形跡がありました

ソフトウェアの設定

フライトレーダーを提供している有名なサイトとしては次の3つがあります。

  • FlightAware
  • FlightRadar24
  • RadarBox

この3つのサイトにフィードを送ることで、それぞれのサイトの有料会員特典を受けることができるようになります。そこで、今回はFlightAwareとFlightRadar24のサイトにフィード(受信データ)を送るような設定にしてみたいと思います。

会員登録

FlightAwareFlightRadar24の会員登録を済ませておきましょう。
無料会員の状態で、フィードを送ることで勝手にアップグレードされます。

FlightAwareの設定

FlightAwareのソフトウェアにてADS-B受信周波数である1090MHzと978MHzを受信します。
そのため、まずはFlightAwareのインストールを実施していきます。

インストール方法は公式サイトのやり方のままで概ね大丈夫です。

必要なパッケージの取得

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

ソフトウェア(piaware)のインストール

sudo apt update
sudo apt install piaware

自動アップデートと手動アップデートの設定

sudo piaware-config allow-auto-updates yes
sudo piaware-config allow-manual-updates yes

1090MHz受信用ソフトウェアのインストール

sudo apt install dump1090-fa

978MHz受信用ソフトウェアのインストール

sudo apt install dump978-fa

受信用ソフトウェアの自動起動設定

sudo systemctl enable dump1090-fa
sudo systemctl enable dump978-fa

再起動

sudo reboot

ADS-B受信状況の確認

受信用ソフトウェアが正しく動いているかを確認します。
Raspberry Piの内部のブラウザか、同一LAN上の別のパソコンからRaspberry Piへアクセスします。

  • http://localhost:8080(Raspberry Piの内部ブラウザを使用)
  • http://pi.local:8080(同一LAN上の別端末のブラウザを使用)
    ※ホスト名がpi.localの場合です。Raspberry PiのIPでも大丈夫です

うまく受信できていると、このような感じの画面が表示されます。

ADS-B受信状態

FlightAwareへフィーダーIDをリンクする

FlightAwareのソフトウェアをインストールした段階で、すでにフィードは送られていると思います。
送っているフィーダーIDをFlightAwareの会員情報とリンクすることで、有料会員(Enterprise)になります。

リンクする方法は2つあります。
FlightAwareにログインした状態にします

リンクする方法 1

こちらで問題なくリンクできれば完了です。

うまくできなかった場合は次のようなメッセージが表示されます。

Unfortunately, FlightAware hasn’t found a new, unclaimed PiAware feeder to claim.

うまくリンクできない場合は、次の方法を試します。

自分のFeeder IDを取得

piaware-status

一番下の行にあるYour feeder IDのxxxxの部分を取得

Your feeder ID is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (from /var/cache/piaware/feeder_id)

次のURLへアクセス

リンクする方法 2

https://www.flightaware.com/adsb/piaware/claim/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx にアクセスする

※xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx には自分のFeeder IDを入れる

これで成功すれば、リンクが完了します。

私の場合は、1の方法ではうまくいかず、2の方法でリンクしました。

リンクが完了すると、FlightAwareのサイトの一番上に「マイ ADS-B」というリンクが追加されます。
マイADS-Bでは、送ったフィードの情報を閲覧することができます。

マイADS-Bのリンクが追加

FlightAwareサイトでの設定変更

マイADS-Bのページに設定を変更する部分があります。
SITE番号の右横にある歯車マークです。

緯度・経度・高度の設定が入っていない場合は「Edit Location」「Edit Height」から変更します。
私の場合は、自動で入っていましたが場所が違っていたので、手動設定で再設定しました。

このあとのFlightRadar24のところでも使いますので、緯度・経度・高度はメモをしておきましょう。

緯度・経度・高度を調べる方法
国土地理院のサイトで調べることができます。(URLに緯度・経度、左下に標高が表示されます)
こちらのサイトだと緯度・経度・標高が簡単に分かるので便利だと思います。

赤枠部分を変更して、最後に「Send」をクリックします。

FlightAwareサイトでの設定

FlightRadar24へフィード送信の設定

FlightRadar24へフィードを送る設定をしていきます。
まずは送信用のソフトウェアをインストールします。

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

インストールが始まると、さまざまな質問に答えながら設定をしていきます。

メールアドレスの登録

Step 1.1 - Enter your email address ([email protected])
$: FlightRadar24へ登録したメールアドレスを入力

シェアリングキーの入力(初回は不要)

Step 1.2 - Enter your sharing key or press ENTER/RETURN to continue.
$: 前にインストールしたことがある場合はキーを入力(最初のインストールならそのままEnter)

MLAT(ADS-Bとは違う技術)を使うか

Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$:
$: yes

設置場所の緯度・経度・高度
国土地理院のサイトで調べることができます。(URLに緯度・経度、左下に標高が表示されます)
こちらのサイトだと緯度・経度・標高が簡単に分かるので便利だと思います。

Step 3.A - Enter antenna's latitude (DD.DDDD)
$: 設置場所の緯度(例:35.6585)
Step 3.B - Enter antenna's longitude (DDD.DDDD)
$: 設置場所の経度(例:139.7428)
Step 3.C - Enter antenna's altitude above the sea level (in feet)
$: 標高+アンテナを設置した高さ(メートル)× 3.28084 (例:108)

メートルではなくフィートなので注意しましょう

内容の確認

Enter your choice (yes/no)
$: yes

自動設定を利用するかどうか

Would you like to use autoconfig (yes/no)
$: yes

設定完了です。

FlightRadar24へのフィード送信機能の自動起動設定

最初から入っていたような気もしますが、念のため自動起動の設定を入れておきます。

sudo systemctl enable fr24feed

FlightRadar24へのデータ提供状況の確認

fr24feed-status

エラーになっていないことを確認します。

一番下のMLATがfailedになっている可能性があります。
緯度・経度・高度の設定を追加したりいろいろ試しましたが、解決できませんでした。

公式のマニュアルを見ると、他のネットワークに共有する場合はオフにするように書いてありますので、FlightRadar24のMLATはオフにするのが正当なのかもしれません。

MLATをオフにする方法は、設定ファイルを直接変更します。
MLATの設定のみなら後述の設定画面から「NO」へ変更することで変更できますが、GPSの方は設定ファイルを直接変更する必要があります。

設定ファイルを開く

sudo nano /etc/fr24feed.ini

mlatの値を変更

mlat="no"
mlat-without-gps="no"

FlightAwareの方でMLATを受信できていることを確認できたので、FlightRadar24の方はオフにしました。

FlightRadar24への動作確認状況および設定の確認

FlightRadar24の動作確認状況と設定を確認します。
Raspberry Piの内部のブラウザか、同一LAN上の別のパソコンからRaspberry Piへアクセスします。

  • http://localhost:8754(Raspberry Piの内部ブラウザを使用)
  • http://pi.local:8754(同一LAN上の別端末のブラウザを使用)
    ※ホスト名がpi.localの場合です。Raspberry PiのIPでも大丈夫です

アクセスすると次のような画面が出ます。

FlightRadar24の稼働確認画面

もし、「Aircraft Tracked」や「Aircraft Uploaded」が0のまま動かない場合は設定を見直します。
右側にある「Settings」を選択します。

赤枠の2項目を以下のように設定してみてください。

FlightRadar24の設定画面
FR24 Feeder Settings

Receiver:「ModeS Beast(TCP)」
Host/IP:「127.0.0.1:30005」

インストール時のautoconfigにより、次のように設定されていました。
Receiver;「AVR(TCP)」
Host/IP:「127.0.0.1:30002」
ポートを30003にしても動きましたが、不安定だったためModeS Beastでポート30005の設定にして安定しました。

FlightRadar24のサイトでフィード状況の確認

FlightRadar24のサイトでフィード状況を確認します。
右上の人のマークをクリックして「My data sharing」を選択します。
STATUSがOnlineになっていれば大丈夫です。
Show statisticsで詳細な情報を見ることができます。

フィードの送信がうまくいった場合、Businessプランになったことをお知らせするメールを受信します。
サイト上でも有料会員(Business)になっていることも確認しておきましょう。

FlightRadar24へのフィード状況

FlightRadar24へのフィード送信が不安定な場合

FlightRadar24へのフィードが止まってしまう場合、送信状況を確認します。

fr24feed-status

この時に、Receiverの項目が動いていなかった場合は、fr24feedの再起動で恐らく直ります。

sudo systemctl restart fr24feed

頻繁にReceiverがfailedになる場合は、一度dump1090-faを削除して、再度入れ直すと直る場合があります。

sudo apt remove dump1090-fa
sudo apt install dump1090-fa

最初は不安定だったのですが、dump1090-faを入れ直したら安定しました。不安定n場合は試してみてください。

まとめ

ソフトウェアの設定が結構大変ですが、順を追って実施すれば大丈夫です。
AliExpressから購入したADS-Bドングルとアンテナは2,000円でしたが、とても遠くまで受信できました。
室内でも、設置場所を変えるだけでたくさんの信号を受信できることがわかりました。
もし、受信数が少ない場合は場所を変えてみるのも良いと思います。

たくさんの飛行機が動いているのを見るだけで楽しくなります。
次回は、pythonを使って遊んでみたいと思います。

10,000円未満で、FlightRadar24のビジネスプランをもらえるのはうれしいですね。

Raspberry Piを使ってフライトレーダーを作るぞ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次