見出し画像

RaspberryPiでADS-Bを受信してFlightrader24にフィードしてみた

一部事項はアップデートなどにより変更されていることがあります。ご了承ください。

数年前からFlightrader24というサイトをたまに見ていたのですが無料会員では一部機能に制限がかかっています。そもそもFlightrader24というのは世界中を飛び回っている飛行機の衝突防止のために位置情報などが発せられる電波、ADS-Bを全国の有志たちが受信し、サイト上にアップロード・表示しています。この電波をアップロードすればすべての機能が使えるBusinessプラン(約500ドル/年)が無料で使えるという情報を聞いてやってみました。

必要なもの

まず、電波を受信するためのチューナー

アマゾンなどで探せば似たような商品があると思われますが、料金と配達日数からこれを選択。けっこう発熱するみたいなので下のほうが値段が2倍近くなるけどいいかも。

これらのUSBチューナーのコネクタはMCXといった種類らしいです。しかし、MCXと後述する同軸ケーブルに接続するには別のコネクタに変換したほうが良いので各種変換ケーブルを購入しましょう。私はチューナーのおすすめにあったSMAコネクタに変換するケーブルを何も考えずに買いました。(後にめんどくさいことになったけど)

アンテナはチューナーに伸縮式のものが付属しているのですが、ADS-Bをより良く受信するために別途アンテナを用意します。一般に発売されているコリニアアンテナでも良いのですが、節約のために自分で作ってみました。ネットで探してみると、グランドプレーンアンテナとコリニアアンテナの2つがよく使われているらしいです。

材料の調達のために近くのホームセンターにゴー!したのですが、ここでちょっとした間違えが。ホームセンターで一般に取り扱われている同軸ケーブルはTV用のインピーダンスが75Ωの同軸ケーブル。無線用には50Ωが良いらしいのですが、まぁ、なんとかなるでしょーといった軽い気持ちで75Ωのを購入。ついでに同軸ケーブルにつなげるF型コネクタも一緒に購入。(このときはコネクタの形なんて全く考えてなかった)

同軸ケーブルは5m700円ちょっとで購入。

その後コネクタの形状が違うことに気づいて、ちゃんとコネクタの形状を合わせようとした結果、変換器が多くなってしまいました。

画像1

MCXオス-SMAメス、SMAオス-F型メス、(配線用の同軸ケーブル)、F型メス-F型メス、 F型オス-同軸ケーブル

こんなに複雑になってしまった。減衰が起きてそうなので作るときは変換に気をつけよう!

アンテナの制作

制作の前にお断り。電波に関しては完全なド素人なのでネットの情報をかなり参考にさせていただきました。

グランドプレーンアンテナ

こちらのサイトを参考にさせていただきました。

私は2.0のVVFケーブルの銅線を引っ張り出して作ったんですが、ちょっと太すぎて加工が面倒に。はんだもあまり乗りにくいので太すぎるのも良くないです。

グランドプレーンアンテナは編組部分から下向きにいくつか放射線状に足をつけ(ラジアル)、中心線から上向きにセンターエレメントを付けます。それぞれのラジアルの長さとセンターエレメントの長さは同じ長さ、65mmに統一します。(この65mmはADS-Bの波長の1/4らしいです)そして出来上がったのがこちら。

画像2

中心部のはんだ付けが汚い。。。。。

コリニアアンテナ

コリニアアンテナは同じ長さの同軸ケーブルを交互につなぎ合わせて作ります。こちらのサイトを参考にさせていただきました。段数を多くしすぎるとそれぞれの誤差が積り、アンテナ全体の誤差が大きくなってしまうので数段程度に。私は6段+トップエレメントで制作しました。

同軸ケーブルの外皮の剥き方はDXケーブル直々の解説動画を参考に。

そして出来上がったのがこれです。端っこにF型コネクタを繋ぎました。

画像3

ソフト編_下準備

Raspberry Pi上で受信ができるように設定していきます。

受信関係の設定はすでに多くのサイトがあるので詳しくは書きませんが、一つ、dump1090の設定で手こずったのでそこは丁寧に。

まずは聞き取りなどもできるrtl-sdrを導入します。

導入に必要な各種パッケージのインストール

$ sudo apt-get update
$ sudo apt-get install git
$ sudo apt-get install cmake
$ sudo apt-get install libusb-1.0-0-dev
$ sudo apt-get install build-essential

rtl-sdrをgitからインストール、makeなど

$ git clone git://git.osmocom.org/rtl-sdr.git
$ cd rtl-sdr/
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
$ sudo cp ../rtl-sdr.rules /etc/udev/rules.d/

インストールできたのでチューナーを接続しこちらを実行すると...

$ rtl_test -t

画像4

文字化けしててあきらかにおかしいです。ドライバの読み込み関連での問題らしいので /etc/modprobe.d/rtl-tcp-blacklist.conf というファイルを作成し、下記の内容にします。

blacklist dvb_usb_rtl28xxu
blacklist rtl2830
blacklist dvb_usb_v2
blacklist dvb_core

Rebootしてもう一度rtl_testを実行してみましょう。

$ rtl_test -t
Found 1 device(s):
 0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
usb_claim_interface error -6
Failed to open rtlsdr device #0 .

いい感じの反応が。下2行に error や Failed to open とかが出てきちゃってますがFound 1 deviceの表記があれば特に問題はないです。

試しにチューナーでFMラジオを受信してみる(寄り道)

この内容はおまけなのでADS-Bを受信するにはあまり関係がありませんがやってみましょう。めんどくさい人は飛ばしていただいても構いません。

まずWindows等のPCでSDRソフトをインストールします。ここではSDRSharpを使用します。http://sdrsharp.com/index.php/downloadsのWindows SDR Software Package横にあるDownloadボタンを押してsdrsharp-x86.zipをダウンロード。解凍後、install.batを実行後SDRSharp.exeを実行します。

画像5

このような表示になると思います。

ここで、Raspberry Pi上で以下のコマンドを実行。

$ rtl_tcp -a 0.0.0.0

画像6

PCのSDR#に戻りSource内のプルダウンメニューからRTL-SDR(TCP)を選択した後、歯車アイコンをクリック。表示された設定画面のHostをRaspberry PiのIPアドレスに、Portは1234のままで良いです。Raspberry PiとPC間のインターネット速度に不安がある場合はSample Rateの値を適当に下げておきましょう。

設定が終わったら三角の再生マークを押すとよくあるラジオのノイズ音が聞こえると思います。Radio内のWFMを選択してから上の数字で周波数を変更します。例えば、76.5Mhzの場合76,500,000に設定します。そうすると、FMラジオの音が聞こえます。

本題に戻ってdump1090のインストール...?

次は、1090MHzに乗って送られるADS-Bの信号を変換し、Flightrader24などで見られる位置情報などのデータに変換する必要があります。これを処理するのに一般的にはdump1090が使われているらしいのですが、私の環境の場合うまくmakeできませんでした。(dump1090ではない新しい方法もあるのですが、そちらもダメでした。おそらくRaspi1を使っているからでしょう。)

dump1090の代わりとなるdump1090-faを用います。

$ sudo apt-get install git lighttpd debhelper librtlsdr-dev pkg-config dh-systemd libncurses5-dev libbladerf-dev libusb-1.0-0-dev
$ sudo apt-get install librtlsdr-dev libbladerf-dev dh-systemd libncurses5-dev
$ sudo apt-get install libhackrf-dev liblimesuite-dev
$ mkdir dump1090-fa-make
$ cd dump1090-fa-make
$ git clone https://github.com/flightaware/dump1090 dump1090-fa
$ cd dump1090-fa
$ dpkg-buildpackage -b --no-sign
$ cd ../
$ ls

lsを実行するとDebianのパッケージ(拡張子.deb)がいくつかあると思いますが、今回はdump1090-fa_3.8.0_armhf.debを使います。

$ sudo dpkg -i dump1090-fa_3.8.0_arm64.deb

おそらくこれでdump1090-faがインストールされたので、次にサービスの有効化、開始を行います。

$ sudo systemctl enable dump1090-fa.service
$ sudo service dump1090-fa start

http://192.168.xxx.xxx:8080にアクセスしてみて(ipアドレス部分は各自のラズパイのIPアドレスに適宜変更してください)、

画像9

このようなマップが表示されたらOKです。チューナーにアンテナが刺さっていたら飛行機の位置も表示されます。

ソフト編_Flightrader24にフィード

フィード用のソフトをダウンロード、インストールします。

$ sudo wget http://repo.feed.flightradar24.com/rpi_binaries/fr24feed_1.0.18-9_armhf.deb
$ sudo dpkg -i fr24feed_1.0.18-9_armhf.deb

その後、設定用のスクリプトをインストール、実行します。

$ wget http://repo.feed.flightradar24.com/install_fr24_rpi.sh
$ sudo chmod +x install_fr24_rpi.sh
$ sudo ./install_fr24_rpi.sh

ここからは表示どうりに入力します。

Step 1.1 - Enter your email address (username@domain.tld)
$:<登録に使いたいメールアドレスを入力(確実に受信できるもので。)>

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, pelase use the retrival form:
http://feed.flightradar24.com/forgotten_key.php

Otherwise leave this field empty and continue.
$:<sharing keyを知ってる人は入力してください。初期設定ではおそらく知らないので空白で。>

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

IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!

Step 3.A - Enter antenna's latitude (DD.DDDD)
$:<アンテナ設置位置の緯度>

Step 3.B - Enter antenna's longitude (DDD.DDDD)
$:<アンテナ設置位置の経度>

Step 3.C - Enter antenna's altitude above the sea level (in feet)
$:<アンテナ設置位置高さ(フィートです)>

Using latitude: DD.DDDD, longitude: DDD.DDDD, altitude: FFft above sea level

Validating email/location information...OK

The closest airport found is ICAO:RJTT IATA:HND near Tokyo.

Latitude: DD.DDDD
Longitude: DDD.DDDD
Country: Japan

Flightradar24 may, if needed, use your email address to contact you regarding your data feed.

Would you like to continue using these settings?

Enter your choice (yes/no)$:yes

We have detected that you already have a dump1090 instance running. We can therefore automatically configure the FR24 feeder to use existing receiver configuration, or you can manually configure all the parameters.

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

Step 6A - Please select desired logfile mode:
0 - Disabled
1 - 48 hour, 24h rotation
2 - 72 hour, 24h rotation
Select logfile mode (0-2)$:1    
<これの0から2の選択はログファイルの間隔。>

Step 6B - Please enter desired logfile path (/var/log):
$:/var/log

Submitting form data...OK

Congratulations! You are now registered and ready to share ADS-B data with Flightradar24.
+ Your sharing key (xxxxxxxxxxxxxxx) has been configured and emailed to you for backup purposes.
+ Your radar id is T-RJTTXXX, please include it in all email communication with us.
+ Please make sure to start sharing data within the next 3 days as otherwise your ID/KEY will be deleted.

Thank you for supporting Flightradar24! We hope that you will enjoy our Premium services that will be available to you when you become an active feeder.

To start sending data now please execute:
sudo service fr24feed start

Saving settings to /etc/fr24feed.ini...OK
Installation and configuration completed!

緯度経度高度はネットで調べられます(地理院地図がおすすめ)。以上の設定が終わると入力したメールアドレス宛にメールが届きます。

画像8

このメールが届いたらhttps://www.flightradar24.com/premium/signup?account=freeから同じメールアドレスで会員登録をします。

My Data Sharingからフィードの様子が確認できます。

画像9

この画面に出てくる距離の単位nmはナノメートルではなくて海里です。しばらくおいておき、この画面からフィードが確認できたら送信成功です。

画像10

下にあるこのプロットは受信距離を表示します。私の場合、だいたいこんなかんじの範囲でした。

名称未設定

↑中心(赤丸)の位置を実際の自宅の位置からずらして表示しています。

この表示範囲内の飛行機がすべて受信できるわけではないですが、思っていたより広い範囲で受信することができました。家の東側につけているので受信範囲が非常に東側に偏っていますが、どこか開けた場所に設置したら岡山あたりまで届きそうですね。

さいごに

かんたんに同軸ケーブルで作ったアンテナで思っていたより受信ができたので満足ですが、設置方法などまだまだ改善できる箇所がたくさんあるので少しずつ整えていきたいですね。エアラジオも少し聞けたので電波に関する興味が湧いてきた。。。アマチュア無線でも始めてみようかな

ソフト側の設定で参考にさせていただいたサイト


この記事が気に入ったらサポートをしてみませんか?