19浏览
查看: 19|回复: 0

[K10项目分享] 行空板K10制作太空站在哪里看板

[复制链接]
本帖最后由 topdog 于 2026-4-12 14:59 编辑

行空板K10制作太空站在哪里看板

一、项目概述1.1 项目背景
国际空间站(International Space Station,简称ISS)是目前在轨运行的最大人造天体,以约7.66公里/秒的速度环绕地球飞行,轨道倾角51.6446°,轨道周期约92.68分钟。由于其高速运动特性,地面观测者能够看到ISS过境的时间窗口通常只有几分钟,因此实时追踪ISS的位置信息对于天文爱好者、科普教育以及航天爱好者具有重要意义。
本项目参考《The MagPi》杂志第96期介绍的树莓派ISS追踪项目,针对行空板K10(国产ESP32-S3教育开发板)进行了完整的移植与功能增强,实现了ISS实时位置显示、轨道预测、宇航员名单查询等功能,并针对嵌入式平台进行了深度优化。

行空板K10制作太空站在哪里看板图1
1.2 硬件平台
行空板K10核心参数:
·      处理器:ESP32-S3双核Xtensa LX7 @240MHz
·      显示屏:2.8英寸TFT LCD,320×240分辨率,ILI9341驱动
·      内存:512KB SRAM + 8MB PSRAM
·      无线:Wi-Fi 4 + Bluetooth 5
·      IO扩展:XL9535 I2C GPIO扩展器

1.3 功能特性
本系统实现了以下核心功能:
  
功能模块
  
实现内容
实时定位
ISS当前经纬度、高度、速度显示
轨道预测
基于轨道力学模型的飞行轨迹推算
宇航员查询
当前在轨宇航员名单(最多12人)
多页面界面
地图页、宇航员页、详情页、统计页
轨迹记录
最近60个位置点的历史轨迹存储
二、系统架构设计2.1 软件架构
系统采用FreeRTOS实时操作系统进行多任务调度,将功能解耦为三个独立任务:
多任务设计的优势:
·      解耦响应:网络请求(可能阻塞)与界面渲染(需要流畅)分离
·      优先级调度:按键响应优先级高于数据获取,确保交互即时
·      双核并行:显示任务独占Core 1,避免与数据任务竞争CPU资源
·      互斥保护:使用xSemaphoreCreateMutex()保护共享数据结构
2.2 数据流设计
数据流从API获取任务流向显示任务,通过互斥锁保护的共享数据结构进行传递。每10秒轮询一次API数据,显示任务以100ms周期刷新界面。

三、核心技术实现3.1 硬件驱动层
3.1.1XL9535 GPIO扩展器驱动
行空板K10使用XL9535 I2C GPIO扩展器管理背光、按键、功放等外设。本项目实现了完整的驱动类,包括pinMode()、digitalWrite()、digitalRead()三个核心方法。
关键引脚映射:
·      P0:LCD背光控制
·      P14:按键A(上一页)
·      P2:按键B(下一页)
·      P17:功放使能(本项目中关闭以节省功耗)
3.1.2LovyanGFX显示驱动
采用LovyanGFX高性能图形库,相比Adafruit_GFX具有DMA传输、Sprite缓冲、中文字体支持等优势。SPI总线配置为40MHz,支持DMA通道自动分配。
3.2 轨道预测算法
这是本项目最具技术亮点的部分。传统ISS追踪器仅显示当前位置,本系统实现了基于轨道力学的轨迹预测。
ISS轨道参数:
·      轨道倾角:i = 51.6446°
·      轨道周期:T = 92.68分钟
·      角速度:ω = 360°/T ≈ 3.883°/分钟
·      地球自转:ω_E = 0.25°/分钟
轨道预测公式:
纬度: lat = arcsin(sin(i) × sin(u))
经度偏移: Δλ = arctan(cos(i) × sin(u) / cos(u))
关键优化:
·      日期变更线处理:避免在±180°经度处画出穿越屏幕的直线
·      升降段判断:通过连续两个位置点的纬度变化确定轨道方向
·      过去轨迹:灰色显示约40%周期(约37分钟)的历史轨迹
3.3 图像资源处理
  
资源文件
  
尺寸
格式
用途
bluemarble_320x240.h
320×240
RGB565
地球背景图
iss_icon_trans40x40.h
40×40
RGB565+透明
ISS图标
3.4 多页面用户界面
系统设计了四个功能页面,通过按键A/B切换:
页面1:地图页(PAGE_MAP)
·      地球背景图(蓝色弹珠)
·      ISS当前位置图标
·      预测飞行轨迹(青色=未来,灰色=历史)
·      实时经纬度显示、升降段状态指示(ASC/DESC)
行空板K10制作太空站在哪里看板图4
页面2:宇航员页(PAGE_ASTROS)
·      当前在轨宇航员名单,双列布局,最多显示12人
行空板K10制作太空站在哪里看板图3
页面3:详情页(PAGE_DETAILS)
·      ISS精确坐标(4位小数)、轨道高度、飞行速度、数据更新时间戳
行空板K10制作太空站在哪里看板图2
页面4:统计页(PAGE_STATS)
·      轨迹记录点数、WiFi信号强度、数据有效性状态
行空板K10制作太空站在哪里看板图5
四、网络通信实现4.1 API接口说明
WhereTheISS.atAPI(主要数据源):
响应字段:latitude, longitude, altitude,velocity, visibility, timestamp
Open-NotifyAstros API(宇航员数据):
响应字段:number, people[{name, craft}]
4.2 HTTPS支持
ESP32-S3原生支持HTTPS,但需要注意证书验证默认关闭以节省资源。超时设置:15秒(ISSAPI)、5秒(Astros API)。
4.3 错误处理与重定向
代码实现了HTTP 301/302重定向处理,当API返回重定向响应时自动跟随新的Location地址。
五、性能优化策略5.1 内存优化
  
优化项
  
实现方式
效果
Sprite缓冲
仅地图页使用全屏Sprite
减少约30KB RAM占用
轨迹存储
循环队列,固定60点
避免动态内存分配
JSON解析
使用ArduinoJson动态分配
按需释放
字体加载
使用内置efontCN
避免SD卡读取延迟
5.2 渲染优化
采用Sprite离屏渲染:先绘制地球背景、轨迹线、ISS图标到缓冲区,最后一次性推送屏幕。优势包括避免屏幕闪烁、提高帧率(地图页约10fps)、减少SPI传输次数。
5.3 电源管理
通过关闭功放降低功耗,P17引脚设置为低电平。
六、编译与部署6.1 开发环境
·      Arduino IDE 2.x 或 PlatformIO
·      ESP32 Board Package: 3.0.x
·      依赖库:LovyanGFX (^1.1.x)、ArduinoJson(^7.0.0)
6.2 编译配置
PlatformIO配置示例:
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
build_flags: -DBOARD_HAS_PSRAM,-mfix-esp32-psram-cache-issue
6.3 部署步骤
1.  连接行空板K10至电脑USB口
2.  选择开发板:ESP32S3 Dev Module
3.  配置PSRAM:OPI PSRAM
4.  上传代码
5.  修改WiFi SSID和密码
6.  重启设备

七、总结与展望7.1 项目成果


项目开源分享地址:https://gitee.com/pdtopdog/k10_-space-station-tracker
本项目成功实现了基于行空板K10的ISS实时追踪看板,具有以下特色:
·      轨道预测功能:超越传统追踪器的静态显示,实现了基于轨道力学的轨迹预测
·      多页面UI设计:信息分类清晰,操作简便
·      深度嵌入式优化:FreeRTOS多任务、Sprite缓冲、内存管理
·      国产教育平台:展示了国产硬件平台的潜力和可扩展性
7.2 改进方向
  
改进项
  
描述
离线TLE
内置SGP4算法,支持离线轨道推算
GPS模块
获取本地坐标,计算过境时间
太阳能供电
实现便携式户外使用
3D地球
使用纹理映射显示三维效果
附录A:代码结构说明
主程序结构(1040行):
  
行号范围
  
功能模块
1-45
头文件引用、宏定义、全局配置
46-175
XL9535驱动类、LGFX显示类、数据结构定义
176-500
绘图函数(地图、轨迹、ISS图标等)
501-773
页面绘制函数(4个页面)
774-882
API数据获取函数
883-961
FreeRTOS任务函数
962-1040
setup()、loop()主函数




附录B:参考资料
7.  WhereTheISS.at API文档:https://api.wheretheiss.at/v1/docs
10. The MagPi #96: ISS Tracker项目
11. ISS轨道参数:https://spotthestation.nasa.gov/




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail