cpaczek/skylight · 上手攻略

  • 仓库:cpaczek/skylight
  • 链接:https://github.com/cpaczek/skylight
  • 分类:engineering / SDR · aviation
  • 作者:Tom
  • 更新:2026-08-11

它是什么

Skylight 是一个将头顶飞机实时投影到天花板的开源项目。配合 RTL-SDR 接收器和解码程序,它把 ADS-B 信号渲染成画面:飞机以机型专属图标(宽体客机、支线客机、直升机螺旋桨旋转)叠加在真实星空层(太阳、月亮、行星、ISS 人造卫星)上,投影到天花板上——就像给屋顶装了一扇透视窗。

核心价值:"X光看屋顶" —— 你听到头顶有飞机飞过,它同时也划过你家天花板,标注航班号、机龄型号和目的地。

解决什么问题

飞行爱好者、SDR 玩家、极客父母想给孩子做天文/航空启蒙,往往只能看 Flightradar24 的手机屏幕。Skylight 把这个体验带到物理空间:投影画面有 60fps 流畅动画(通过插值 1Hz ADS-B 数据实现),画面全黑背景,飞机本身是唯一光源,视觉冲击力远超屏幕。

相比 Flightradar24 等 app,Skylight 的差异化是: - 物理空间沉浸感:听到声音的同时看到画面投射到天花板 - 本地运行:不依赖手机,纯离线可跑(搭配 RTL-SDR) - 可录像:可选 PTZ 摄像头自动追踪拍摄投影画面(ADS-B 引导指向 + 视觉混合锁定)

快速安装

无需无线电,最快体验(约 5 分钟)

git clone https://github.com/cpaczek/skylight.git
cd skylight
pnpm install
DATA_SOURCE=api pnpm dev
  • 打开 http://localhost:5173/ 看天花板投影(默认 SFO 机场视角)
  • 用手机访问 http://<本机IP>:5173/control.html 打开控制面板

首次使用:在控制面板 Location 区域设置你的实际位置(搜索城市或输入 lat,lon),否则默认显示旧金山。

搭配 RTL-SDR 接收器(本地解码)

# Debian/Ubuntu 安装驱动
sudo apt-get install rtl-sdr
# Fedora 参考官方脚本
./scripts/install-rtlsdr-fedora.sh

# 启动 dump1090 解码
./scripts/run-dump1090-local.sh

# 以 radio 模式运行
DATA_SOURCE=radio pnpm dev

树莓派 5 部署(常驻终端模式)

完整步骤见 pi-setup/README.md,核心步骤:

# 刷 Raspberry Pi OS 64-bit
# 配置 Wi-Fi + SSH
# 安装 RTL-SDR 驱动 + dump1090
# 部署 Skylight
PI_HOST=skylight.local ./scripts/deploy-to-pi.sh

Docker 部署(无需树莓派)

docker compose up -d --build
# 投影:http://<host>:3000/
# 控制面板:http://<host>:3000/control.html

Docker 镜像默认使用 airplanes.live 免费 API,无需无线电即可运行。

核心用法

硬件配置参考

配件 推荐型号 备注
接收器 RTL-SDR Blog V4 + 随机天线 V3/V5 同款芯片可用
计算 树莓派 5 (8 GB) vision tracker 必需;仅显示可选 4B
投影仪 原生 1080p LED(推荐 Yaber Buffalo Pro U9,约 $150) 不需要短焦,廉价 LED 完全够用
连接 micro-HDMI → HDMI 树莓派 5 是 micro HDMI(非 mini)

控制面板关键设置

  • Location → Current:用浏览器定位自动填入坐标
  • Location → Runways:输入 ICAO 代码(如 EGLL、ZBAA)自动导入机场跑道数据
  • Source:切换 API / Radio 数据源
  • Radius:显示半径,默认 3 英里
  • theme:ambient / telemetry / focus 三种主题

可选:神经飞机检测模型

./scripts/fetch-vision-model.sh   # 下载 YOLOX-Nano ONNX (~3.5 MB)
sudo systemctl restart skylight-tracker
# 验证:tracker 状态显示 vision.net.ready == true

关闭它:tracker.vision.net.enabled = false

调试界面

  • /tracker.html — 摄像头追踪器调试界面(内置模拟器,零硬件可跑完整指向流程)
  • /tv.html — 电视仪表盘(直播流 + 雷达小窗)

典型适用场景

  1. 夜间天文/航空启蒙:在孩子的卧室天花板上投影真实飞机和星空,大人小孩一起看
  2. SDR 玩家桌面装置:搭配 RTL-SDR 做 ADS-B 接收的视觉化展示
  3. 航空摄影师的实时监控墙:在工作室投影一面"天空之墙",实时记录航班
  4. 机场附近咖啡馆/民宿氛围:利用本地机场航班资源做引流装饰

坑与注意

⚠️ 无线电频谱合规:ADS-B 接收本身不违法,但部分国家对该频段发射有规定——Skylight 是纯接收,不发射。

⚠️ 定位必改:默认是 SFO,不改坐标看到的是旧金山或什么都没有。

⚠️ 32 位系统不支持:Raspberry Pi OS 32-bit 上 Node.js 已停止支持,installer 会报 Unsupported architecture: armhf,需要重刷 64-bit 系统。

⚠️ Docker 内访问本地 dump1090:容器内 localhost 不指向宿主机,需要用宿主机 LAN IP(如 http://192.168.1.50:8080/data/aircraft.json),或将两个容器加入同一 Docker 网络。

⚠️ PTZ 摄像头固定:快速转动会破坏云台校准,夹具必须刚性固定。

⚠️ TV 仪表盘时钟不对:显示的是 Pi 系统时间,需 sudo timedatectl set-timezone Asia/Shanghai 校准。

⚠️ ONNX 模型非必需:视觉追踪在无模型时以纯经典算法运行,不影响核心投影功能。

⚠️ API 限流HTTP 429 偶发,Skylight 会自动退避恢复,短暂断连期间飞机会停在屏幕上。

与同类对比

项目 数据源 输出方式 LLM/MCP 难度
Skylight RTL-SDR / airplanes.live API 天花板投影 中(需树莓派/服务器)
Flightradar24 商业数据聚合 手机/网页
Planefinder ADS-B 聚合 网页
dump1090 + map RTL-SDR 网页地图

Skylight 是目前唯一将 ADS-B 数据以沉浸式物理投影方式呈现的开源项目,其他方案均为屏幕显示。定位人群更垂直:SDR 硬件玩家、航空爱好者、创客。

一句话推荐结论

想在天花板上"透视"真实的飞机起降?Skylight 是目前门槛最低、效果最炫的开源方案——RTL-SDR 加一台树莓派就能搞定。


原始仓库:https://github.com/cpaczek/skylight