有些开源项目,一眼看上去不像“生产力工具”,更像程序员给自己做的一颗糖。
micro-radar 就是这种东西。
它不是下一个 Kubernetes,也不是能让你少写 50% 代码的 AI 插件。它只是把一个迷你航班雷达放到桌面上:基于 ESP32-C3,通过 Wi-Fi 从 OpenSky API 获取附近实时航班数据,再显示到一块 1.28 英寸的圆形屏幕里。
听起来很小。
但小得正好。
因为它击中的不是“我需要一个航班监控系统”这种刚需,而是另一种更隐秘的快乐:你坐在电脑前,抬头看见桌上一块小圆屏,里面有飞机在移动。某个航班从你城市上空经过,它不是地图 App 里冷冰冰的一条线,而是被你亲手焊进桌面的一点闪光。
项目地址:https://github.com/AnthonySturdy/micro-radar
它不是 ADS-B 接收机,这点反而重要
先把误会讲清楚:micro-radar 不是传统意义上的 ADS-B 接收设备。
真正的 ADS-B 接收,需要天线、射频接收模块、解码链路,以及合适的安装位置。那是一套更硬核的玩法:你真的从空中接收飞机广播信号,然后解码出航班位置、高度、速度等数据。
micro-radar 走的是轻量路线。它通过 Wi-Fi 访问 OpenSky API,获取附近航班数据,再在 ESP32-C3 驱动的小屏幕上展示。
这意味着它牺牲了一部分“无线电原教旨主义”的浪漫,但换来了非常低的门槛。
你不需要架天线,不需要折腾 SDR,不需要研究射频环境。你需要的是一块支持联网的 ESP32-C3、一块小屏幕、项目代码,以及一个能访问 API 的网络环境。
这就是它适合作为桌面小项目的原因。
它不试图把你拖进航空监控工程,而是把复杂系统切成一个能周末完成的颗粒度:联网、请求 API、解析数据、绘制 UI、塞进一个小壳子里。每一块都不吓人,连起来却很有成就感。
为什么是“桌面航班雷达”,不是又一个天气屏?
ESP32 桌面小屏项目并不少。
天气屏、番茄钟、股票看板、YouTube 订阅数、服务器监控、家庭温湿度仪表……这些都很常见。它们的共同点是“有用”。
航班雷达不一样。
它没那么有用。
你每天不一定需要知道头顶飞过哪架飞机。大多数时候,这个信息不会帮你多赚一块钱,也不会让你的工作效率提升 3%。但它有一种很奇妙的“世界感”。
天气屏告诉你窗外会不会下雨;服务器监控告诉你系统有没有挂;航班雷达告诉你:你的房间不是一个封闭盒子,它其实嵌在一张巨大的交通网络里。
这就是 micro-radar 的情绪价值。
它把一个宏观系统缩小到桌面,把航空、地理、网络 API、嵌入式显示这些东西压进一个圆形屏幕。你不是在看数据,而是在看世界从你头顶路过。
技术上,它是一个很好的“全链路练习题”
别被它可爱的外表骗了。
micro-radar 这种项目,作为学习样本很合适,因为它天然包含一条完整链路:
- 硬件:ESP32-C3 负责联网和驱动屏幕;
- 数据源:OpenSky API 提供航班状态数据;
- 网络:设备需要通过 Wi-Fi 请求远程接口;
- 解析:返回数据需要筛选、转换、映射到屏幕坐标;
- UI:1.28 英寸圆屏空间极小,信息密度必须克制;
- 交互:如果加入按键或触摸,还要处理状态切换和详情展示。
很多教程项目只练一个点:点亮 LED、请求 HTTP、显示文字。micro-radar 的价值在于它不是孤立练习,而是把这些能力串成一个真实装置。
这类项目最适合培养“产品型工程直觉”。
比如屏幕只有 1.28 英寸,你不可能把所有航班字段都塞进去。航班号、高度、距离、方向、更新时间,哪些该常驻?哪些该点击后再看?如果 API 一次返回很多飞机,如何筛选附近目标?如果网络失败,小屏幕该显示错误、重试,还是保留上次数据?
这些问题不是语法题,而是系统题。
小项目的好处就在这里:它足够小,小到你能掌控;又足够真实,真实到你必须做取舍。
OpenSky API:免费的浪漫,也有现实边界
micro-radar 依赖 OpenSky API,这也是它最聪明、同时最脆弱的地方。
聪明在于,OpenSky 把全球航空数据的一部分开放给开发者。对一个桌面小装置来说,直接调用 API 比自己接 ADS-B 信号现实得多。它让项目从“硬核无线电爱好者玩具”变成“普通开源硬件玩家也能复刻的小物件”。
脆弱在于,任何公共 API 都有边界。
免费接口通常会有频率限制、可用性波动、数据延迟或覆盖范围差异。你桌上的小雷达看不到飞机,不一定是设备坏了,也可能是 API 当前没有返回附近数据,或者你所在区域数据覆盖不够好。
这点如果写进产品说明,会显得扫兴;但如果作为学习项目,它反而很有教育意义。
真实世界的软件从来不是“请求接口 → 得到完美数据 → 展示完美 UI”。真实世界是:接口会慢,数据会缺,网络会抖,返回结构会变,用户会在最不合适的时候看见空屏。
所以一个成熟的 micro-radar 玩法,不只是把飞机画出来,还要处理这些尴尬时刻:
Wi-Fi disconnected → 显示离线状态
API timeout → 显示重试倒计时
No aircraft nearby → 显示空域安静,而不是假装有数据
Stale data → 标出更新时间,避免误导
这才是开源硬件项目真正好玩的地方。它把你从“能跑”推向“可用”。
圆形屏幕的难点:漂亮不是贴个 UI 就完事
1.28 英寸圆形屏幕很讨喜,但它也很残酷。
方屏可以偷懒,圆屏不行。圆形屏幕天然有视觉中心,边缘空间又被曲线切掉。如果你照搬普通仪表盘布局,很容易出现信息挤在一起、边缘文字难读、图标比例怪异的问题。
航班雷达偏偏又是强空间感 UI。
它需要表达方向、距离、目标点、也许还有高度或航班标识。屏幕越小,设计越不能贪心。一个好的桌面雷达界面,应该像老式仪表一样克制:中心点代表自己,周围点代表飞机,颜色或大小表达高度 / 距离,详情只在需要时出现。
这也是我觉得 micro-radar 比普通天气屏更值得写的原因。
天气屏的信息结构很固定:温度、天气图标、日期、湿度。航班雷达则更像一个缩小版态势图。它要求开发者理解信息层级,而不是把 JSON 字段一股脑打印出来。
小屏幕会逼你变得诚实。
如果一个信息不重要,它就没有资格占据 1.28 英寸里的任何像素。
它适合谁?不是所有人都适合
micro-radar 适合三类人。
第一类,是喜欢桌面小装置的人。你可能已经有墨水屏日历、服务器监控小屏、Home Assistant 面板。micro-radar 会成为这些设备里最不实用、但最有故事感的一个。
第二类,是想学 ESP32 但讨厌“点灯教程”的人。点灯很经典,但点完之后很空。航班雷达至少给了一个完整目标:联网拿数据,画到屏幕上,最后摆到桌上长期运行。
第三类,是想理解 API 产品边界的人。OpenSky 这类公共数据源能让项目快速启动,但也会把频率限制、数据延迟、异常处理这些现实问题一并带进来。它比 demo 更接近真实软件。
但它不适合两类人。
如果你想做专业航空监控,它太轻。你应该去研究 ADS-B 接收、天线、SDR、数据融合,而不是指望一个 Wi-Fi 小屏替代专业方案。
如果你只想买个成品摆件,它可能也不够省心。开源硬件的乐趣往往在搭建过程,不在开箱即用。你要接受刷固件、配 Wi-Fi、调屏幕、查日志这些小麻烦。
我会怎么改这个项目
如果把 micro-radar 当作一个周末项目,我不会急着加功能。
我会先做三件事。
第一,给数据加“可信度”。比如明确显示数据更新时间。如果超过某个阈值,就把航班点变暗,避免用户以为旧数据仍然实时。
第二,给空状态加设计。没有飞机时,不要只显示空白。可以显示“空域安静”、当前查询半径、下次刷新时间。好的空状态会让设备显得稳定,而不是像坏了。
第三,做一个极简 Web 配置页。ESP32 项目最烦人的地方常常不是核心功能,而是改 Wi-Fi、改经纬度、改刷新间隔。把这些做成局域网页面,设备的寿命会长很多。
再往后,才考虑更花的东西:
- 根据高度改变颜色;
- 根据方向画小箭头;
- 点击查看航班详情;
- 支持多地点配置;
- 加入夜间模式;
- 用外壳和支架把它变成真正的桌面摆件。
注意,这些都不是为了堆功能,而是为了让它从“能演示”走向“愿意长期放桌上”。
这类项目为什么值得写?
因为它提醒我们:开源不只有框架、数据库、AI Agent。
还有这种小东西。
它不宏大,不严肃,不承诺改变世界。但它把几个普通技术点拼在一起,做成了一个你能摸到、能摆在桌上、能拿给朋友看的物件。
在 AI 把软件生成变得越来越廉价之后,这类“软件 + 硬件 + 空间感”的项目反而更有魅力。它不是在屏幕里再造一个屏幕,而是把数据从浏览器里拎出来,放到现实世界的一角。
你写一段代码,桌上一块小屏亮起来。几公里外的天空里,一架飞机正在经过。API、Wi-Fi、ESP32、圆形屏幕,把这件事翻译成一个小点。
这就是 micro-radar 最迷人的地方。
它没那么有用。
但它让技术重新有了玩具感。
而很多时候,正是这种玩具感,把人重新拉回创造里。
项目信息
- 项目:
micro-radar - GitHub:
https://github.com/AnthonySturdy/micro-radar - 项目描述:
A tiny open-source flight radar for your desk - 核心硬件:ESP32-C3、1.28 英寸圆形屏幕
- 数据来源:OpenSky API
- 工作方式:通过 Wi-Fi 获取附近实时航班数据并显示在桌面小屏上
- 注意:它不是 ADS-B 无线电接收机,而是 API 驱动的桌面航班显示装置