把行空板 M10 当小工具机用:网盘 / QQ / 阅读器 / 收音机(全开源)

2026-10-253

行空板 M10 上的四个小项目:网盘 / QQ / 阅读器 / 收音机

最近在行空板 M10 上做了四个东西,都是自己日常在用、不是点个灯拍张照就完事的那种。全部开源,地址在下面,欢迎抄、欢迎改、欢迎提 issue。

共同前提:都只依赖 Python 3.7 标准库 + 板子自带的 unihiker GUI 库,最多再 pip3 install 一两个小包(最大的 zhconv 也只有 208KB)。板子上装包不方便,所以依赖能省就省。

# 项目 一句话 地址
1 M10_NetDisk 插 U 盘,手机/电脑用浏览器传文件 https://github.com/Jemesnb/M10_NetDisk
2 M10_QQ 小屏上看 QQ、发消息,带拼音输入法和语音 https://github.com/Jemesnb/M10_QQ
3 M10_Reader 240×320 上读小说,内置 300+ 本中文公版书 https://github.com/Jemesnb/M10_Reader
4 M10_Radio 纯触屏网络收音机,支持蓝牙耳机 https://github.com/Jemesnb/M10_Radio

1. M10_NetDisk —— 一个纯属好玩的 USB 网盘

做这个的起因特别单纯:板子的 USB-C 插上电脑会建一条虚拟网卡,板子固定是 10.1.2.3。我就想试试这条链路到底比板子自带的 2.4G 单频 WiFi 快多少。

结果快不少。那既然快,就索性让它干点活 —— 于是有了这个网盘:插上 U 盘,手机或电脑用浏览器就能浏览、下载、上传、复制文件。

先把话说明白:这不是个正经文件服务,就是拿来玩的。

  • 零依赖不是什么架构洁癖 —— 纯粹是板子上装包太麻烦,懒得装,标准库凑合凑合得了
  • 访问口令是自动生成存进 token.txt 的,防的是"家里人误点开",不是防黑客
  • 功能就四样:浏览、下载、上传、复制(目录也行,重名不覆盖,自动加 (2) (3))
  • 顺手把板子那块小屏做成控制台:显示状态、口令、地址,A 键启停、B 键切状态页/日志页、右上角 ✕ 退出
python3 server.py          # 默认 8090
python3 server.py 9000     # 换端口

真要用它传文件,走 USB 线别走 WiFi,快得多。

🔗 https://github.com/Jemesnb/M10_NetDisk


2. M10_QQ —— 240×320 上的 QQ 终端

在板子的小屏上看 QQ 消息、发消息。

核心思路是"重活不在板子上":试过直接在板子上跑桌面版 QQ,跑不动——Electron 应用起步就要 300~600MB 内存,而板子只有 512MB。所以维持长连接、协议加密全交给服务器上的 NapCat,板子只负责显示和输入,两边走 OneBot 11 协议(WebSocket)。

┌──────────────────────┐
│  NapCat              │   跑在服务器上(内存管够)
└──────────┬───────────┘
           │  OneBot 11 协议
           ▼
┌──────────────────────┐
│  行空板 M10           │   只做显示 + 输入
└──────────────────────┘
  • 会话列表 / 聊天 / 菜单 / 快捷回复四套界面
  • 文本、图片、表情、@、引用都能解析;@ 显示群名片不显示 QQ 号
  • 断线重连(3s → 6s 指数退避)
  • 四态拼音键盘:中 / 英 / 中符 / 英符,四页几何一致,切页只换键帽不重建控件
  • 连续拼词预测:打 ceshi 直接出「测试」,选完剩余音节继续拼
  • 语音输入:按一下录、再按一下停,云端识别,结果进同一个文本缓冲区——能用键盘改,不是发完就算

换机器人框架时板子这边一行代码都不用改,只改 config.py 的地址和端口。

🔗 https://github.com/Jemesnb/M10_QQ


3. M10_Reader —— 小屏小说阅读器

在 2.8 寸屏上读书。书可以从 Project Gutenberg 直接下载,也可以自己传 TXT。

  • 内置 300 多本中文公版书(唐诗三百首、红楼梦、水浒传、史记、资治通鉴、道德经……),列表翻到底自动加载下一页
  • 下载时自动繁转简(zhconv,208KB,没装也能跑,只是显示繁体;只对下载的书生效,自己丢进去的 TXT 原样显示)
  • 自己的 TXT 丢进 U盘/books/ 就会被扫到——配合 NetDisk 传书很顺
  • 红楼梦全本 72 万汉字 2.6MB,翻页没有明显卡顿
python3 fetch.py list          # 列书
python3 fetch.py get 24264     # 下红楼梦
python3 reader.py              # 开界面

🔗 https://github.com/Jemesnb/M10_Reader


4. M10_Radio —— 网络收音机

纯触摸屏操作的网络电台。不提供网页控制端,WiFi、蓝牙、选台、播放、音量全在板子上点。

M10 本身没有板载扬声器,音频输出走蓝牙耳机或 USB 声卡。

  • 依赖系统组件而非 Python 包:mpv 播放、nmcli 管 WiFi、bluetoothctl 管蓝牙
  • 默认配 8 个台,前 5 个是中文台,都在板子上实测播放过:
    环球资讯(CRI)、中国之声、经济之声、音乐之声(央广)、中文环球(CRI)
  • 想听什么改 stations.json 就行,MP3 / AAC / HLS 都支持
  • 按 A 键关屏:不是画个黑面板糊上去,是真把背光打到 0 —— 板子上自带 sudo brightness 0 这条命令(/usr/sbin/brightness,写的是 PWM pwmchip1/pwm0 的 duty_cycle,不是 /sys/class/backlight,所以按 backlight 那条路子去找是找不到的)。已在板上实测:brightness 0 后 duty_cycle 读到 0,屏幕全黑,brightness 100 即恢复。电台继续播
sudo apt-get install -y network-manager bluez mpv pulseaudio-utils ca-certificates
sudo systemctl enable --now NetworkManager bluetooth

🔗 https://github.com/Jemesnb/M10_Radio


一点想法

M10 的 512MB 内存和 240×320 屏幕,决定了它不适合"把桌面那套搬上来",反而适合做一件很小但很顺手的事:一个网盘、一个消息终端、一本书、一个收音机。

四个仓库都是公开的,随便 fork。官方教程里硬件示例很多,但完整、能天天用的应用不多 —— 所以才想把这些发出来。你要是也在 M10 上做了什么,评论区贴个链接。


创作许可协议

本项目采用 CC BY(署名) 进行许可。

评论(0)
- 没有更多了 -