K10行空板,走出课堂,走近煤炭生产环境
我是一位煤矿行业工作者,同时也是孩子的爸爸,带着孩子们一起玩电子设备。
因为从小就对这方面着迷,小时候因为没有这么多像DF的电子元器件,主控板,还有很多开源的电子元器件。好多想法就搁置了,孩子慢慢长大了,跟我的爱好也一样,就带着孩子们一起玩,同时也弥补一下自己的童年。
近期我正研究一个录像机旁路监测系统,煤矿里差不多有将近400路视频监控,每个通道是否正常,还得人员去看,录像机自带的状态监测系统不是很好用,伙计们都不愿意用,索性就自己定制开发一套。现在软件都已经上线使用了。有一天突发奇想把K10当成一个电脑桌面副屏,来实时显示哪些通道异常。好了,开干。惯例先上成果视频
一、技术路线
旁路只读监测,端侧拉取展示——不侵入摄像头,只从服务器"借"数据:
1.服务器以只读方式周期性轮询海康录像机(monitor/hikvision 模块,默认 60s 一次),把各通道在线状态写入本地 SQLite。
2.K10 连上同局域网 WiFi 后,每 5 秒用 HTTP + JWT 向服务器 GET /api/dashboard/abnormal-channels,拉取所有"离线/异常"通道。
3.K10 把结果用 LVGL 标签画到 240×320 屏上,A 键上一页 / B 键下一页分页。
4.中文字库 font_cn.bin 由服务器静态托管,K10 首次开机自动下载并永久存到板子,之后离线也能显示中文。

二、核心模块
| 层 | 角色 | 关键构成 |
|---|---|---|
| 采集 | 数据源 | 海康威视 NVR / 摄像头(被监测对象) |
| 服务 | 数据中转 | FastAPI 接口 + SQLite 库 + JWT 鉴权 |
| 端侧 | 计算+联网 | 行空板 K10(ESP32-S3)+ WiFi |
| 展示 | 人机界面 | LVGL 标签 + 中文 binfont + A/B 按键 |
| 资源 | 字体 | font_cn.bin(GB2312 常用字子集,~131KB/16px) |
三、软件部分


四、过程踩坑处理
字库的问题,跟各位老师请教一下,在mind2.0版本中,MicroPython代码模式中,怎么把字库拷贝到K10。试了几次不成功,索性就把字库嵌入到服务器端,每次连接服务器数据的时候,从服务器自动下载一下字库。时间稍微长一点,其他没有任何影响。
- 服务器侧:在
backend/app.py新增专用接口GET /api/font_cn.bin,从前端目录绝对路径返回字库文件。它优先级高于静态挂载,不再依赖"前端目录是否包含该文件",重部署也不怕丢。 - K10 侧:
ensure_font()现在优先请求/api/font_cn.bin,失败再退回到/font_cn.bin、/static/…、/assets/…;download_font()增加 体积校验(<10KB 判定为 404 错误页并丢弃)+ 打印[FONT-DIAG]真实状态码,方便你从串口一眼看出是"连不上"还是"服务器没字库"。

五、最终成果,桌面副屏







