返回首页

Skylight深度解析:将飞机投影到天花板的开源神器完全指南

封面图

Skylight深度解析:将飞机投影到天花板的开源神器完全指南

有没有想过,躺在家里就能看到头顶飞过的飞机?Skylight让这个浪漫的想法变成现实。本文深度解析这个让天花板变成天空的开源项目。

什么是Skylight?

Skylight是一个将实时飞机航班投影到天花板的开源项目。它通过接收ADS-B信号或调用航空,获取附近飞机的实时位置,然后通过投影仪将飞机的飞行轨迹投影到天花板上,让你在家就能看到头顶飞过的飞机。

核心特点

  • 实时追踪:显示附近飞机的实时位置
  • 投影显示:将飞行轨迹投影到天花板
  • 航班信息:显示航班号、高度、速度等信息
  • 开源免费:MIT协议,可自由修改和分发

使用场景

  • 儿童房:激发孩子对航空的兴趣
  • 卧室:浪漫的夜间氛围灯
  • 客厅:独特的科技装饰品
  • 教育:航空知识科普工具

工作原理

1. 数据获取

Skylight通过两种方式获取飞机数据:

方式1:ADS-B接收

# 安装ADS-B接收器
sudo  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"],
            "": 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

projector

硬件需求

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
  • 高清投影仪
  • 专业天线系统

app

软件安装

1. 系统准备

# 安装Raspberry Pi OS
# 下载并烧录到SD卡

# 更新系统
sudo apt  && sudo apt  -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
 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
}

setup

高级功能

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("
")

sky

实际使用体验

1. 安装过程

耗时:约2-3小时(含硬件组装)

难度:中等(需要基本的知识)

注意事项

  • 投影仪需要固定在稳定的位置
  • 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. 社区资源

仓库

  • 主项目: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月 如有疑问欢迎在评论区讨论

常见问题

什么是Skylight?

>什么是Skylight?Skylight是一个将实时飞机航班投影到天花板的开源项目。它通过接收ADS-B信号或调用航空API,获取附近飞机的实时位置,然后通过投影仪将飞机的飞行轨迹投影到天花板上,让你在家就能看到头顶飞过的飞机。 核心特点: 实时追踪:显示附近飞机的实时位置 投影显示:将飞行轨迹投影到天花板 航班信息:显示航班号、高度、速度等信息 开源免费:MIT协议,可自由修改和分发 使用场景: 儿童房:激发孩子对航空的兴趣 卧室:浪漫的夜间氛围灯 客厅:独特的科技装饰品 教育:航空知识科普工具

评论