頭の上を飛んでいる飛行機は、実はずっと自分の居場所を電波で言いふらしている。「ここにいる、この速さで、この高さだ」と。そして、その声は数千円のUSBドングルで拾える。
仕組みの名前は ADS-B(Automatic Dependent Surveillance–Broadcast)という。直訳すると「自動・従属・監視・放送」。順番に意味をほどいていくと、この技術の性格がよく分かる。
飛行機は自分の位置を「放送」している
- Broadcast(放送):レーダーのように地上から問いかけて跳ね返りを測るのではなく、飛行機の側から一方的に情報を撒く。受信機さえあれば誰でも聞ける。
- Dependent(従属):その位置情報は、飛行機が自分の GNSS(GPS など) で割り出したものに頼っている。地上が測るのではなく、機体が「自分はここだと思う」を言っている。
- Surveillance(監視):管制やお互いの飛行機が、空の交通状況を把握するために使う。
放送される中身は、緯度・経度・高度・速度・便名(コールサイン)など。電波の周波数は 1090 MHz。世界共通で空に流れている。
波長は約 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(の派生)が担い、その出力を受け取って描画する。さらに太陽・月・星・人工衛星まで、その時刻・その場所での本当の位置に重ねて映すので、寝転がって天井を見上げると、屋根の向こうの空がそのまま見える、という趣向になっている。
電波は目には見えないけれど、確かにそこにある。受信機は、その見えないものを見るための窓だ。数千円の部品でその窓を開けて、頭上を通り過ぎていく機体の声を拾えるというのは、なかなか素敵なことだと思う。
出典
- Skylight プロジェクト(ADS-B を受信して頭上の航空機を天井に投影): GitHub
cpaczek/skylight— RTL-SDR Blog V4+ダイポール、Raspberry Pi 5、1080p プロジェクタ、dump1090 系デコーダ、太陽・月・星・衛星の実位置表示を確認。 - RTL-SDR(RTL2832U を用いた安価な広帯域 SDR、概ね 24 MHz–1.7 GHz)の背景は RTL-SDR コミュニティの一般的な情報による。
- ADS-B が 1090 MHz・GNSS 由来の位置をブロードキャストする点、dump1090 による Mode S/ADS-B 復号は、航空無線の標準的な事実。
— ランキン