1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIと一緒に挑んだソフトウェア無線開発記:停波の絶望と9千円の機材課金を乗り越えて気象衛星・宇宙の電波を受信したオールインワンアプリ「twnoaa」

1
Posted at

はじめに

「机の引き出しに眠っている数千円のUSBドングル型ソフトウェア無線機(RTL-SDR)で、何か面白いものは作れないだろうか?」

そんな軽い好奇心からAIエージェントと一緒に始めたプロジェクトが、気づけば上空850kmを周回する気象衛星から送られてくる生電波をベランダで直接受信し、高精細な地球の雲画像を復元して、最新のマルチモーダルAIに気象解説までさせるデスクトップアプリケーションへと進化していました。

その名も twnoaa(ティーダブリュー・ノア) です。

twnoaa System Workflow & Architecture
▲ twnoaa の全体アーキテクチャ:衛星追跡からSDR制御、リアルタイムDSP、画像デコード、マルチモーダルAI気象解析までをワンストップで統合

技術スタックは Go + Wails v2 + Svelte 5。SDRの低レベル信号処理から3D地球儀、衛星軌道計算、そしてLLM連携まで、すべてが1つのデスクトップアプリに収まっています。

……と、完成形だけを見ると「SDRや信号処理に詳しい無線ガチ勢が作ったアプリ」に見えるかもしれません。しかし実態は、専門的なデジタル信号処理(DSP)の知識など持たない筆者が、AIエージェントと二人三脚で悪戦苦闘し、喧嘩し、数千円の追加機材に悩み、自然災害や「衝撃の事実」に振り回されながら作り上げたドタバタの開発劇でした。

本記事では、このアプリの機能紹介とともに、noteの日誌(AIといっしょにソフトウェアラジオの実験)に綴ってきたリアルな開発裏話をお届けします。


1. きっかけ:AIに相談して決まった無謀なテーマ

普段はネットワーク管理ツール(TWSNMP)などを開発している筆者ですが、以前購入したまま放置されていた RTL-SDR(USB接続の格安ソフトウェア無線受信機) を見つけました。

RTL-SDR Receiver
▲ 数千円で手に入る RTL-SDR Blog V4 ドングル

「Go言語とRTL-SDRを使って何か面白い実験ができないか?」と、開発の相棒であるAIエージェントに雑談がてら相談してみたのがすべての始まりでした。

最初は「電波時計(JJY)を受信してみよう」と試みたもののあえなく失敗。そこで次にAIが提案してきたのが、

「宇宙から飛んでくる気象衛星の電波(137MHz帯)をキャッチして、上空からの雲画像をリアルタイム復元してみませんか?」

という、なんともロマンあふれるテーマでした。

「宇宙から直接画像を受信するなんて、専用の巨大パラボラアンテナや難解な無線技術が必要なのでは……?」と思いきや、AI曰く「V字型の簡単なダイポールアンテナとRTL-SDRがあれば受信できますよ!」とのこと。

半信半疑ながら、AIの熱意に背中を押されて実験をスタートすることにしました。


2. 自分では絶対書けないプログラムをAIが爆速実装

気象衛星の信号を受信して画像として復元するには、以下のような高度な技術要素が必要です:

  1. 衛星軌道計算(SGP4): CelesTrakからTLE(軌道要素)を取得し、観測地点の上空を衛星が何時何分・どの方位・どの仰角で通過するかを秒単位で予測する。
  2. SDRデバイス直接制御: librtlsdr の CGO バインディングを介して、サンプリングレート、周波数、チューナーゲイン、および同軸給電(Bias-Tee)を制御し、高速な I/Q 生データをストリーミング受信する。
  3. リアルタイムDSP(デジタル信号処理):
    • 周波数変換とドップラーシフト補正
    • リアルタイム FFT によるスペクトラム・ウォーターフォール描画
    • FM復調、帯域制限フィルタリング
  4. 衛星画像デコード処理:
    • 2,400HzのAM副搬送波の検波
    • 同期パルスパターンの相関検出によるフレーム同期
    • ピクセルマッピングと幾何補正・可視光/赤外線のチャンネル合成

SDR Control & Spectrum
▲ twnoaa のリアルタイムスペクトラム・ウォーターフォール受信画面

正直なところ、筆者一人では数学的理論やDSPのコードをゼロから書くことなど到底できません。

しかし、AIエージェントに要件を伝えると、SGP4軌道計算ルーチンから複素数I/Qデータのリアルタイム復調パイプライン、同期相関器まで、Go言語のコードを淀みなく次々と生成してくれました。

「これでプログラム側の準備は万全! あとは衛星が頭上を通過するのを待つだけだ!」と、この時は誰もがすぐに画像が拝めるものと信じて疑いませんでした。


3. 現実の壁とAIとの大喧嘩

ところが、現実はそう甘くありません。

プログラムを走らせ、予告された衛星通過時刻に合わせてアンテナを構えても、スペクトラム画面にはノイズの嵐が吹き荒れるばかりで、衛星の信号などまったく見えないのです。

筆者: 「全然受信できないぞ! コードの復調処理かサンプリング周波数の設定が間違っているんじゃないか?」
AI:   「コードは理論通り完璧です。受信できないのはアンテナの設置場所、周囲の建築物、または都市雑音が原因と考えられます」
筆者: 「いや、ノイズフロアしか上がってないぞ。本当にこのアルゴリズムで合ってるのか?」
AI:   「数学的に正しい処理を行っています。ユーザー様のアンテナの向きと設置環境を再確認してください」

プログラムが悪いのか、アンテナが悪いのか、電波が届いていないのか。目に見えない電波の世界ゆえに原因の切り分けができません。

ベランダの手すりにアンテナを取り付け、角度を変え、向きを南北に合わせ、PCからの放射ノイズを避けるためにUSB延長ケーブルを引き回すなど、炎天下のベランダで汗だくになって試行錯誤を繰り返しました。

ベランダのVダイポールアンテナ *▲ ベランダの手すりにクランプマウントで試行錯誤しながら設置したVダイポールアンテナ*

それでも一向に信号は受からず、苛立ちが募ります。
「もうお前のコードは信用できん!」とAIと言い争いになり、別のLLM(2人目のAI、果ては3人目のAI)を召喚してコードの妥当性をレビューさせたりと、まさに人間とAIの仁義なき泥沼の戦いが繰り広げられました。


4. 迷った末の9千円の機材課金と、自然の猛威

喧嘩していても前には進みません。頭を冷やしてAIと仲直りし、冷静にログと信号レベルを分析したところ、AIからある提案が出されました。

「宇宙からの電波は極めて微弱です。同軸ケーブルを通る間に減衰して都市雑音に埋もれています。アンテナ直下に接続する専用の低雑音増幅器(LNA: Nooelec SAWbird+ NOAA)を導入すべきです」

価格を調べると、約9,000円。

数千円のUSBドングルで遊ぶ気軽な実験のはずが、本体よりもはるかに高価な増幅器を買うべきか……?
「本当にこれを買って受信できる保証はあるのか?」「もし買ってダメだったらどうする?」と、画面の前で数日間AIと押し問答を続けました。

しかし、ここまで来て引き下がるのも悔しい。意を決してAmazonの購入ボタンをポチりました。

Nooelec SAWbird+ NOAA LNA *▲ 葛藤の末に購入した Nooelec SAWbird+ NOAA(アンテナ直下に設置し、Bias-Teeで同軸給電)*

「よし! これで最強の受信環境が整ったぞ!」と息巻いたのも束の間。
届いた直後から猛烈な雷雲、台風、そして秋の長雨が日本列島を直撃。アンテナをベランダに出すことすらできなくなり、実験は強制的に長期中断へと追い込まれたのでした。


5. 新AIモデル登場、そして衝撃の真実

長雨と多忙が重なり、機材を放置すること約1ヶ月。

秋も深まった頃、性能が大幅に向上した新しいAIモデルがリリースされました。「最新の賢いAIなら、この膠着状態を打破できるかもしれない」と、久々に開発環境を立ち上げて実験を再開しました。

そして、新モデルのAIにこれまでの経緯と受信ログをすべて読み込ませ、詳細な現状調査を依頼したところ……画面に信じられない回答が返ってきたのです。

「大変申し上げにくいのですが……受信を試みられているアメリカの気象衛星 NOAA-15、NOAA-18、NOAA-19 のAPT送信機は、機体の老朽化や米国の運用方針見直し(DOGEによる予算削減等の影響含む)により、すでに昨年(2025年)の時点で電波を停止(停波)しています」

「……えっ???」

頭が真っ白になりました。
電波が出ていない。宇宙から何も飛んできていなかったのです。

真夏の炎天下でベランダに出てアンテナの角度をミリ単位で調整した日々も、同軸ケーブルを買い直した努力も、AIと怒鳴り合って喧嘩した夜も、「そもそも最初から電波が止まっていた」 という驚愕のオチ。どんなに完璧なコードを書き、どんなに高級なLNAを噛ませても、受かるはずがありませんでした。

1ヶ月以上にわたる試行錯誤の徒労感に膝から崩れ落ちそうになりましたが、同時に「プログラムやアンテナのせいではなかったんだ」という奇妙な安堵感に包まれた瞬間でもありました。


6. ロシアの気象衛星へターゲット変更、ついに画像が!

しかし、AIは続けてこう言いました。

「ですが、落胆する必要はありません! ロシアの極軌道気象衛星『METEOR-M2シリーズ(Meteor-M2-3 / Meteor-M2-4)』なら、137MHz帯で現在も元気に高精細デジタル画像(LRPT)を送信しています!」

しかも従来のNOAAのアナログAPT(解像度4km/px)に比べ、METEOR-M2のLRPTは72k/80k QPSK変調によるデジタル送信で、解像度1km/pxという圧倒的な美しさを誇ります。

「よし、ロシアの気象衛星を受信しよう!」と方針を即座に転換。
変調方式がアナログFMからデジタルQPSKに変わるため、デコード難易度は跳ね上がりますが、そこは最新AIの腕の見せ所です。QPSK復調器、Costasループ搬送波再生、Viterbiデコーダ、Reed-Solomon誤り訂正といったデジタル通信の粋を集めたパイプラインを、AIが猛スピードで組み上げてくれました。

Pass Tracker
▲ Meteor-M2 の飛来を予測するパストラッカー

そして迎えた、Meteor-M2 が日本の真上(仰角70度以上の好条件)を通過する秋晴れの午前。

ベランダのアンテナにLNAを繋ぎ、twnoaa のBias-TeeスイッチをONにして待機。衛星が地平線から昇ってくると……ウォーターフォール画面中央に、今まで見たこともない太く鮮明なデジタル信号の帯がクッキリと浮かび上がりました!

QPSK Lock: OK
Viterbi BER: 0.002
Frames Decoded: 1420 / 1420
Image Rendering...

プログレスバーが100%に達し、画面に表示された画像がこちらです。

Image Gallery
▲ ついに受信・デコードに成功した衛星画像ギャラリー画面

「映った!!!!」

宇宙から届いた電波が、自作のプログラムを通じて本物の地球の姿として目の前に現れた瞬間の感動は、言葉では言い表せないものがありました。

興奮冷めやらぬまま、画像に映る巨大な黒い影を見て「おいAI! 日本の南にものすごい巨大台風の目があるぞ!」と叫んだところ、AIから冷静に**「いえ、黒い部分は台風ではなく太平洋の海面です。白い部分が雲です」**と突っ込まれたのは今となっては良い思い出です。


7. マルチモーダルAI気象解析機能の誕生

画像がデコードできるようになったことで、開発意欲に再び火がつきました。

「せっかく宇宙から生画像を受信できたのだから、この画像をそのまま最新のマルチモーダルLLM(Gemini、OpenAI、Anthropic Claude、ローカルOllama)に渡して、気象予報士のように解説させたら面白いのではないか?」

そうして実装したのが 「AI気象解析機能」 です。

AI Analysis
▲ デコードされた衛星画像と通過メタデータを元に、AIが気象概況を自動レポート

受信日時、衛星の種類、最大仰角、地上局の緯度経度といったメタデータと共に画像をAIへ送信すると、

  • 可視光・赤外線チャンネルの反射率や雲頂高度の推定
  • 温帯低気圧の渦、前線(寒冷前線・温暖前線)の走向
  • 日本列島の地形と気象パターンの関係

などを専門家レベルの構造化レポートとして自動生成してくれます(解析実行中、画面上で探偵猫が一生懸命推理アニメーションを繰り広げるギミック付きです)。


8. 現在進行形の挑戦:国際宇宙ステーション(ISS)からの電波受信

気象衛星の受信に成功した twnoaa ですが、実験はそこで終わりませんでした。

「同じSDRとアンテナの仕組みを使えば、国際宇宙ステーション(ISS) からの電波も受かるのでは?」

ISSは地上約400km上空を周回しており、アマチュア無線イベントの際には宇宙飛行士からの音声交信や、ロボット36・PD120などのモードでSSTV(スロースキャンテレビジョン=宇宙からの画像通信)、さらにはパケット通信(APRS)を送信しています。

Globe View
▲ 3D地球儀上でリアルタイム追跡される衛星と地上局(追跡ビーム照射)

現在、twnoaa にはSSTVデコーダーやパケット復調機能が順次追加され、ISSが日本上空を通過するタイミングを3D地球儀で捉えながら、宇宙飛行士の肉声や宇宙からの画像を受信する実験を進行形で楽しんでいます。


おわりに:AI時代の「泥臭い」ものづくり

ソフトウェア無線(SDR)は、信号処理や無線工学の高い専門知識が要求されるハードルの高い分野です。以前であれば、門外漢がゼロからデスクトップアプリを組み上げるのは不可能に近かったでしょう。

しかし、生成AIエージェントの力を借りることで、専門外の高度なアルゴリズムであっても形にできるようになりました。

とはいえ、どれほどAIが優秀になっても、

  • ベランダに出てアンテナを設置する
  • 都市雑音や周囲の障害物に頭を悩ませる
  • 高価な追加機材を買うか胃を痛めながら決断する
  • 悪天候に阻まれて待たされる
  • 「そもそも電波が出ていなかった」という物理世界の真実に直面する

といった物理現実の泥臭い試行錯誤は、人間自身が汗をかいて体験するしかありません。そして、そのリアルな壁をAIと一緒に乗り越えたからこそ、最初の1枚の画像がディスプレイに表示されたときの感動は何物にも代えがたいものになりました。

今回開発した twnoaa は、GitHubにてオープンソース(GPL-3.0)で公開しています。手元にRTL-SDRがない方でも、内蔵のシミュレーションモードを使えば受信からAI解析までの全フローを今すぐ体験できます。

ぜひ、机の上のPCから広大な宇宙の電波を感じてみてください!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?