Edited at

FreeBSDでADS-B

確かAitendoがまだ古い店の頃に買った、RealtekのSDRなモジュールがあり放置していたのですが、今日(6/1)は電波の日という事なので、使ってみる事しました。

70726f647563742f32303134303930385f6437353366392e706e67003235300000660066.jpg

調べてみたところこれに対応したrtl-sdrというライブラリとコマンドのオープンソースがあるようです。とりあえずこれをコンパイルしてみました。ソースをgitでタウンロードしてビルドしてinstallしましたが、portsにもあるようです。FMを受信するコマンドなどもあるようですが、私の環境にはサウンド出力がなかったので、試していません。

このライブラリを使ったADS-B(航空機が出している1090MHzの衝突防止用の無線信号)を処理してくれるdump1090というコマンドラインツールがあります。これもportsにあります。

dump1090.png

前々から自宅付近から航空機が飛んでいくのが見えてどこに行くのかなと興味がありました。

dump1090はforkしたものの方が、高機能なのですがとりあえずportsにあるオリジナルをコンパイルして使ってみました。

dump1090コマンドラインのUIとブラウザでの表示機能があります。

dump1090に--netオプションを指定して起動して、そのホストの8080ポートをブラウザでアクセスするとこんな感じです。

スクリーンショット(2017-06-01 20.00.49).png

とあり合えずamd64で確認をして動作したのでZRouterのprofileに追加して、mipsなターゲットで試してみました。最初RT3050で試したのですが、うまく動かずAtherosのAR9なモジュールで試したところちゃんと動きました。RT3050のUSBはあまり調子が良くないです。

rtl-sdrは、gitのsubmoduleでcontribにいれてdump1090はports形式で放り込みました。

製品に付属のアンテナはADS-B用ではないので、ここを参考にとりあえず有り合わせの部品でこんなものを作ってみました。

IMGP0541.JPG

いわゆる垂直ダイポールアンテナで二分の一波長の140mmくらいのものです。こんなチープなアンテナでも自宅の木造家屋の1階においておくと北側は入るのですが、南側は1mくらいの土留めで塀があるので入りが悪いです。とはいえ2階で試したらざっくり2倍くらい良く入ります。やはりアンテナが重要です。周波数が高いので、波長が短く小さいアンテナで良いのですが、いろいろ工夫の仕方で効率が変わってくるようです。

アンテナの詳しい解説のページ

後日追記:コリニアアンテナも作ってみました。

蟹さんのSDRができるUSBモジュールはもう一つ持っていたのですが、認識はされるのですが、チップの構成が違うためか、まったくデータが出力されませんでした。蟹さんだからすべて使える訳ではないようです。使えてる方はtunerがR820Tで使えない方はFC0012でした。

アンテナ線との接続は使えないモジュールに付属していたFコネクタへの変換を使っています。

flightradar24は個人が収集したデータをまとめて使用しているようです。このためのサーバにアップするコマンドはバイナリで提供されていてLinux版しか無いようです。オープンソースでもなく、APIの公開も無くなんか前時代的な感じです。

googlemapのjsでのアクセスにAPI Keyが必須になったようです。

スクリーンショット(2018-06-15 15.47.09).png

正しく表示するためにはgmap.htmlのmaps.googleapis.comへのアクセス部分にkeyを取得して設定する必要があります。

2018/7にgoogle map javascript apiはkeyの支払い登録をしないと機能しなくなったようです。

仕方がないので、国土地理院の地図を使ったJSを書いてみました。