目录

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/

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