kendelmccarley/AeroScan

GitHub: kendelmccarley/AeroScan

AeroScan 是一个基于树莓派和 Buildroot 的自包含航空扫描仪,集成 ADS-B 雷达显示、GPS 定位、航图叠加和航空频段收音机于一体。

Stars: 0 | Forks: 0

# AeroScan AeroScan 是一个专为 Raspberry Pi 打造的自包含航空扫描仪:一个雷达屏幕 风格的 Qt GUI,可显示实时 ADS-B 流量(RTL-SDR + dump1090)、GPS 定位、 航图叠加层、航空频段收音机调谐器以及 WiFi/Bluetooth 设备 管理——所有这些均运行在一个最小化的 Buildroot Linux 镜像上,开机即 直接启动该应用程序。它是 [avBadge 2024 "Winglet"](https://github.com/AerospaceVillage/avBadge_2024) 徽章固件的移植版本,将其从定制的 Allwinner T113S 硬件移植到了通用的 Raspberry Pi 硬件上。

AeroScan main menu — arc menu with Radar Scope focused, brand column left, status rail right
Main menu (design-system render of the 800×480 instrument UI)

## 硬件 提供了两个构建目标:**Raspberry Pi 4**(AArch64,基于 KMS/DRM 的 Qt eglfs) 和 **Raspberry Pi 2**(ARMv7,Qt linuxfb)。 **推荐使用 Pi 4 作为目标。** 它的 USB 接口可以直接为 显示器、GPS 接收器和 RTL-SDR 加密狗供电。Pi 2 的板载 USB 供电 余量无法驱动这些外设,因此使用 Pi 2 需要一个带独立电源的 USB 集线器——如果没有,外设的功耗 会导致电压骤降和意外重启。 | 组件 | 备注 | |---|---| | Raspberry Pi 4(推荐)或 Pi 2 Model B | Pi 2 需要带独立电源的 USB 集线器 | | 显示器 | Pi 4:官方 7 英寸 DSI 或兼容的克隆版(自动检测),或 HDMI。Pi 2:Waveshare 800×480 HDMI + XPT2046 电阻触摸屏 (SPI) | | RTL-SDR USB 加密狗 | 设备 0 = ADS-B 1090 MHz (dump1090);可选设备 1 = 航空频段收音机调谐器 | | u-blox GPS 接收器 | NEO-6M 或类似型号,USB 串口 | | USB WiFi 加密狗 | 开箱即支持 RT5370 | | USB Bluetooth 加密狗 (Pi 2) | Pi 4 使用板载 BT;通过 BlueZ D-Bus 进行应用内配对 | ## 构建 需要一台安装了常用 Buildroot 依赖(gcc、make、python3、 wget 等)的 Linux 主机。 ``` git clone AeroScan && cd AeroScan make download-buildroot # one-time: fetch Buildroot 2024.02 # 地图瓦片需要免费的 OpenAIP API key(https://www.openaip.net → Account → API Keys) echo YOUR_OPENAIP_KEY > .openaip-key make rpi4 # configure + full build (or: make rpi2) ``` 将生成的镜像刷入 SD 卡: ``` # oflag=direct + conv=fsync 使 dd 阻塞,直到数据物理写入 # 存储卡——如果没有它们,过早拔出存储卡会悄无声息地损坏 rootfs dd if=output/rpi4/images/sdcard.img of=/dev/sdX bs=4M oflag=direct conv=fsync status=progress ``` 常用目标(完整列表请参见 `Makefile`): | 目标 | 用途 | |---|---| | `make rpi4` / `make rpi2` | 配置 + 构建完整镜像 | | `make menuconfig-rpi4` | 交互式 Buildroot 配置 | | `make savedefconfig-rpi4` | 将配置写回 defconfig | | `make rpi4--rebuild` | 重新构建单个软件包(例如在 GUI 源码更改后运行 `make rpi4-aeroscan-gui-rebuild && make rpi4`) | | `make clean-rpi4` | 移除构建输出 | ## 地图切片 航图切片(OpenAIP 叠加层:空域、机场、NAVAIDs;CONUS, 缩放级别 7–10)**不存储在此仓库中**。它们会在 构建过程中自动下载: - 开发板的 `post-build.sh` 会运行 `tools/fetch-aviation-tiles.py`,该脚本会 填充项目根目录下的 `maps-cache/`,并将切片安装到镜像的 `/opt/winglet-gui/maps` 目录中。 - `maps-cache/` 已被添加到 gitignore,并且在执行 `make clean` 后会保留。首次构建会花费 几个小时进行下载(约 120 MB,进行了速率限制以遵守 OpenAIP 免费 层级的要求);后续构建会从缓存恢复,瞬间完成。 - 下载时需要在 `.openaip-key` 文件(或 `OPENAIP_KEY` 环境变量)中提供 OpenAIP API 密钥。如果没有密钥,构建依然会成功, 只是不会包含地图切片。 - 该密钥会在构建时写入镜像的 `/etc/aeroscan/openaip.key` 文件中,这样以后就可以在设备上通过 `aeroscan-fetch-tiles`(或 `aeroscan-setup`) 刷新切片,而无需重新构建。 ## 首次启动 在首次启动时,根分区会自动扩展以填满整个 SD 卡(`aeroscan-expand-rootfs.service`,在启动早期运行一次,耗时几 秒)。启动后会进入 tty1 shell(由于移植工作仍在积极开发中,Pi 4 镜像上的 GUI 服务被预设为禁用状态)。在 控制台上或通过 SSH 运行 `aeroscan-setup` 来配置 WiFi、显示器 和主机名,然后使用 `systemctl start aeroscan-gui` 启动 GUI,或者直接运行 `aeroscan-gui`。 ## 仓库结构 ``` Makefile Top-level build entry points (wraps Buildroot) aeroscan-gui/ Qt5 application source (radar scope, map, settings, …) buildroot-external/ Buildroot external tree (BR2_EXTERNAL) configs/ aeroscan_rpi2_defconfig, aeroscan_rpi4_defconfig board/rpi2/, rpi4/ config.txt, cmdline.txt, kernel fragments, rootfs overlays, post-build/post-image scripts board/common/overlay/ Shared on-device tools (aeroscan-setup, aeroscan-fetch-tiles, NASR updater) package/ aeroscan-gui and rpi4-wifi-firmware packages tools/ Host-side tile download scripts maps-cache/ (gitignored) build-time tile cache buildroot/, output/ (gitignored) Buildroot tree and build output ``` ## 状态 - **Pi 2**:显示 + 触摸,Qt GUI,ADS-B 正常工作;WiFi 正在调试中。 - **Pi 4**:主要目标。显示器自动检测(首选 DSI,回退到 HDMI),触摸输入旋转,应用内 Bluetooth 配对(BlueZ D-Bus, 屏幕上会显示密钥),音频输出选择(耳机插孔 / HDMI), WiFi 和 SSH。代码已完成;正在进行设备验证。 进一步的设计说明位于 `DEVELOPMENT_PLAN.md` 中。
标签:ADS-B, Buildroot, Linux系统, Qt GUI, 航空电子, 软件定义无线电, 逆向工具