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— 电视仪表盘(直播流 + 雷达小窗)
典型适用场景
- 夜间天文/航空启蒙:在孩子的卧室天花板上投影真实飞机和星空,大人小孩一起看
- SDR 玩家桌面装置:搭配 RTL-SDR 做 ADS-B 接收的视觉化展示
- 航空摄影师的实时监控墙:在工作室投影一面"天空之墙",实时记录航班
- 机场附近咖啡馆/民宿氛围:利用本地机场航班资源做引流装饰
坑与注意
⚠️ 无线电频谱合规: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