ESP32 塔台雷达(语音播报版)在一块 2.16 寸 AMOLED 圆屏上还原了机场塔台雷达。头顶 120 海里内的航班实时显示;一旦有飞机进入 30 公里圈,设备就会用塔台管制员的克隆音色播报航班动态。文案由 MiniCPM5-2B 生成,语音由 VoxCPM2 声音克隆合成。


完整演示视频(带播报声音):docs/demo.mp4
效果
- 衰减余晖扫描,40 / 80 / 120 NM 距离环,罗盘刻度,还有萧山机场跑道的磁方位线。
- 飞机图标按真实航向旋转,旁边是航班号 / 航线 / 高度 / 速度三色标签和速度矢量线。
- 四角显示 WiFi 信号、在跟踪的飞机数、时间、无线电状态(STBY 待命、TX 发射中,和声音严格同步)。
- 进场航班触地就从雷达上消失,过路航班巡航穿场而过,和真实塔台雷达的行为一致。
播报链路
- 航班进入 30 km 圈。
- MiniCPM5-2B 生成塔台风格的播报文案,每次措辞不同,内置 8 种场景风格池。
- 航空读法后处理(1→幺、2→两、7→拐、0→洞)。
- VoxCPM2 做声音克隆,参考音色来自真实的塔台管制录音。
- 0.9 倍降速 + 300 Hz~3 kHz 带通 + 软削波,模拟电台音效。
- 由 ES8311 功放播出,屏幕左下角的 TX 指示同时点亮。
MiniCPM5-2B(20 亿参数)和 VoxCPM2 都是面壁智能的端侧模型,从数据到文案再到语音,整条链路都能部署在自己的设备上。当前固件通过面壁智能 ModelBest 开放平台调用这两个模型。
硬件与数据来源
- 硬件:微雪 ESP32-S3-Touch-AMOLED-2.16(ESP32-S3 + 480×480 AMOLED 圆屏 + 电容触摸 + ES8311 音频 Codec + 功放 + 喇叭 + 锂电池接口)。
- 航班数据:飞常准航空数据 MCP 服务(
https://ai.variflight.com/servers/aviation/mcp)。 - 文案与语音:面壁智能 ModelBest 开放平台(
https://platform.modelbest.cn)。 - 演示模式:不联网,也不产生 API 费 用,在本地模拟杭州萧山机场的进场 / 离场 / 过路航班(
flight_mgr.cpp里的SIM_FLIGHTS)。
构建与配置
用 PlatformIO 构建并烧录:
Bash
pio run
python3 ~/.platformio/packages/tool-esptoolpy/esptool.py \
--chip esp32s3 --port /dev/cu.usbmodemXXXX -b 460800 \
write_flash 0x10000 .pio/build/esp32-s3-amoled/firmware.bin
- 密钥:把
include/secrets.example.h复制成include/secrets.h,填入飞常准和面壁智能的 API Key。 - 克隆音色(可选):自备一段单人讲话的参考录音,用 ffmpeg 转成 16 kHz 单声道 wav,再用
xxd -i转成 C 头文件src/atc_ref.h,并在announce.cpp里把ATC_REF_TEXT改成与录音对应的台词,相似度会更高。不需要克隆音色时,把ANN_USE_REF_VOICE设为 0。 - 配网与 GPS:首次开机(或连不上 WiFi)时,设备会开启
HGH-RADAR热点。手机连上后访问192.168.4.1,在网页里填 WiFi 凭据和雷达中心 GPS 坐标(默认杭州萧山机场 30.2295, 120.4344),保存后自动重启生效。
开发记录
从点亮屏幕、打磨雷达 UI,到接入航班数据、调教克隆音色,这个项目全程都是和 Kimi Code 对话完成的,没有手写一行代码。完整开发过程拍成了视频,在 B 站 / X / YouTube 搜「电磁波Studio」就能看到。
雷达 UI 的灵感来自 micro-radar 和 ESP32-Plane-Radar。
链接
- GitHub:emwstudio/esp32-radar
