BeagleBone Greenを使ってFlightradar24にADS-B情報をフィードしてみた。

Seeedの坪井です。

僕は飛行機で海外に飛ぶのが大好きです。ですので、空港では飛行機の写真を撮ってFacebookに投稿するエアポートおじさんになっていますし、Flightradar24を見て愉しんだりもしています。Flightradar24は、ADS-B(自動位置情報伝送・監視機能)の無線をFlightradar24社や世界各地の有志が設置した受信システムで受信した情報などをサーバに集めて表示するという仕組みです。この受信機はFlightradar24に申し込んで提供して貰うこともできますが、自分でパソコンやSBCを使って構築することもできます。機材の借用は面倒ですし、送られてきた箱を設置するのは何も面白くないので、自分で作ることにしました。また、Raspberry Piでの構築方法が掲載されていますが、micro SDでブートするボードを長期運用する機材に使いたくもありませんし、チュートリアル通りに構築してもなにも面白くないので、手元に転がっていたeMMCが載っているBeagleBone Greenを使って構築することにしました。

f:id:ytsuboi:20200308154217j:plain

用意したもの

さて、必要になった部材です。 まずは、ADS-Bを受信するアンテナとチューナーが必要です。これは、Flightradar24のBuild your own ADS-B receiverというページを参照して選びました。このページで紹介されているECサイトを見て、BUNDLE: ADS-B Dongle R820T2 + SCO 1090 Antenna (10m Cable) MCXというセットが屋外にそこそこのアンテナを設置したいという僕の希望にマッチしそうなので選びました。送料込みで81.34ユーロでしたが、こんなセットを買わずともAmazonなどで入手可能な安価なものでも動くという話です。(僕は使ってみていないので、動かなかったらごめんなさい。)

f:id:ytsuboi:20200308201400j:plain

届いたチューナーの基板はこのようなものでした。RTL2832UとR820T2というチップが載っているのが見て取れます。この構成はDVB-Tという地上デジタルテレビのチューナーでよくあるものらしく、たしかに届いたチューナーの筐体にもDVB-Tという表記があります。テレビ用だけあって、赤外線リモコンの受光素子なんかも載っていますね。RTL2832UもR820T2もかなり発熱するということですので、手持ちのRaspberry Pi用のヒートシンクをチップと基板底面に貼り付けてみました。それが冒頭の写真です。

www.seeedstudio.com

このヒートシンクは日本の販売店さんでも取り扱いいただいているのを見かけますが、Raspberry Pi 4に世代が変わりましたので、今後の入手性は下記のような製品の方が良いかもしれません。

www.seeedstudio.com

それから、マイコンボードはBeagleBone Greenです。BeagleBone GreenはコアがCortex-A8の1GHzと古いですが、カスタム品が船舶ナビゲーションシステムやEVチャージャーなどに使われているなど、それなりの信頼性を持っているLinuxの走るマイコンボードです。

www.seeedstudio.com

あとは、ファームを書き込むときに使う4GB以上のmicro SDと、micro SDリーダライタ、冒頭の写真に写っていますがUSB 2.0の延長ケーブルなどを使いました。

BBGを最新のソフトウェアイメージに

さて、手元に転がっていたBBGを使うので、eMMCに書き込まれているDebianがいつのものか分かりません。ですので、まずは最新のイメージに書き換えてやりたいと思います。BeagleBoneのイメージをここからダウンロードします。配布されているイメージは複数種ありますが、BeagleBone Greenは標準ではHDMI端子がありませんし、ほとんどの方はヘッドレスで使うでしょうから「IoT」版を選びました。この記事を書いている時点では「Debian 9.9 2019-08-03 4GB SD IoT」というものです。

これをチュートリアルに従ってSDに書き込みます。私はmacOSユーザーですので、balenaEtcherを使いました。(いつもRaspberry PiのSDを書き込むときなどにも使っています。)書き込みを終えたら、micro SDをBeagleBone Greenに取り付けます。あ、ここで必要に応じてパソコン側にドライバをインストールしておくと良いでしょう。ここに必要なドライバへのリンクがあります。ここにあるように、BeagleBone GreenのUSBには、シリアルコンソールとIPのインターフェースが来ています。

余談ですが、IPのインターフェースにはRNDISを使っているみたいで、macOSにはHoRNDISが採用されているみたいです。これはCatalica ( macOS 10.15 )ではインストールできませんので、GitHubのissueで配布されていたパッケージを私は使いました。

さて、SDを取り付け、ドライバもインストールしたところで起動をしたいと思いますが、SDからブートをしなければなりません。SDからブートをするには、BeagleBone GreenのGroveコネクタ横にある「USER/BOOT」ボタンを押しながらUSB接続をします。SDからブートできたかどうかを確認するには、シリアルコンソールなどにログインをし(115,200bps 8-N-1、初期IDとパスワードはdebian、temppwd)、/etc/debian_versionを見れば確認できるでしょう。

BeagleBone Greenに搭載のeMMCにイメージを書き込むには、/etc/uEnv.txtの最終行にある

##enable BeagleBone® Black: eMMC Flasher:
#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

を、

##enable BeagleBone® Black: eMMC Flasher:
cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

とアンコメントして再起動します。なお、たぶんrootでないと書き換えれませんし、再起動もできませんので、適宜sudoしてください。私はさっさとsudo su -してしまいました。

再起動が開始されると、こんな感じに4つのLEDが順に光ります。

https://raw.githubusercontent.com/SeeedDocument/BeagleBone_Green/master/images/flashing.gif

10分くらいして書き込みが終わると、LEDが消灯します。そうなれば終わっていますので、USBケーブルを抜き、SDを取り外してください。SDが取り付けられていない状態でUSBケーブルを接続してBegleBone Greenを起動し、ログインして/etc/debian_versionを見ると、やはり新しいバージョンになっているはずです。これでBeagleBone GreenのeMMCに書き込まれているイメージを新しくすることができたはずです。

fr24feedをインストールする

Flightradar24にフィードをするfr24feedというソフトをBeagleBone Greenにインストールしましょう。さて、BeagleBone Greenは、Debianでarmv7lのLinuxが走っています。

$ uname -a
Linux beaglebone 4.14.108-ti-r113 #1 SMP PREEMPT Wed Jul 31 00:01:10 UTC 2019 armv7l GNU/Linux

これは、Raspberry Pi 3などと同じです。ということは、Raspberry Pi向けのパッケージがそのまま使えることが期待できます。そこでShare your ADS-B dataに記載のRaspberry Pi向けの手順をそのまま実行してみます。

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

すると、シェルスクリプトによってapt-getやリポジトリの追加や更新、fr24feedパッケージのインストールの後にfr24feedが設定モードで起動されます。

f:id:ytsuboi:20200308211728p:plain

ここから、fr24feedの設定に移ります。

そういえば、私はFlightradar24のアカウントを既に持っていました。持っていない方は、Flightradar24のBasicの下にある「Create account」のリンクからアカウントを作っておくと良いかもしれません。私は下記のように入力をしました。

Step 1.1 - Enter your email address (username@domain.tld)
$:Flightradar24のアカウントのメールアドレス

Step 1.2 - If you used to feed FR24 with ADS-B data before, enter your sharing key.
If you don't remember your sharing key, you can find it in your account on the website under "My data sharing".
https://www.flightradar24.com/account/data-sharing

Otherwise leave this field empty and continue.
$:

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

すると、

ここで、MLATという新しい用語が出てきます。MLATというのは、電波の届いた時差を用いて航空機の位置を計算する追跡技術とのことです。ですので、MLATの計算に使われるデーターを作るとき、アンテナの正確な位置を入力する必要があります。アンテナの位置は、次のステップで入力しますので、Googleマップなどで緯度経度を割り出しておきましょう。Googleマップで緯度経度を調べるには、パソコンのブラウザであれば、調べたい場所を右クリックして「この場所について」を選択すれば良いです。

緯度や経度、海抜を入力すると、近くの空港を探してきてくれます。私の場合、名古屋ですので

The closest airport found is ICAO:RJGG IATA:NGO near Nagoya.

と表示され、この空港のICAOコードを基にT-RJGGからはじまるRADAR IDが割り当てられました。もっと近くには小牧空港(RJNA)があるのですが、セントレア(RJGG)でしたね。なんでだろ。

Step 4.1 - Receiver selection (in order to run MLAT please use DVB-T stick with dump1090 utility bundled with fr24feed):

 1 - DVBT Stick (USB)
 -----------------------------------------------------
 2 - SBS1/SBS1er (USB/Network)
 3 - SBS3 (USB/Network)
 4 - ModeS Beast (USB/Network)
 5 - AVR Compatible (DVBT over network, etc)
 6 - microADSB (USB/Network)
 7 - SBSx via Basestation (localhost:30006)


Enter your receiver type (1-7)$:1
Checking for dump1090...NOT FOUND

Step 4.3 - Enter your additional dump1090 arguments or leave empty
$:

Step 5.1 - Would you like to enable RAW data feed on port 30002 (yes/no)$:yes

Step 5.2 - Would you like to enable Basestation data feed on port 30003 (yes/no)$:yes

Step 6 - Please select desired logfile mode:
 0 -  Disabled
 1 -  48 hour, 24h rotation
 2 -  72 hour, 24h rotation
Select logfile mode (0-2)$:2

残りは、受信機の設定などです。今回はDVBT Stick (USB)を使っているので、1を選択しました。Step 5.1と5.2のfeedについて、僕はとりあえずyesにしましたが、noで問題ない様です。ログについても、Disabledでも問題ないでしょう。

こうして設定を終えたら、sudo systemctl status fr24feedでデーモンがactive (running)であることを確認しましょう。active (running)であれば、しばらくしてからFlightradar24にログインしなおしたりすると、あなたのアカウントがBusinessになり、「My data sharing」でフィードしている状況が確認できるようになるはずです。

なお、http://beaglebone.local:8754など、BeagleBoneのport 8754にWebブラウザでアクセスすると、fr24feedの稼働状況を見ることができます。ログを出すように設定していれば、tail -f /var/log/fr24feed/fr24feed.logでログを見ることもできるでしょう。

変更履歴

日付 変更者 変更内容
2020/3/8 ytsuboi 作成