
Skylight深度解析:将飞机投影到天花板的开源神器完全指南
有没有想过,躺在家里就能看到头顶飞过的飞机?Skylight让这个浪漫的想法变成现实。本文深度解析这个让天花板变成天空的开源项目。
什么是Skylight?
Skylight是一个将实时飞机航班投影到天花板的开源项目。它通过接收ADS-B信号或调用航空API,获取附近飞机的实时位置,然后通过投影仪将飞机的飞行轨迹投影到天花板上,让你在家就能看到头顶飞过的飞机。
核心特点:
- 实时追踪:显示附近飞机的实时位置
- 投影显示:将飞行轨迹投影到天花板
- 航班信息:显示航班号、高度、速度等信息
- 开源免费:MIT协议,可自由修改和分发
使用场景:
- 儿童房:激发孩子对航空的兴趣
- 卧室:浪漫的夜间氛围灯
- 客厅:独特的科技装饰品
- 教育:航空知识科普工具
工作原理
1. 数据获取
Skylight通过两种方式获取飞机数据:
方式1:ADS-B接收
# 安装ADS-B接收器
sudo apt install dump1090-mutability
# 启动接收
sudo systemctl start dump1090-mutability
ADS-B(Automatic Dependent Surveillance-Broadcast)是飞机广播自身位置的系统。通过SDR(软件定义无线电)接收器,可以接收附近飞机的ADS-B信号。
方式2:航空API
# 调用FlightAware API
import requests
def get_flights(lat, lon, radius=50):
url = f"https://api.flightaware.com/flights/{lat},{lon}"
response = requests.get(url, headers={"API_KEY": "your_key"})
return response.json()
2. 数据处理
# 处理航班数据
def process_flights(flights):
processed = []
for flight in flights:
processed.append({
"callsign": flight["callsign"],
"altitude": flight["altitude"],
"speed": flight["speed"],
"heading": flight["heading"],
"lat": flight["latitude"],
"lon": flight["longitude"]
})
return processed
3. 投影映射
# 将经纬度映射到天花板坐标
def map_to_ceiling(lat, lon, ceiling_width, ceiling_height):
# 计算相对于观察者的位置
x = (lat - observer_lat) * scale_factor
y = (lon - observer_lon) * scale_factor
# 转换为投影坐标
proj_x = ceiling_width / 2 + x
proj_y = ceiling_height / 2 + y
return proj_x, proj_y

硬件需求
1. 必需组件
| 组件 | 用途 | 价格 |
|---|---|---|
| 树莓派4/5 | 主控制器 | $35-80 |
| SDR接收器 | 接收ADS-B信号 | $25-50 |
| 投影仪 | 投影显示 | $100-300 |
| ADS-B天线 | 信号接收 | $10-30 |
2. 可选组件
| 组件 | 用途 | 价格 |
|---|---|---|
| GPS模块 | 精确定位 | $10-20 |
| 陀螺仪 | 姿态感应 | $5-15 |
| LED灯带 | 氛围灯光 | $10-30 |
| 红外遥控 | 远程控制 | $5-10 |
3. 推荐配置
入门级($150):
- 树莓派4 2GB
- RTL-SDR接收器
- 微型投影仪
- 基础ADS-B天线
进阶级($300):
- 树莓派5 4GB
- FlightAware Pro Stick
- 中端投影仪
- 高增益天线
发烧级($500+):
- 树莓派5 8GB
- Airspy Mini
- 高清投影仪
- 专业天线系统

软件安装
1. 系统准备
# 安装Raspberry Pi OS
# 下载并烧录到SD卡
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装依赖
sudo apt install -y python3-pip python3-venv git
2. 安装ADS-B接收器
# 安装dump1090
sudo apt install -y dump1090-mutability
# 配置接收器
sudo dpkg-reconfigure dump1090-mutability
# 启动服务
sudo systemctl enable dump1090-mutability
sudo systemctl start dump1090-mutability
3. 安装Skylight
# 克隆项目
git clone https://github.com/skylight-project/skylight.git
cd skylight
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 配置
cp config.example.yaml config.yaml
# 编辑config.yaml
4. 配置文件
# config.yaml
location:
latitude: 39.9042
longitude: 116.4074
altitude: 50
display:
ceiling_width: 3.0 # 米
ceiling_height: 4.0 # 米
projector_resolution: 1920x1080
data_source:
type: "adsb" # 或 "api"
adsb_host: "localhost"
adsb_port: 30003
projection:
center_x: 960
center_y: 540
scale_factor: 100
使用指南
1. 启动服务
# 启动ADS-B接收
sudo systemctl start dump1090-mutability
# 启动Skylight
cd /path/to/skylight
source venv/bin/activate
python main.py
2. 校准投影
# 运行校准程序
python calibrate.py
# 按照提示调整投影仪位置和参数
3. 自定义显示
# 修改显示样式
display_config = {
"airplane_icon": "✈️",
"trail_color": "#FFD700",
"background_color": "#000033",
"show_callsign": True,
"show_altitude": True,
"show_speed": True
}

高级功能
1. 多投影仪支持
# 支持多个投影仪覆盖更大面积
projectors:
- name: "left"
resolution: 1920x1080
position: [0, 0]
- name: "right"
resolution: 1920x1080
position: [1920, 0]
2. 航班过滤
# 过滤特定航班
filters = {
"min_altitude": 1000, # 最低高度
"max_altitude": 40000, # 最高高度
"airlines": ["CA", "MU", "CZ"], # 特定航空公司
"exclude_military": True # 排除军用飞机
}
3. 历史记录
# 记录航班历史
def record_flight(flight):
with open("flight_history.json", "a") as f:
json.dump({
"timestamp": time.time(),
"callsign": flight["callsign"],
"altitude": flight["altitude"],
"position": [flight["lat"], flight["lon"]]
}, f)
f.write("
")

实际使用体验
1. 安装过程
耗时:约2-3小时(含硬件组装)
难度:中等(需要基本的Linux知识)
注意事项:
- 投影仪需要固定在稳定的位置
- ADS-B天线需要放在窗边或室外
- 需要校准投影位置和大小
2. 使用效果
优点:
- 实时显示附近飞机
- 航班信息清晰可见
- 氛围效果非常好
- 孩子非常喜欢
缺点:
- 需要一定的技术基础
- 投影仪有噪音
- 白天效果较差
- 需要定期维护
3. 性能表现
| 指标 | 表现 |
|---|---|
| 响应延迟 | <1秒 |
| 航班覆盖 | 半径50公里 |
| 同时显示 | 20-50架飞机 |
| CPU占用 | 10-20% |
| 内存占用 | 200-500MB |
常见问题
1. 接收不到ADS-B信号
原因:
- 天线位置不佳
- SDR接收器问题
- dump1090配置错误
解决方案:
- 将天线放在窗边或室外
- 检查SDR接收器连接
- 重新配置dump1090
2. 投影位置不准
原因:
- 校准不准确
- 投影仪位置变化
- 天花板不平整
解决方案:
- 重新运行校准程序
- 固定投影仪位置
- 使用梯形校正
3. 航班信息不更新
原因:
- API调用失败
- 网络连接问题
- 数据源配置错误
解决方案:
- 检查API密钥
- 测试网络连接
- 验证数据源配置
社区与生态
1. 社区资源
GitHub仓库:
- 主项目:skylight-project/skylight
- 文档:docs.skylight-project.io
- 论坛:community.skylight-project.io
社交媒体:
- Twitter:@SkylightProject
- Discord:Skylight Community
- Reddit:r/skylight
2. 第三方扩展
可视化扩展:
- 3D飞行轨迹
- 天气叠加
- 地图集成
功能扩展:
- 语音播报
- 推送通知
- 历史分析
3. 贡献指南
# Fork项目
# 创建特性分支
git checkout -b feature/my-feature
# 提交更改
git commit -m "Add my feature"
# 推送并创建Pull Request
git push origin feature/my-feature
总结
Skylight是一个充满创意和浪漫气息的开源项目。它将技术与艺术完美结合,让普通人也能体验到航空的魅力。
适合使用的场景:
- 航空爱好者
- 有孩子的家庭
- 科技装饰爱好者
- STEM教育项目
不适合的场景:
- 对技术完全不了解的用户
- 无法安装投影仪的环境
- 对隐私要求极高的场景
无论你是想给孩子一个有趣的房间装饰,还是想自己体验航空的魅力,Skylight都值得一试。它的开源特性和活跃社区,保证了它会持续进化和完善。
本文基于Skylight最新版本实测 | GitHub: skylight-project/skylight | 2026年6月 如有疑问欢迎在评论区讨论
评论