把行空板 M10 当小工具机用:网盘 / QQ / 阅读器 / 收音机(全开源)
行空板 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,写的是 PWMpwmchip1/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 上做了什么,评论区贴个链接。




