Repository navigation
Releases: hansgao0422/FlightMate
Release list
FlightMate V1.17
FlightMate V1.17
FlightMate 是为 LilyGO T-LoRa Pager 制作的便携飞行信息工具,提供机场与 METAR、离线地图、GPS 飞行数据、飞行日志和实时航班雷达。
V1.17 本版更新
- 正式航空气象报文继续优先查询 AviationWeather:先查最近 2 小时,再查最近 24 小时。
- 只有 AviationWeather 明确返回无报文(HTTP 204,或 HTTP 200 但内容为空/过短)时,才使用机场坐标查询 Open-Meteo 当地天气。
- 回退内容明确显示为
WEATHER / LOCAL WX,不会伪装成 METAR;显示温度、湿度、风向/风速、能见度和海平面气压。 - METAR 与 LOCAL WX 分别记录缓存来源;重启后回退缓存显示为
WEATHER / LOCAL WX CACHE。 - AviationWeather 的 TLS、网络或其他 HTTP 错误不会触发回退,便于区分“没有报文”和“查询失败”。
- 沿用 V1.16 的 275 条机场记录,其中覆盖 260 个具有公开 ICAO 代码的中国大陆定期客运机场,包括徐州
ZSXZ / XUZ。
适用硬件与固件环境
| 项目 | 规格 |
|---|---|
| 开发板 | LilyGO T-LoRa Pager V1.0 |
| 主控 | ESP32-S3 |
| Flash / PSRAM | 16 MB / 8 MB |
| 屏幕 | ST7796U,480×222 |
| 构建环境 | Arduino CLI 1.5.1、Arduino-ESP32 3.3.10、ESP-IDF 5.5.4 |
| 分区方案 | app3M_fat9M_16MB |
主要功能
主界面
- 四个入口:AIRPORT、FLIGHT、LOGBOOK、SETTINGS。
- 顶部中央显示设置时区对应的当地时间;时间未同步时显示 --:--。
- 支持旋钮、WASD 和 ENTER 操作。
机场看板与 Radar
- 以 GPS 或手动坐标为中心,在 150 km 内匹配最近机场。
- 内置 275 条机场记录,其中覆盖 260 个具有公开 ICAO 的中国大陆定期客运机场。
- 显示最近机场、距离、方位、UTC 时间和最新正式 METAR;机场无报文时显示明确标注的 LOCAL WX。
- 气象查询需要 Wi-Fi;Open-Meteo 回退不需要单独设置或密钥。
- 机场卡片中的 RADAR 按钮可进入 Flight Radar。
- Radar 以有效 GPS 坐标为中心;无有效定位时使用设置中的手动经纬度。
- OpenSky 提供附近航班位置、呼号、高度和航迹;未填写 OAuth 凭据时使用匿名模式。
- TYPE 优先通过 ADSBDB 的 ICAO24 查询获得,OpenSky category 作为回退。
- 扫描动画采用原 FlightRadar 风格的 34° 线状绿色拖影,节奏为 50 ms / 3°。
- 雷达半径可选 40 / 80 / 120 / 160 / 250 NM,默认 80 NM。
Flight 飞行页
- 左侧显示 SD 卡离线地图,右侧显示速度、高度、航向、经纬度、卫星数和 HDOP。
- KM/H、M、DEG 使用同一右边界对齐。
- 设置航班号后,航班号显示在地图定位点旁,并自动避开地图边界。
- 支持 WASD 平移、Q/E 缩放、C 回到当前位置。
飞行日志
- 支持浏览、创建和编辑飞行日志。
- 航班号设置与日志数据彼此独立,不改变原有日志字段。
熄屏与低功耗
- 自动熄屏后进入最低背光的信息页,显示当地时间、航班号和唤醒提示。
- 熄屏字体颜色为正常界面的约 50%,系统分钟变化时立即刷新时间。
- 熄屏页不显示产品名、版本号或 SCREEN OFF;任意按键或旋钮操作可唤醒。
- POWER OFF 使用 BQ25896 切断电池供电路径,不再配置 BOOT/GPIO deep-sleep 唤醒源。
- 黄键长按 2 秒会显示 RELEASE TO POWER OFF,松开后关机;短按黄键仍切换符号模式。
- 必须先拔掉 USB 才能彻底关机;关机后长按实体 PWR 键约 1 秒或连接 USB 开机。
注意:自动熄屏页仍保持 LCD 工作,因此功耗高于 V1.10 的完全关闭屏幕。需要长时间不用设备时请拔掉 USB 后使用 POWER OFF。
与 V1.10 的关系
V1.17 保留 V1.10 的 Wi-Fi 隔离、航班号、机场/METAR、离线地图和飞行日志功能,并累计增加 Radar、OpenSky/ADSBDB、熄屏信息页、界面修正、BQ25896 硬件关机、完整的中国大陆民用运输机场覆盖,以及无 METAR 机场的 LOCAL WX 回退。完整差异见 UPGRADE-FROM-V1.10.md;从 V1.16 升级见 UPGRADE-FROM-V1.16.md。
首次使用
- 刷写固件并重启设备。
- 进入 SETTINGS,设置 WI-FI SSID、WI-FI PASSWORD、TIMEZONE 和 FLIGHT NUMBER。
- 确认 GPS 为 ON;室外等待定位,或填写 MANUAL LAT、MANUAL LON 作为 Radar 回退中心。
- OpenSky 凭据可留空使用匿名模式;需要认证模式时填写 OPENSKY CLIENT ID 和 OPENSKY SECRET。
- 设置 RADAR RADIUS,返回机场页并按 ENTER 打开 Radar。
常用按键
| 页面 | 操作 |
|---|---|
| 全局 | H 返回主界面,B 切换键盘灯,黄键长按 2 秒后松开执行硬件关机 |
| 主界面 | 旋钮或 WASD 选择,ENTER 打开 |
| 机场 | ENTER 打开 Radar,R 刷新天气,L 调节屏幕亮度 |
| Radar | R 刷新航班,S 进入 Radar 设置,Q/H 返回 |
| Flight | WASD 平移,Q/E 缩放,C 回中,L 调节亮度 |
| 日志列表 | N 新建,W/S 或旋钮选择,ENTER 查看 |
| 设置 | W/S 或旋钮选择,ENTER 修改 |
离线地图目录
固件会依次尝试以下瓦片路径:
/FlightMate/maps/base/osm/{z}/{x}/{y}.png
/maps/base/osm/{z}/{x}/{y}.png
manifest 可放在:
/FlightMate/maps/manifest.json
/FlightMate/manifest.json
/maps/manifest.json
/manifest.json
地图缩放范围为 1~9。manifest 缺失时仍会尝试直接读取瓦片。
从 V1.10 / V1.13 / V1.15 / V1.16 升级
推荐仅更新应用,保留 Wi-Fi、航班号、时区、亮度、GPS 和手动坐标等 NVS 设置:
FLASH_APP_ONLY_FLIGHTMATE_V1.17.bat COM7
将 COM7 替换为设备实际串口。从 V1.16 升级到 V1.17 时,只新增天气回退、缓存来源和对应界面标签;设置、分区、机场表、Radar 和关机方式保持兼容。
其他刷写方式
写入 bootloader、分区表、boot_app0 和应用,但不主动擦除 NVS:
FLASH_FLIGHTMATE_V1.17.bat COM7
清除整个 Flash 后重新安装:
ERASE_AND_FLASH_FLIGHTMATE_V1.17.bat COM7
完整恢复镜像 FlightMate-V1.17-merged-16MB.bin 从 0x0 写入,会覆盖设备中的设置和数据,仅建议用于故障恢复或全新安装。
镜像地址
| 文件 | 地址 |
|---|---|
| FlightMate-V1.17-bootloader.bin | 0x0 |
| FlightMate-V1.17-partitions.bin | 0x8000 |
| FlightMate-V1.17-boot_app0.bin | 0xE000 |
| FlightMate-V1.17-app.bin | 0x10000 |
| FlightMate-V1.17-merged-16MB.bin | 0x0 |
Radar 网络与日志
-
航班位置和 TYPE 查询需要 Wi-Fi;GPS 定位本身仍在设备本地工作。
-
认证 OpenSky 的刷新周期为 60 秒,匿名模式为 240 秒;也可在 Radar 页按 R 手动刷新。
-
每轮最多查询前 4 架未缓存飞机的 TYPE,内存缓存容量为 12 架,避免连续请求外部接口。
-
串口波特率为 115200。TYPE 排查时关注:
[RADAR] state icao=... fields=... category=... fallback=...
[RADAR] type icao=... http=... resolved=... -
天气排查时关注:
[WEATHER] request icao=... hours=... http=...
[WEATHER] local icao=... http=... summary=... detail=...
[WEATHER] final icao=... source=... status=... -
关机排查时关注:
[POWER] yellow key released; requesting hardware power off
[POWER] hardware power off requested; bus=... power_good=... vbus=...mV
[POWER] USB input present; unplug USB for BQ25896 BATFET shutdown -
串口输入 help 可查看诊断命令,包含 status、gps、sd、map、heap、tasks、weather refresh、radar refresh 和 logs rebuild。
构建与校验
- Arduino CLI 构建通过:程序存储 1,696,029 字节(53%),全局 RAM 66,848 字节(20%)。
- App BIN 为 1,696,176 字节;合并镜像为 16,777,216 字节。
- bootloader、App 和 merged image 已通过 esptool checksum 和 validation hash 检查。
- 合并镜像在 0x0 / 0x8000 / 0xE000 / 0x10000 与四个独立镜像逐字节匹配。
- 文件 SHA-256 见 SHA256SUMS.txt;ZIP 校验见外层 FlightMate-V1.17-ZIP-SHA256SUMS.txt。
V1.17 已完成联网接口、源代码、构建、镜像和封包验证,但本轮未连接设备完成最终实机验收。请在徐州或临时设置手动坐标 34.2044, 117.2858,确认机场看板显示 ZSXZ,并在正式 METAR 缺失时显示 WEATHER / LOCAL WX;再切换到北京首都机场附近,确认有报文时仍显示 METAR / LIVE。GPS、显示布局、Wi-Fi/TLS、缓存恢复、Radar 和硬件关机仍需在设备上确认。
FlightMate-1.15
FlightMate V1.15 更新说明
FlightMate 是为 LilyGO T-LoRa Pager 制作的便携飞行信息工具,提供机场与 METAR、离线地图、GPS 飞行数据、飞行日志和实时航班雷达。
V1.15 本版修复
- 关机由 ESP32 deep sleep 改为 BQ25896 BATFET 硬件断电,避免 GPIO 唤醒源导致自动亮屏。
- 黄键长按 2 秒后显示 RELEASE TO POWER OFF,松开按键后执行硬件关机;设置中的 POWER OFF 使用相同路径。
- 硬件关机必须拔掉 USB 后执行;插着 USB 时会显示 UNPLUG USB TO POWER OFF 并返回界面。
- 真正关机后,长按实体 PWR 键约 1 秒或重新连接 USB 可重新开机。
- 清理旧的 LOW POWER STANDBY / BOOT 唤醒提示分支,正常熄屏时钟刷新和任意键唤醒逻辑保持不变。
- 版本号沿用 FlightMate,升级为 V1.15。
适用硬件与固件环境
| 项目 | 规格 |
|---|---|
| 开发板 | LilyGO T-LoRa Pager V1.0 |
| 主控 | ESP32-S3 |
| Flash / PSRAM | 16 MB / 8 MB |
| 屏幕 | ST7796U,480×222 |
| 构建环境 | Arduino CLI 1.5.1、Arduino-ESP32 3.3.10、ESP-IDF 5.5.4 |
| 分区方案 | app3M_fat9M_16MB |
主要功能
主界面
- 四个入口:AIRPORT、FLIGHT、LOGBOOK、SETTINGS。
- 顶部中央显示设置时区对应的当地时间;时间未同步时显示 --:--。
- 支持旋钮、WASD 和 ENTER 操作。
机场看板与 Radar
- 显示最近机场、距离、方位、UTC 时间和最新 METAR。
- 机场卡片中的 RADAR 按钮可进入 Flight Radar。
- Radar 以有效 GPS 坐标为中心;无有效定位时使用设置中的手动经纬度。
- OpenSky 提供附近航班位置、呼号、高度和航迹;未填写 OAuth 凭据时使用匿名模式。
- TYPE 优先通过 ADSBDB 的 ICAO24 查询获得,OpenSky category 作为回退。
- 扫描动画采用原 FlightRadar 风格的 34° 线状绿色拖影,节奏为 50 ms / 3°。
- 雷达半径可选 40 / 80 / 120 / 160 / 250 NM,默认 80 NM。
Flight 飞行页
- 左侧显示 SD 卡离线地图,右侧显示速度、高度、航向、经纬度、卫星数和 HDOP。
- KM/H、M、DEG 使用同一右边界对齐。
- 设置航班号后,航班号显示在地图定位点旁,并自动避开地图边界。
- 支持 WASD 平移、Q/E 缩放、C 回到当前位置。
飞行日志
- 支持浏览、创建和编辑飞行日志。
- 航班号设置与日志数据彼此独立,不改变原有日志字段。
熄屏与低功耗
- 自动熄屏后进入最低背光的信息页,显示当地时间、航班号和唤醒提示。
- 熄屏字体颜色为正常界面的约 50%,系统分钟变化时立即刷新时间。
- 熄屏页不显示产品名、版本号或 SCREEN OFF;任意按键或旋钮操作可唤醒。
- POWER OFF 使用 BQ25896 切断电池供电路径,不再配置 BOOT/GPIO deep-sleep 唤醒源。
- 黄键长按 2 秒会显示 RELEASE TO POWER OFF,松开后关机;短按黄键仍切换符号模式。
- 必须先拔掉 USB 才能彻底关机;关机后长按实体 PWR 键约 1 秒或连接 USB 开机。
注意:自动熄屏页仍保持 LCD 工作,因此功耗高于 V1.10 的完全关闭屏幕。需要长时间不用设备时请拔掉 USB 后使用 POWER OFF。
与 V1.10 的关系
V1.15 保留 V1.10 的 Wi-Fi 隔离、航班号、机场/METAR、离线地图和飞行日志功能,并累计增加 Radar、OpenSky/ADSBDB、熄屏信息页、界面修正和 BQ25896 硬件关机。完整差异和升级步骤见 UPGRADE-FROM-V1.10.md。
首次使用
- 刷写固件并重启设备。
- 进入 SETTINGS,设置 WI-FI SSID、WI-FI PASSWORD、TIMEZONE 和 FLIGHT NUMBER。
- 确认 GPS 为 ON;室外等待定位,或填写 MANUAL LAT、MANUAL LON 作为 Radar 回退中心。
- OpenSky 凭据可留空使用匿名模式;需要认证模式时填写 OPENSKY CLIENT ID 和 OPENSKY SECRET。
- 设置 RADAR RADIUS,返回机场页并按 ENTER 打开 Radar。
常用按键
| 页面 | 操作 |
|---|---|
| 全局 | H 返回主界面,B 切换键盘灯,黄键长按 2 秒后松开进入低功耗待机 |
| 主界面 | 旋钮或 WASD 选择,ENTER 打开 |
| 机场 | ENTER 打开 Radar,R 刷新 METAR,L 调节屏幕亮度 |
| Radar | R 刷新航班,S 进入 Radar 设置,Q/H 返回 |
| Flight | WASD 平移,Q/E 缩放,C 回中,L 调节亮度 |
| 日志列表 | N 新建,W/S 或旋钮选择,ENTER 查看 |
| 设置 | W/S 或旋钮选择,ENTER 修改 |
离线地图目录
固件会依次尝试以下瓦片路径:
/FlightMate/maps/base/osm/{z}/{x}/{y}.png
/maps/base/osm/{z}/{x}/{y}.png
manifest 可放在:
/FlightMate/maps/manifest.json
/FlightMate/manifest.json
/maps/manifest.json
/manifest.json
地图缩放范围为 1~9。manifest 缺失时仍会尝试直接读取瓦片。
从 V1.10 / V1.13 升级
推荐仅更新应用,保留 Wi-Fi、航班号、时区、亮度、GPS 和手动坐标等 NVS 设置:
FLASH_APP_ONLY_FLIGHTMATE_V1.15.bat COM7
将 COM7 替换为设备实际串口。从 V1.14 升级到 V1.15 时,主要变化是将关机方式由 deep sleep 改为 BQ25896 硬件断电。
其他刷写方式
写入 bootloader、分区表、boot_app0 和应用,但不主动擦除 NVS:
FLASH_FLIGHTMATE_V1.15.bat COM7
清除整个 Flash 后重新安装:
ERASE_AND_FLASH_FLIGHTMATE_V1.15.bat COM7
完整恢复镜像 FlightMate-V1.15-merged-16MB.bin 从 0x0 写入,会覆盖设备中的设置和数据,仅建议用于故障恢复或全新安装。
镜像地址
| 文件 | 地址 |
|---|---|
| FlightMate-V1.15-bootloader.bin | 0x0 |
| FlightMate-V1.15-partitions.bin | 0x8000 |
| FlightMate-V1.15-boot_app0.bin | 0xE000 |
| FlightMate-V1.15-app.bin | 0x10000 |
| FlightMate-V1.15-merged-16MB.bin | 0x0 |
FlightMate-1.14
FlightMate V1.10 → V1.14 升级说明
本文说明从 FlightMate V1.10 升级到 V1.14 的累计变化、兼容性和推荐操作。
升级结论
- 硬件、16 MB Flash 分区方案和主要数据结构保持兼容。
- 从 V1.10 升级时推荐刷写 FlightMate-V1.14-app.bin,地址仍为 0x10000。
- App-only 升级不会主动擦除 NVS,可保留 Wi-Fi、航班号、时区、亮度、GPS 和手动坐标设置。
- V1.14 新增的 OpenSky 凭据和 Radar 半径在 V1.10 中不存在,首次启动后按需设置;缺省为 OpenSky 匿名模式和 80 NM。
- SD 卡地图目录和原有飞行日志功能继续兼容。
相比 V1.10 的功能变化
| 项目 | V1.10 | V1.14 |
|---|---|---|
| 主界面顶部中央 | 显示 HOME | 显示设置时区对应的当地时间 |
| 机场看板 | 最近机场和 METAR | 保留原布局,增加 RADAR 按钮 |
| Flight Radar | 无 | 新增独立 Radar 页面和扫描动画 |
| Radar 中心 | 无 | 优先使用有效 GPS,无定位时使用手动经纬度 |
| 航班位置 | 无 | OpenSky,支持匿名与 OAuth 凭据 |
| 飞机 TYPE | 无 | ADSBDB ICAO24 查询与 12 架内存缓存,OpenSky category 回退 |
| Radar 范围 | 无 | 40 / 80 / 120 / 160 / 250 NM |
| Radar 扫描 | 无 | 34° 线状绿色拖影,50 ms / 3° |
| Flight 数据单位 | 分散显示 | KM/H、M、DEG 共用右边界 |
| 自动熄屏 | 关闭背光并让 LCD 休眠 | 最低背光显示时间、航班号和唤醒提示 |
| 熄屏时间刷新 | 不显示时间 | 系统分钟变化后立即更新 |
| 深睡眠 | LOW POWER STANDBY,BOOT 唤醒 | 保留,并增加入睡前 BOOT/GPIO0 释放保护 |
| 黄键关机 | 无独立防误唤醒流程 | 长按 2 秒提示 RELEASE TO STANDBY,松手后进入 deep sleep |
| Radar 设置 | 无 | OpenSky Client ID、Secret、Radar Radius 与 GPS/手动坐标集中显示 |
| Radar 诊断 | 无 | 增加 RADAR state、RADAR type 和 radar refresh |
| 关机诊断 | 基础日志 | 增加 POWER yellow release 和 BOOT/GPIO0 release 日志 |
资源占用变化
| 项目 | V1.10 | V1.14 | 变化 |
|---|---|---|---|
| 程序存储报告 | 1,670,921 B | 1,695,929 B | +25,008 B |
| App BIN | 1,671,168 B | 1,696,176 B | +25,008 B |
| 全局 RAM | 65,088 B | 66,952 B | +1,864 B |
| App 分区占用 | 53% | 53% | 不变 |
| 合并镜像 | 16,777,216 B | 16,777,216 B | 不变 |
新增 Radar、HTTPS JSON 解析、TYPE 缓存和关机保护后,程序及 RAM 占用仍处于当前 3 MB App 分区范围内。
推荐升级步骤
-
记录当前 Wi-Fi、时区、航班号和手动坐标,作为人工备份。
-
将设备连接电脑,确认串口号,例如 COM7。
-
解压 V1.14 固件包,在目录中运行:
FLASH_APP_ONLY_FLIGHTMATE_V1.14.bat COM7 -
重启后确认原有设置仍在。
-
进入 SETTINGS,检查 GPS、MANUAL LAT/LON,设置 RADAR RADIUS。
-
OpenSky 凭据可留空;若使用 OAuth,填写 API Client ID 和 Client Secret,不是普通网站用户名与密码。
-
在机场页按 ENTER 打开 Radar,并按 R 手动刷新一次。
如果 App-only 启动异常,可改用以下完整四段刷写,仍不主动擦除 NVS:
FLASH_FLIGHTMATE_V1.14.bat COM7
只有在设置损坏或需要全新安装时才运行:
ERASE_AND_FLASH_FLIGHTMATE_V1.14.bat COM7
升级后的重点检查
-
主界面顶部中央是否显示当地时间。
-
Flight 页 KM/H、M、DEG 是否右对齐。
-
自动熄屏后是否只显示低亮度时间、航班号和唤醒提示。
-
熄屏时间跨分钟后是否更新,任意键是否能唤醒。
-
长按黄键 2 秒是否出现 RELEASE TO STANDBY,松手后是否保持关闭。
-
进入 SETTINGS → LOW POWER STANDBY 后是否不再立即亮屏。
-
BOOT 是否可正常唤醒。
-
GPS 有效时 Radar 是否跟随当前位置;无定位时是否使用手动坐标。
-
Radar 是否出现线状扫描拖影和航班目标。
-
TYPE 是否显示机型代码;若仍为 -,检查串口日志:
[RADAR] state icao=... fields=... category=... fallback=... [RADAR] type icao=... http=... resolved=... -
关机仍异常时,检查串口日志:
[POWER] yellow key released; entering deep sleep [POWER] BOOT/GPIO0 wake pin released=YES wait=...
功耗差异
V1.10 的自动超时会关闭背光并让 LCD 休眠;V1.14 为了持续显示时间和航班号,自动超时后保留最低背光及 LCD 刷新,因此待机功耗会高于 V1.10。
长时间不用设备时,应在设置中进入 LOW POWER STANDBY,或长按黄键 2 秒后松开进入低功耗待机。该模式仍使用 ESP32-S3 深睡眠并通过 BOOT 唤醒。
验证边界
V1.14 已通过 Arduino CLI 构建、esptool 镜像检查、16 MB 合并段匹配、源码同步、APP_VERSION 字符串检查、SHA-256、ZIP 顶层结构和 UTF-8 检查。本工作环境未连接实机,最终关机、防误唤醒、电流和按键体验仍需实机验收。