twnoaa 📡🛰️
twnoaa は、気象衛星(NOAA 15/18/19、METEOR-M2シリーズ)や宇宙通信(SSTV/ISS)の軌道計算・通過予測、RTL-SDRによる自動受信、リアルタイムDSP復調、衛星画像デコード、およびマルチモーダルAIによる気象画像解析を統合したオールインワンのデスクトップアプリケーションです。Wails と Svelte 5、Go で構築されており、TWSNMPシリーズプロジェクトの一つです。
🗺️ システム構成・ワークフロー

twnoaa は、衛星の軌道計算(Orbit Tracking)から RTL-SDR による電波受信、リアルタイムDSP処理(スペクトラム&ウォーターフォール)、衛星画像デコード、そしてマルチモーダルAIによる気象解析までの全パイプラインを統合したデスクトップアプリケーションです。
✨ 主な特徴
- 🛰️ 自動軌道計算 & 通過予測 — 内蔵SGP4軌道計算エンジンにより、CelesTrakから最新TLEを自動取得して衛星の可視通過(パス)を正確に予測・自動スケジューリング
- 📻 RTL-SDR 直接制御 & リアルタイムDSP — RTL-SDR(
librtlsdr)を直接制御し、Bias-Tee給電(4.5V)やゲイン調整、リアルタイムのFFTスペクトラム&ウォーターフォール表示に対応 - 🧪 内蔵シミュレーションモード — RTL-SDRハードウェアが手元にない場合でも、模擬信号生成により受信・復調・AI解析の全ワークフローをすぐに体験可能
- 🖼️ 多彩な衛星デコーダー対応
- NOAA APT: FM復調・2400Hz副搬送波検波・フレーム同期相関処理による可視光/赤外線画像合成
- METEOR-M2 LRPT: QPSK復調、Viterbi&Reed-Solomon誤り訂正による高精細マルチスペクトルデジタル衛星画像(衛星時計停止・外れ値に対する自動フォールバック対応)
- SSTV: ISS(国際宇宙ステーション)やアマチュア無線からの宇宙画像デコード(Martin, Scottie等)
- 📡 ISS APRSパケット通信 & リアルタイムモニタ — 国際宇宙ステーション(ARISS)からのAX.25 1200bps AFSKパケットを高感度デュアルブランチ復調し、グリッドロケーター解析やGoogle Maps連携を備えた専用モニタ画面でリアルタイム表示
- 🤖 AI気象解析 & 猫アニメーション — 復調された衛星画像をGemini、OpenAI、Anthropic、ローカルOllamaなどのマルチモーダルAIに連携し、前線・低気圧渦・雲パターンの自動気象分析レポートを生成(思考中の猫アニメーションつき)
- 📼 Rawデータ(I/Q信号)録音 & リプレイ — 受信した生信号をローカルに保存し、後から何度でもリプレイして再デコードやアルゴリズム検証が可能
- 💾 完全ローカル永続化 — 組み込みKey-Valueストア(bbolt)により、受信履歴、衛星画像、AI解析レポートを完全ローカル管理
- 🌐 二言語UI対応 — 日本語と英語の表示切替に対応
🛠️ 必要な機材 (Hardware Requirements)
気象衛星の信号を受信して鮮明な衛星画像をデコードするために必要なハードウェア構成です。
1. SDR 受信機 (Software Defined Radio)

- 推奨モデル: RTL-SDR Blog V3 / V4
- 接続インターフェース: USB 2.0 / 3.0
- 特徴:
- 気象衛星の 137MHz 帯 VHF 電波を高感度に受信可能。
- 内蔵 Bias-Tee(ソフトウェア制御による 4.5V 直流給電機能) を搭載。twnoaa の画面上のスイッチを ON にするだけで、同軸ケーブルを経由してアンテナ直下に配置したアクティブ LNA へ電源を直接供給できます(外部電源アダプタや給電インジェクタが不要)。
2. 受信アンテナ

ベランダの手すりにクランプマウントで設置された 120° Vダイポールアンテナの例
- Vダイポールアンテナ (V-Dipole):
- 137MHz 帯向けエレメント長: 片側 約 53.4 cm(全長 約 107 cm)
- 開き角: 水平面に対して約 120 度の V 字型
- 初心者でも安価に自作またはキットで購入可能。上空を飛行する衛星からの電波を効率的に捉えることができます。
- QFHアンテナ (Quadrifilar Helix):
- 気象衛星が送信する右旋円偏波(RHCP)に最適化された 3D ヘリカル構造のアンテナ。全方位に均一な利得を持ち、低仰角から天頂まで安定した受信が可能です。
- ターンスタイルアンテナ (Turnstile / 交叉ダイポール):
- 90 度位相給電による無指向性円偏波アンテナ。
3. LNA (低雑音増幅器) & バンドパスフィルタ

Nooelec SAWbird+ NOAA LNAモジュール(SMAコネクタ同軸配線、Bias-Tee受電対応)
- 推奨モデル: Nooelec SAWbird+ NOAA または RTL-SDR Blog Wideband / Filtered LNA
- 気象衛星からの電波は宇宙(高度約 850 km)から届く微弱な信号です。アンテナ直下で信号を強力に増幅(利得約 30dB)するとともに、SAW フィルタによって FM 放送(76-108MHz)や携帯電話・業務無線などの強力な混信ノイズを急峻に遮断します。
- 電源供給: twnoaa の Bias-Tee 機能を有効にすることで、同軸ケーブル経由で自動給電されます。
4. 同軸ケーブル & コネクタ
- 50Ω 低損失同軸ケーブル(RG58, 3D-2V, LMR-195/200 等、SMAコネクタ付き)。
📡 アンテナの設置方法と LNA 接続ガイド
微弱な衛星信号からノイズのない鮮明な衛星画像を得るためには、アンテナの設置場所 と LNA の接続順序 が極めて重要です。
アンテナの設置環境
- 見晴らしの確保:
- 屋上、ベランダの手すり、庭のポールなど、上空および南北・東西方向の視界が広く開けた場所に設置してください。
- 周囲の建物、樹木、金属フェンス、電線などの遮蔽物は電波を減衰させ、画像のスノーノイズやライン抜けの原因になります。
- アンテナの向き(Vダイポールの場合):
- V字のエレメントが広がる水平面を地上と平行にし、V字の開口部が「真南および真北」を向くように設置します(極軌道衛星は概ね南北方向に飛行するため)。
LNA(低雑音増幅器)の接続順序
[!IMPORTANT] LNA は必ずアンテナの直近(アンテナ直下)に接続してください!
[アンテナ] ──(数cm〜短尺ケーブル)──> [LNA Input] ──> [LNA Output] ──(長い同軸ケーブル)──> [RTL-SDR ドングル] ──> [PC]
- なぜアンテナ直下に置くのか? 同軸ケーブルを通過した後に LNA を設置すると、ケーブル内で減衰してしまった微弱信号と、ケーブルで拾った都市雑音の両方を増幅してしまい、SNR(信号対雑音比)が改善しません。アンテナで拾った最もピュアな微弱信号を、減衰する前にその場で増幅するのが最大のポイントです。
- 屋外防水: 屋外に設置する LNA は、密閉ケース(防水ボックスやタッパー)に収め、コネクタ部に自己融着テープを巻いて雨水の浸入を防いでください。
- Bias-Tee の有効化: twnoaa の「SDR受信」画面にある Bias-Tee スイッチを ON にすると、同軸ケーブルを通じて LNA へ 4.5V が送電され、LNA 基板の通電 LED が点灯します。
🖥️ 画面と操作方法
twnoaa は、直感的なタブ切り替えインターフェースで衛星追跡から画像解析までシームレスに操作できます。
1. 衛星追跡画面 (Pass Tracker)
![]()
- リアルタイム衛星飛来モニタ:
- 各気象衛星(METEOR-M2 3/4、NOAA 15/18/19)や宇宙通信(ISS、SONATE-2)の現在仰角、方位角、ドップラーシフト、現在位置(緯度・経度)をリアルタイム表示。
- 衛星が受信可能エリアに飛来すると「衛星飛来中」バッジが点灯し、「チューニング&受信」ボタンから即座に受信を開始できます。
- 直近24時間の通過スケジュール:
- CelesTrakから最新TLEを自動取得(手動の「TLE更新」も可能)し、観測地点における通過開始時刻(AOS)、通過終了時刻(LOS)、最大仰角(MEL)、所要時間を一覧表示。
- スケジュール表の「チューニング」ボタンを押すと、周波数やデコーダー設定が自動で受信画面にセットされます。最大仰角が 20° 以上のパスが鮮明な受信に適しています。
2. 3D 地球儀画面 (Globe View)

- 3D 衛星軌道モニタ:
- 宇宙空間から見た高精細な 3D 地球儀上に、全気象衛星のリアルタイム現在位置とフライト軌道線を描画。
- 地上局(地上観測地)から可視範囲にある衛星へリアルタイム追跡ビームが照射され、電波の到来方向を立体的に把握できます。
- APRS 地上局の 3D プロット:
- 受信・デコードされた APRS パケットから送信局の緯度経度を抽出し、3D 地球儀上に地上局マーカー(コールサイン付き)をリアルタイムにプロット。プロット局数をカードに表示。
- 衛星ステータスカード:
- 衛星を選択すると、中心周波数、現在仰角、方位角、ドップラーシフト、緯度・経度・飛行高度(Alt)を表示。
- 受信可能になると「衛星飛来中」バッジが点灯し、「チューニング&受信」ボタンからワンタップで受信画面へ移行できます。
3. 受信テスト画面 (SDR Control & Spectrum)

- ハードウェア制御ヘッダー:
- 接続された RTL-SDR デバイスのステータス(
RTL-SDR デバイス #0 (1件検出))を表示。 - Bias-T(同軸給電 4.5V): 同軸ケーブル経由で LNA に 4.5V を供給するスイッチ。
- シミュレーションモード強制: SDR ハードウェアなしで模擬衛星信号を生成してテストできるスイッチ。
- 受信開始 / 停止: ワンクリックで I/Q ストリーミングを開始。
- 接続された RTL-SDR デバイスのステータス(
- チューニング & 復調器パネル:
- 気象衛星プリセットボタン(METEOR-M2 3/4、ISS、SONATE-2、NOAA 15/18/19)から目的の衛星を選択可能。
- 中心周波数の微調整、チューナーゲイン(手動スライダー / 自動 AGC)の調整。
- 信号録音・復調ステータスとプログレスバー表示。
- リアルタイム FFT スペクトラム・ウォーターフォール:
- 各気象衛星の公称周波数マーカー(METEOR-M2 3/4, NOAA 15/18/19 など)が表示され、信号の位置やドップラーシフトによる周波数変化を視覚的に捉えられます。
4. APRS パケットモニタ画面 (APRS Monitor)

- リアルタイム APRS パケット受信一覧:
- 国際宇宙ステーション(ARISS: 437.825MHz / 145.825MHz)等から送信される AX.25 1200bps AFSK パケットをリアルタイムにデコードして表示。
- 送信元局(From)、宛先・デジピータ中継経路(To / Path)、シンボルアイコン、メッセージペイロード、受信時刻、信号強度(RSSI)を一覧表で直感的に確認可能。
- グリッドロケーター解析 & 地図連携:
- パケットに含まれる Maidenhead Grid Locator(例:
PM96)を自動検出し、緯度経度を即座に計算。 - 「Map」ボタンから Google Maps または aprs.fi をブラウザで直接開き、送信局の位置を地図上で確認できます。
- パケットに含まれる Maidenhead Grid Locator(例:
- 検索フィルタ & ログ管理:
- コールサインやメッセージのインクリメンタル検索、自動スクロールの ON/OFF 切り替え、受信パケットの一括クリアに対応。
5. 衛星画像ギャラリー画面 (Image Gallery)

- デコード済みパス履歴一覧:
- 受信・デコードが完了した衛星パスの履歴を一覧表示。
- 直近5件、高仰角(≥45°)、衛星種別での絞り込みや複数パスの比較選択に対応。
- 各パスの受信日時、最大仰角、生データ(IQ/WAV)の保持状態、SNR レベルを一目で把握可能。
- 高精細画像ビューアー:
- デコードされたカラー/マルチスペクトル衛星画像を表示。クリックすると中心固定ズーム&パン対応の拡大ビューアーが開き、雲のテクスチャや海岸線を詳細に観察できます。
- 画像、信号変化グラフ、複数パス比較、音声再生、FFTスペクトラムの各表示モードを切り替え可能。
- FM 音声レコード再生 & パス別 APRS パケット履歴:
- 画像を伴わない ISS FM 音声パス(クロスバンドレピータ交信等)の録音 WAV ファイルをワンクリックで再生可能。
- パス詳細パネル内に、その通過セッション中に受信・デコードされた APRS パケット一覧をインライン表示。
- オフライン解析 & AI 連携:
- 保存された Raw IQ 信号や WAV ファイルからオフラインで何度でも再デコード可能。
- 「AI気象解析を実行」ボタンから、画像とメタデータをワンクリックで AI 解析画面へ引き継げます。
6. AI 気象解析画面 (AI Analysis)

- マルチLLM連携気象解析エンジン:
- ドロップダウンから解析対象の衛星パスを選択し、「AI気象解析を実行」をクリックするだけで、衛星画像と通過メタデータがマルチモーダル LLM(Gemini / OpenAI / Ollama / Anthropic)へ送信されます。
- 解析実行中は探偵猫キャラクターが思考中アニメーションモーダルで状況をお知らせします。
- 構造化された気象分析レポート:
- 受信サマリー(対象衛星、受信日時、観測地点、最大仰角、画像品質評価)。
- 可視光・赤外線チャンネルの反射率/温度解析、温帯低気圧の渦、寒冷・温暖前線、台風の目、積乱雲の発達状況などを専門気象予報士レベルの考察として出力。
- 「レポートをコピー」ボタンで、マークダウン形式の分析結果をワンクリックでクリップボードにコピー可能。
7. 環境設定画面 (Settings)

- モダンな 2×2 グリッドレイアウト:
- アプリ情報、地上観測地点、SDR受信機、AI/LLM設定を視認性の高い4象限カードレイアウトに整理。
- 観測地点の座標設定:
- 地上観測地点名、緯度 (°N)、経度 (°E)、標高 (km) を設定。
- 「IPアドレスから自動取得」ボタンで、現在地の座標をワンクリックで自動入力可能。
- SDR 受信機 & 自動化設定:
- 衛星通過時の自動録音・デコード: スケジューラーと連動し、衛星が地上局上空を通過する時刻(仰角5°以上)になると自動的に SDR 受信・録音・画像デコードを実行。
- ISS 自動受信モード: 国際宇宙ステーション飛来時の受信モード(APRS / SSTV / FM音声)を用途に合わせて選択可能。
- Bias-T(4.5V 同軸給電)有効化: アンテナ端子から同軸ケーブル経由で LNA への 4.5V 電源供給を制御。
- 自動録音時間 & チューナーゲイン / AGC 設定: パスごとの録音秒数や感度を設定。
- 未加工 Raw IQ 生データ管理: 保存容量やファイル数をリアルタイム表示し、ディスク容量の確認や一括削除に対応。
- LLM プロバイダー設定:
- Google Gemini、OpenAI、Anthropic Claude、ローカル Ollama の API キー、モデル名、プロンプトを柔軟に設定可能。
- UI 言語切替: 画面右上のアイコンから日本語 / 英語をいつでも切り替え可能。
🔍 サポートする衛星・モード
| 衛星・通信 | 周波数 | 変調・モード | 解像度・特徴 |
|---|---|---|---|
| NOAA 15 | 137.620 MHz | APT (FM / AM 2.4kHz Subcarrier) | 4 km/px, 可視光 & 熱赤外線 2チャンネル画像 |
| NOAA 18 | 137.9125 MHz | APT (FM / AM 2.4kHz Subcarrier) | 4 km/px, 可視光 & 熱赤外線 2チャンネル画像 |
| NOAA 19 | 137.100 MHz | APT (FM / AM 2.4kHz Subcarrier) | 4 km/px, 可視光 & 熱赤外線 2チャンネル画像 |
| METEOR-M2-3/4 | 137.100 / 137.900 MHz | LRPT (72k/80k QPSK) | 1 km/px, デジタル高解像度マルチスペクトル画像 |
| ISS (SSTV VHF) | 145.800 MHz | SSTV (FM / PD120, Robot36等) | 国際宇宙ステーションからのイベント宇宙通信画像 |
| ISS (SSTV UHF) | 437.550 MHz | SSTV (FM / 各種SSTVモード) | 近年のUHF実験送信・宇宙通信画像 |
| ISS (FM Voice) | 437.800 MHz | FM Voice (クロスバンドレピータ下り) | 世界中のアマチュア無線交信・宇宙飛行士の肉声 (上り 145.990 MHz) |
| ISS (APRS UHF / VHF) | 437.825 / 145.825 MHz | AFSK 1200 / AX.25 パケット | デジピータ経由の世界中の局の位置ビーコン・メッセージ |
🤖 AI連携による気象解析
衛星画像がデコードされると、受信メタデータ(衛星名、周波数、通過時刻、最大仰角、受信地座標)とともにマルチモーダルLLMへ自動送信され、以下のような分析が自動生成されます:
- 気象パターンの識別: 温帯低気圧の渦、寒冷前線・温暖前線、台風の目、積乱雲群の特定
- 地形・ランドマークの認識: 海岸線、島嶼、半島、雪氷域、海流境界の検出
- 日本語による専門的考察: アマチュア衛星観測者向けの分かりやすく詳細な気象レポート
対応AIプロバイダー
- Google Gemini(
gemini-2.5-flash,gemini-1.5-proなど) - OpenAI(
gpt-4o,gpt-4o-miniなど) - Anthropic Claude(
claude-3-5-sonnetなど) - Ollama(ローカル動作:
llava,minicpm-vなど)
🛠️ 技術スタック
| コンポーネント | 採用技術 |
|---|---|
| デスクトップ基盤 | Wails v2 |
| バックエンド | Go 1.27 + CGO (librtlsdr) |
| フロントエンド | Svelte 5 (Runes) + TypeScript + Tailwind CSS |
| データベース | bbolt(組み込みKey-Valueストア) |
| SDR / DSP | github.com/jpoirier/gortlsdr, ピュアGo DSPエンジン(WFM, QPSK, FFT, I/Q) |
| 軌道計算 | ピュアGo SGP4 伝搬モデル + CelesTrak TLE パーサー |
| AIオーケストレーション | langchaingo + 各種LLM APIクライアント |
| パッケージング | macOS PKG (Apple Notarization 公証対応), Windows ZIP, Linux tar.gz |
🚀 インストールと起動
配布パッケージの利用
Releases より、お使いのOSに合ったパッケージをダウンロードしてください。
- macOS (Apple Silicon):
twnoaa-v0.2.0-darwin-arm64.pkgをダウンロードし、インストーラーを実行してください(Apple公証済み。librtlsdr/libusbランタイム同梱のため追加インストール不要)。 - Windows (x64):
twnoaa-windows-amd64.zipをダウンロードし、任意のフォルダに展開してtwnoaa.exeを実行してください(必要なrtlsdr.dll同梱)。 - Linux (x64):
twnoaa-linux-amd64.tar.gzを展開して実行してください(要librtlsdr0,libwebkit2gtk-4.1-0)。
💻 開発環境のセットアップ
前提条件
- mise(Go、Node.js の管理)
- Wails CLI v2.15+
- RTL-SDR ライブラリ (
librtlsdr):- macOS:
brew install librtlsdr - Ubuntu/Debian:
sudo apt-get install -y librtlsdr-dev libgtk-3-dev libwebkit2gtk-4.1-dev - Windows: prebuilt 64bit DLL & headers
- macOS:
依存関係のセットアップ
# ツールチェーンのインストール
mise install
# フロントエンドの依存関係インストール
cd frontend
npm install
cd ..
開発モード起動 (ホットリロード)
# 開発サーバー起動
mise run dev
# または
wails dev
ビルド
# ローカルビルド
mise run build
# macOS 公証インストーラーパッケージ作成 (Developer ID & notarytool)
mise run release-mac
🗄️ データ保存場所
受信データ、ログ、衛星画像、および bbolt データベースファイルは以下のディレクトリに保存されます。
| OS | デフォルトパス |
|---|---|
| macOS | ~/Library/Application Support/twnoaa/ |
| Windows | %APPDATA%\twnoaa\ |
| Linux | ~/.config/twnoaa/ |