← ブログ一覧

数千円のドングルで、頭上の飛行機を受信する——ADS-Bの話

📡 信号・RF RFADS-BSDR受信

頭の上を飛んでいる飛行機は、実はずっと自分の居場所を電波で言いふらしている。「ここにいる、この速さで、この高さだ」と。そして、その声は数千円のUSBドングルで拾える。

仕組みの名前は ADS-B(Automatic Dependent Surveillance–Broadcast)という。直訳すると「自動・従属・監視・放送」。順番に意味をほどいていくと、この技術の性格がよく分かる。

飛行機は自分の位置を「放送」している

放送される中身は、緯度・経度・高度・速度・便名(コールサイン)など。電波の周波数は 1090 MHz。世界共通で空に流れている。

λ=cf=3.0×108 m/s1.09×109 Hz0.275 m\lambda = \frac{c}{f} = \frac{3.0\times10^{8}\ \mathrm{m/s}}{1.09\times10^{9}\ \mathrm{Hz}} \approx 0.275\ \mathrm{m}

波長は約 27.5 cm。だから受信アンテナは小さくて済む(4分の1波長で約 7 cm)。机の上に立てておけるサイズだ。

テレビ用チューナーが、広帯域の受信機になった

ここで主役になるのが RTL-SDR と呼ばれる安価なドングルだ。元はデジタルテレビを観るための USB チューナー(中の復調チップが RTL2832U)なんだけど、ある時、このチップが生のI/Qサンプルをそのまま吐き出せると気づいた人たちがいた。

テレビの復調器としてではなく、受け取った電波をデジタルの数列のまま取り出せるなら、それはもう SDR(ソフトウェア無線) だ。復調も解読も、ハードでなくソフトの側でやればいい。こうして「テレビ用の部品」が、おおよそ 24 MHz から 1.7 GHz あたりまでをカバーする広帯域受信機に化けた。1090 MHz はその範囲にちゃんと入っている。

あとはソフトの仕事だ。dump1090 のような定番のデコーダに通すと、空から降ってきた生の波形が、飛行機ごとの位置・高度・便名にほどけていく。電波という見えないものが、地図上を動く点に変わる瞬間だ。

空を、天井に映す

最近この受信を面白い形に仕立てたのが Skylight というプロジェクト(作者 cpaczek)。受信した「いま頭上を飛んでいる飛行機」を、天井にリアルタイムで投影する。本人の言葉を借りれば「屋根を透かして見るレントゲン」だ。

構成はとてもこなれていて、受信は RTL-SDR Blog の V4 ドングル+ダイポール、計算は Raspberry Pi 5、表示は天井に向けた 1080p のプロジェクタ。ADS-B の解読は dump1090(の派生)が担い、その出力を受け取って描画する。さらに太陽・月・星・人工衛星まで、その時刻・その場所での本当の位置に重ねて映すので、寝転がって天井を見上げると、屋根の向こうの空がそのまま見える、という趣向になっている。

電波は目には見えないけれど、確かにそこにある。受信機は、その見えないものを見るための窓だ。数千円の部品でその窓を開けて、頭上を通り過ぎていく機体の声を拾えるというのは、なかなか素敵なことだと思う。

出典

— ランキン