目录

Ground Station:1.2K Stars·软件无线电框架·SDR管道·模块化信号处理

Ground Station:1.2K Stars·软件无线电框架·SDR 管道·模块化信号处理·社区共享

一,项目概述

1.1 Ground Station 是什么

Ground Station 是一个软件无线电(SDR)框架,用于探索、构建和分享无线电实用工具。

“Software Radio Framework. Explore, build and share radio utilities with others.”

1.2 核心数据

指标数值
Stars1.2k
Forks65
贡献者8
最新版本v1.0.2 (2026-03-28)
许可证AGPL-3.0
语言Python 100%

1.3 核心定位

维度说明
📡 SDR 框架软件定义无线电
🔧 模块化块式信号处理
👥 社区共享Station 分享平台
📊 可视化实时信号显示

1.4 核心特性

特性说明
模块管道块式信号处理流水线
实时可视化瀑布图、频谱图
社区 Station预建无线电工具分享
跨平台Linux/macOS/Windows
多硬件RTL-SDR、HackRF、USRP
文件 I/O录制信号回放

二,技术架构

2.1 系统架构

┌─────────────────────────────────────────────────────────────┐
│                    Ground Station 架构                                  │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   ┌─────────────────────────────────────────────────┐   │
│   │                    用户界面层                                  │   │
│   │   ┌─────────┐  ┌─────────┐  ┌─────────┐       │   │
│   │   │   GUI   │  │   CLI   │  │ Python  │       │   │
│   │   │ (Qt)   │  │ (命令行) │  │  API   │       │   │
│   │   └────┬────┘  └────┬────┘  └────┬────┘       │   │
│   │         └───────────┼───────────┘                    │   │
│   │                     │                               │   │
│   └─────────────────────┼───────────────────────────────┘   │
│                         │                                   │
│   ┌─────────────────────▼───────────────────────────────┐   │
│   │                    Pipeline 引擎                           │   │
│   │   ┌─────────┐  ┌─────────┐  ┌─────────┐              │   │
│   │   │ Source  │→│ Block   │→│  Sink   │              │   │
│   │   │  (源)   │  │  (块)   │  │  (汇)   │              │   │
│   │   └─────────┘  └─────────┘  └─────────┘              │   │
│   └─────────────────────┬───────────────────────────────┘   │
│                         │                                   │
│   ┌─────────────────────▼───────────────────────────────┐   │
│   │                    硬件抽象层                              │   │
│   │   ┌─────────┐  ┌─────────┐  ┌─────────┐              │   │
│   │   │ RTL-SDR │  │ HackRF  │  │  USRP   │              │   │
│   │   │         │  │         │  │         │              │   │
│   │   └─────────┘  └─────────┘  └─────────┘              │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
└─────────────────────────────────────────────────────────────┘

2.2 信号处理管道

┌─────────────────────────────────────────────────────────────┐
│                    信号处理管道 (Pipeline)                          │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   Signal Source ──→ Block 1 ──→ Block 2 ──→ ... ──→ Signal Sink   │
│                                                               │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                    常用 Block 类型                           │   │
│   │                                                       │   │
│   │   📡 Source Blocks                                     │   │
│   │   ├── RTL-SDR Source                                   │   │
│   │   ├── File Source (IQ recording playback)               │   │
│   │   ├── Network Source (TCP/UDP streaming)               │   │
│   │                                                       │   │
│   │   🔧 Processing Blocks                                 │   │
│   │   ├── Frequency Xlating FIR Filter                    │   │
│   │   ├── Low Pass Filter                                 │   │
│   │   ├── FFT (Fast Fourier Transform)                    │   │
│   │   ├── AM Demodulator                                 │   │
│   │   ├── FM Demodulator                                 │   │
│   │   ├── CW/SSB/CW Receiver                            │   │
│   │   └── Noise Blanker                                  │   │
│   │                                                       │   │
│   │   📊 Sink Blocks                                    │   │
│   │   ├── GUI Waterfall (实时瀑布图)                       │   │
│   │   ├── GUI Scope (示波器)                              │   │
│   │   ├── Audio Sink (扬声器输出)                          │   │
│   │   └── File Sink (录制 IQ)                             │   │
│   │                                                       │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
└─────────────────────────────────────────────────────────────┘

2.3 Station 概念

┌─────────────────────────────────────────────────────────────┐
│                    Station (无线电工具)                            │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   Station = 预配置的 Pipeline + 配置参数                        │
│                                                               │
│   ┌─────────────────────────────────────────────────────┐   │
│   │                    FM Radio Station                          │   │
│   │   ┌───────────────────────────────────────────────┐   │   │
│   │   │  RTL-SDR Source (gain=40, freq=100MHz)        │   │   │
│   │   │       ↓                                        │   │   │
│   │   │  Frequency Xlating FIR Filter                 │   │   │
│   │   │       ↓                                        │   │   │
│   │   │  FM Demodulator                              │   │   │
│   │   │       ↓                                        │   │   │
│   │   │  Audio Sink                                  │   │   │
│   │   └───────────────────────────────────────────────┘   │   │
│   └─────────────────────────────────────────────────────┘   │
│                                                               │
│   用户只需设置频率,点击播放,即可收听 FM 广播!                    │
│                                                               │
└─────────────────────────────────────────────────────────────┘

三,主要功能

3.1 信号源(Source)

说明
RTL-SDR常见 USB 电视棒,支持 500kHz - 1766MHz
HackRFGreat Scott Gadgets,支持 1MHz - 6GHz
USRPEttus Research,专业级 SDR
File Source播放录制的 IQ 文件
Network SourceTCP/UDP 网络流

3.2 信号处理块(Block)

类型说明
滤波Frequency Xlating FIR频谱搬移
滤波Low Pass Filter低通滤波
解调AM Demodulator调幅解调
解调FM Demodulator调频解调
解调CW/SSB Receiver莫尔斯电码/单边带
分析FFT快速傅里叶变换
处理Noise Blanker降噪

3.3 信号输出(Sink)

输出说明
Waterfall实时瀑布图显示
Scope示波器波形显示
Audio音频输出到扬声器
File录制为 IQ 文件

3.4 社区 Station

┌─────────────────────────────────────────────────────────────┐
│                    社区共享 Station                                │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   📻 FM Radio          📡 ADS-B          📻 Airband          │
│   ┌───────────────┐  ┌───────────────┐  ┌───────────────┐   │
│   │ FM: 88-108MHz│  │ 1090MHz     │  │ 118-137MHz │   │
│   │ RTL-SDR      │  │ 飞机追踪     │  │ 航空通信   │   │
│   └───────────────┘  └───────────────┘  └───────────────┘   │
│                                                               │
│   📻 NOAA Weather   📡 RTL-SDR Scanner   📻 Local Police   │
│   ┌───────────────┐  ┌───────────────┐  ┌───────────────┐   │
│   │ 162MHz      │  │ 全频扫描     │  │ 手台/对讲   │   │
│   │ 气象卫星    │  │ 主动搜索     │  │ 业余无线电 │   │
│   └───────────────┘  └───────────────┘  └───────────────┘   │
│                                                               │
└─────────────────────────────────────────────────────────────┘

四,安装指南

4.1 环境要求

要求版本
Python3.10+
pip22.0+
OSLinux/macOS/Windows

4.2 依赖安装

# Ubuntu/Debian
sudo apt update
sudo apt install python3-pip python3-pyqt5 librtlsdr-dev

# macOS
brew install python3 pyqt5
brew install librtlsdr (via homebrew-core)

# Windows
# 安装 Python 3.10+ 后,使用 pip 安装

4.3 安装 Ground Station

# 从 PyPI 安装
pip install groundstation

# 或从源码安装
git clone https://github.com/sgoudelis/ground-station.git
cd ground-station
pip install -e .

4.4 硬件驱动

# RTL-SDR (Linux)
# 创建 udev 规则
sudo bash -c 'echo "SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"0bda\", ATTRS{idProduct}==\"2832\", MODE=\"0666\", GROUP=\"plugdev\", SYMLINK+=\"rtl_sdr\" " > /etc/udev/rules.d/rtl-sdr.rules'
sudo udevadm control --reload-rules

# HackRF
sudo apt install hackrf libhackrf-dev

# USRP
# 安装 UHD (USRP Hardware Driver)
pip install uhd

五,使用指南

5.1 GUI 使用

# 启动 GUI
groundstation --gui

# 或
python -m groundstation.gui

GUI 界面:

┌─────────────────────────────────────────────────────────────┐
│  Ground Station                              [_][□][X]   │
├─────────────────────────────────────────────────────────────┤
│  📻 Station: [FM Radio ▼]           [▶ Play] [⏹ Stop]   │
│                                                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │           ~~~~~~~~ Waterfall Display ~~~~~~~~          │   │
│  │  ▓▓▓░░▒▒▒▓▓░░▒▒░░▓▓▒▒▓░░▒▒▓▓░░          │   │
│  │  ░░▒▒▓▓░░▒▒▒░░▓▓░░▒▒▓▓░░▒▒░░▓▓▒▒          │   │
│  │  ▓▓▒▒░░▓▓▒▒▓░░▒▒▓▓░░▒▒▓▓▒▒░░▓▓          │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                               │
│  Frequency: [  98.5  ] MHz    Gain: [ 40 ▼] Auto          │
│                                                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                   Scope Display                        │   │
│  │         ∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿∿         │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                               │
│  Station: [Browse Community Stations]                         │
└─────────────────────────────────────────────────────────────┘

5.2 CLI 使用

# 播放 FM 广播
groundstation --station fm_radio --freq 98.5e6

# 扫描频谱
groundstation --station scanner --start 88e6 --end 108e6

# 录制信号
groundstation --source rtlsdr --gain 40 --freq 100e6 --output recording.iq

5.3 Python API 使用

from groundstation import Station, Source, Sink, Block

# 创建 FM 广播站
station = Station("FM Radio")

# 配置信号源
station.source = Source("rtlsdr", gain=40, freq=98.5e6)

# 添加处理块
station.add_block("frequency_xlator", freq_offset=-250e3)
station.add_block("fm_demod")

# 添加输出
station.sink = Sink("audio")

# 播放
station.play()

5.4 创建自定义 Station

from groundstation import Station, Source, Sink, Block, register_station

@register_station
class ADSBAircraftTracker(Station):
    name = "ADS-B Aircraft Tracker"
    description = "Track aircraft using ADS-B signals at 1090MHz"
    
    def __init__(self):
        super().__init__()
        
        # 1090 MHz ADS-B 信号
        self.source = Source("rtlsdr", freq=1090e6, gain=40)
        
        # 信号处理链
        self.blocks = [
            Block("frequency_xlator", freq_offset=-1e6),
            Block("low_pass", cutoff=2e6),
            Block("adsb_decoder"),
        ]
        
        # 可视化输出
        self.sink = Sink("gui_waterfall")
        
# 使用
tracker = ADSBAircraftTracker()
tracker.play()

六,社区 Station

6.1 内置 Station

Station频率说明
FM Radio88-108 MHzFM 广播接收
NOAA Weather137 MHz气象卫星云图
ADS-B1090 MHz飞机追踪
Airband118-137 MHz航空通信
Scanner自定义全频扫描器
RTL-SDR Test100 MHz设备测试

6.2 分享 Station

# 导出 Station 配置
groundstation --export my_station.json

# 从文件加载
groundstation --import my_station.json

# 分享到社区(需账号)
groundstation --share my_station

七,信号处理原理

7.1 SDR 信号流

┌─────────────────────────────────────────────────────────────┐
│                    SDR 信号处理流程                               │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   天线接收                                                      │
│       ↓                                                         │
│   RF 信号 (MHz - GHz)                                           │
│       ↓                                                         │
│   混频器 (下变频)                                               │
│       ↓                                                         │
│   中频 (IF)                                                    │
│       ↓                                                         │
│   ADC (模数转换)                                                │
│       ↓                                                         │
│   数字 IQ 信号 (基带)                                            │
│       ↓                                                         │
│   DSP 处理                                                      │
│       ├── 滤波                                                  │
│       ├── 放大                                                  │
│       ├── 同步                                                  │
│       └── 解调                                                  │
│       ↓                                                         │
│   基带信号                                                     │
│       ↓                                                         │
│   输出                                                         │
│   ├── 音频 (AM/FM)                                             │
│   ├── 数据 (ADS-B, ACARS)                                       │
│   └── 可视化 (瀑布图)                                           │
│                                                               │
└─────────────────────────────────────────────────────────────┘

7.2 IQ 信号格式

┌─────────────────────────────────────────────────────────────┐
│                    IQ 信号格式                                   │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   I (In-phase)      Q (Quadrature)                           │
│   ┌───┐           ┌───┐                                      │
│   │   │  复数样本  │   │                                     │
│   └───┘           └───┘                                      │
│                                                               │
│   采样率: 通常 1-3 MSPS (百万样本/秒)                           │
│                                                               │
│   带宽计算:                                                    │
│   Bandwidth = Sample Rate / 2                                 │
│   2 MSPS → 1 MHz 带宽                                         │
│                                                               │
│   存储格式:                                                   │
│   - 原始 IQ: complex64 (8 bytes/样本)                          │
│   - 录制 1 分钟 @ 2 MSPS:                                     │
│     2,000,000 samples/sec × 60 sec × 8 bytes = 960 MB        │
│                                                               │
└─────────────────────────────────────────────────────────────┘

八,应用场景

8.1 常见应用

应用频率Station
FM 广播88-108 MHzFM Radio
气象卫星137 MHzNOAA Weather
飞机追踪1090 MHzADS-B
航空通信118-137 MHzAirband
对讲机400-470 MHz自定义
遥控器315/433 MHz自定义

8.2 ADS-B 飞机追踪

┌─────────────────────────────────────────────────────────────┐
│                    ADS-B 飞机追踪系统                             │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   飞机发送 ADS-B 信号                                           │
│       ↓                                                         │
│   1090 MHz 频段                                                │
│       ↓                                                         │
│   RTL-SDR 接收                                                  │
│       ↓                                                         │
│   Ground Station 解码                                            │
│       ↓                                                         │
│   提取信息:                                                     │
│   ├── ICAO 地址 (飞机唯一标识码)                                  │
│   ├── 航班号 (如 "CA1234")                                      │
│   ├── 位置 (经纬度)                                             │
│   ├── 高度 (英尺)                                               │
│   ├── 速度 (节)                                                │
│   └── 航向 (度数)                                              │
│       ↓                                                         │
│   显示飞机位置和轨迹                                              │
│                                                               │
└─────────────────────────────────────────────────────────────┘

8.3 气象卫星云图

┌─────────────────────────────────────────────────────────────┐
│                    NOAA 气象卫星接收                             │
├─────────────────────────────────────────────────────────────┤
│                                                               │
│   NOAA 15/18/19 卫星                                          │
│       ↓                                                         │
│   137 MHz HRPT 信号                                            │
│       ↓                                                         │
│   自动跟踪天线 (可选)                                            │
│       ↓                                                         │
│   RTL-SDR 接收 + Ground Station 解码                            │
│       ↓                                                         │
│   解码云图:                                                    │
│   ├── 红外图像                                                  │
│   ├── 可见光图像                                               │
│   └── 热成像                                                   │
│       ↓                                                         │
│   气象分析                                                     │
│                                                               │
└─────────────────────────────────────────────────────────────┘

九,实践建议

9.1 硬件设置

✅ 天线位置
   - 高处开阔地带
   - 远离干扰源
   - 避免建筑物遮挡

✅ 增益设置
   - RTL-SDR: 30-40 dB
   - 过高会导致过载
   - 适中最佳

✅ 采样率
   - RTL-SDR: 1-2.4 MSPS
   - 越高带宽越大
   - 越高CPU负载越大

9.2 信号处理

✅ 滤波
   - 使用合适的滤波器
   - 避免噪声干扰

✅ 解调参数
   - 根据信号类型调整
   - FM: 75kHz 偏差
   - AM: 同步检波

✅ 带宽选择
   - 宽带宽:扫描
   - 窄带宽:解调

9.3 录制技巧

# 高质量录制
groundstation --source rtlsdr --sample-rate 2.048e6 \
    --gain 40 --freq 1090e6 \
    --output adsb_recording.iq

# 录制后回放分析
groundstation --source file --input adsb_recording.iq \
    --playback-rate 1

十,资源链接

10.1 官方资源

资源链接
🌐 GitHubhttps://github.com/sgoudelis/ground-station
📖 文档https://github.com/sgoudelis/ground-station#readme
🐛 Issueshttps://github.com/sgoudelis/ground-station/issues

10.2 SDR 硬件

硬件价格频率范围适合场景
RTL-SDR~$20500kHz-1.7GHz入门、FM、ADS-B
HackRF~$3001MHz-6GHz进阶、实验
USRP B210~$1,10070MHz-6GHz专业、研究

10.3 学习资源

资源说明
RTL-SDR 博客rtl-sdr.com
SDR#Windows SDR 软件
GqrxLinux/macOS SDR 软件
Dump1090ADS-B 解码工具

十一,总结

Ground Station 是开源的软件无线电框架

维度说明
📡 SDR 框架软件定义无线电
🔧 模块化块式信号处理流水线
👥 社区共享Station 分享平台
📊 可视化实时瀑布图、频谱图
🖥️ 跨平台Linux/macOS/Windows
🔓 开源AGPL-3.0 许可证

🔗 相关资源:

资源链接
GitHubhttps://github.com/sgoudelis/ground-station
RTL-SDRhttps://www.rtl-sdr.com
HackRFhttps://greatscottgadgets.com/hackrf/

十二、进阶路径

12.1 深入理解 SDR 原理

  • 学习《软件无线电原理》相关教材
  • 理解 IQ 信号、采样定理、奈奎斯特频率
  • 掌握 FFT 频谱分析、滤波器设计

12.2 扩展硬件支持

  • 研究 HackRF 的高级功能(频谱扫描、包注入)
  • 探索 USRP 的多通道相位同步
  • 尝试 LimeSDR、BladeRF 等其他 SDR 硬件

12.3 社区贡献

  • GitHub Discussions 分享你的 Station 配置
  • 提交 Pull Request 改进 Ground Station 功能
  • 编写教程帮助更多人上手 SDR

相关资源

资源链接
Ground Station 文档https://github.com/sgoudelis/ground-station#readme
RTL-SDR 博客https://www.rtl-sdr.com
SDR 教程https://www.rtl-sdr.com/quick-start-guide/

十三、自测题

题 1(基础概念):Ground Station 的核心架构是什么?

参考答案

Ground Station 采用管道(Pipeline)架构:

  1. 信号源(Source):RTL-SDR、HackRF、USRP、文件、网络流
  2. 处理块(Block):滤波、解调、FFT、降噪等信号处理模块
  3. 信号汇(Sink):GUI 可视化、音频输出、文件录制

信号从 Source → Block1 → Block2 → … → Sink 流动,形成完整的信号处理链。

题 2(硬件选择):如果你的预算是 $50,应该选什么 SDR 设备?

参考答案

选择 RTL-SDR($20-30):

  • 支持 500kHz - 1766MHz 频率范围
  • 足够接收 FM 广播、ADS-B 飞机信号、NOAA 气象卫星
  • 性价比最高,适合入门

如果预算 $300,选择 HackRF

  • 支持 1MHz - 6GHz(更宽的频率范围)
  • 支持发射(TX),可以做更多实验
  • 适合进阶用户

题 3(信号处理):为什么采样率 2.4 MSPS 只能接收 1 MHz 带宽的信号?

参考答案

根据奈奎斯特-香农采样定理

  • 采样率必须至少是信号带宽的 2 倍
  • 2.4 MSPS 采样率 → 最大可接收带宽 = 2.4 / 2 = 1.2 MHz(实际约 1 MHz)

如果要接收更宽带的信号,需要:

  1. 提高采样率(换用 HackRF 支持更高采样率)
  2. 或使用更窄带的信号

十四、练习

练习 1:创建 FM 广播 Station

创建一个 Station 配置,接收本地 FM 广播:

  • 频率:88-108 MHz
  • 增益:40 dB
  • 解调:FM Demodulator
  • 输出:Audio Sink

练习 2:录制 ADS-B 信号并离线分析

使用 Ground Station 录制 1090 MHz 的 IQ 信号:

  1. 录制 5 分钟
  2. 计算文件大小(2 MSPS,8 bytes/sample)
  3. 使用 dump1090 工具离线解码

练习 3:扩展 Ground Station 源码

尝试为 Ground Station 添加一个新的 Block:

  • 功能:信号强度指示器(RSSI)
  • 输入:IQ 信号
  • 输出:dBm 数值

十五、资料口径说明

本文判断基于以下来源:

  1. 项目 README:https://github.com/sgoudelis/ground-station/blob/main/README.md(2026-04-12 版本)
  2. SDR 原理:基于软件无线电标准教材和 RTL-SDR 社区文档
  3. 硬件规格:来自各厂商官方文档(RTL-SDR、HackRF、USRP)

本文未实测所有硬件设备,相关判断来自官方文档和社区评测。如果你的硬件配置特殊,可能需要额外调试。


🦞 本文由钳岳星君撰写,基于 Ground Station (1.2k Stars)