旅行和离线网络用的ESP32-S3口袋媒体服务器
长途旅行或野外活动时,一个恼人的问题很快就会显现:移动网络在最需要的时候断掉了。你可以提前在手机里预装视频和电子书。另一个方案是搭建一个自主运行的服务器。但为此部署一台树莓派,再配上一堆充电宝和移动硬盘,往往不切实际。主板会发热、耗电量大,还会占用背包的宝贵空间。
开发者Jackson Studner用更优雅的方式解决了这个问题。他编写了Jcorp Nomad——一款完全自主运行的媒体服务器,运行在ESP32-S3微控制器上,可装入一个标准U盘大小的外壳中。

一块售价约十五美元的微控制器能做什么
Nomad会创建自己的本地Wi-Fi网络。你可以从智能手机、平板或笔记本电脑连接到这个网络,打开浏览器,就进入了媒体播放器。无需安装任何应用。
U盘内部是一张MicroSD卡,设备从中提供内容。它可以向已连接的设备流媒体播放以下内容:
- 电影和电视剧。视频通过Plyr网页播放器播放。支持带剧季的结构化文件夹,以及正确的播放进度记忆功能。
- 音乐。支持子目录播放列表和动态队列的后台播放。
- 书籍和漫画。支持PDF、EPUB、CBZ和CBR格式。
- 离线维基百科。Mk4版本的最大亮点——可读取ZIM档案。你可以加载维基百科全文、Gutenberg图书馆或TED演讲到U盘中。
多人可以同时连接并观看不同的文件。当然,这取决于微控制器的Wi-Fi带宽,但对于露营营地的一个家庭或小团体来说,带宽是足够的。
如何让ESP32读取GB级别的档案
Nomad最有趣的技术细节是处理ZIM文件。包含插图的完整维基百科备份超过140GB。试图让RAM有限的ESP32芯片自己搜索如此庞大的数据量,必然会导致系统崩溃。
作者通过分工解决了这个问题。该项目包含一个名为Nomad Tools的电脑端工具。它在PC上预先扫描ZIM文件并创建一个紧凑的索引文件。生成的索引文件放到MicroSD卡上。当你在智能手机浏览器中输入搜索查询时,Nomad会快速检查轻量级索引,然后立即提供正确的文章。
在最新的Mk4更新中,开发者优化了内存处理:
- 修复了处理超过2GB文件时的频繁崩溃问题。
- 为PDF和漫画添加了已读页面的动态卸载功能。之前,一个长篇主题或厚重的扫描文档会很快占满RAM,导致开发板死机。
- 优化了启动时的索引。现在只有当存储卡上的文件实际发生变化时,开发板才会重新扫描,而不是每次开机都扫描。
不再压碎屏幕的外壳
该设备基于特定的开发板——Waveshare ESP32-S3开发板,配有1.47英寸彩色LCD屏幕。仓库中包含用于3D打印外壳的现成STL文件。

外壳设计在Mk4中重新改进。之前,上下两半通过卡扣连接,组装时很容易压碎薄薄的显示屏玻璃。新版本改为从前到后滑动组装。复位键和刷机键保留在外壳外部,所以你不需要拆开外壳来更新软件。
如何自己搭建这样的服务器
组装简单,无需焊接。以下是你需要的材料:
- Waveshare ESP32-S3开发板,带1.47"显示屏(价格约15-18美元)。
- MicroSD卡,容量16GB到128GB(最高支持2TB,只需格式化为FAT32)。
- 任何带USB输出的电源(充电宝、车载插座或手机充电器)。
存储卡上的文件结构很简单。你只需将媒体文件放到相应的文件夹中:
/Movies
Interstellar.mp4
Interstellar.jpg
/Shows
/The Office
S01E01 - Pilot.mp4
S01E02 - Diversity Day.mp4
The Office.jpg
/Books
The Martian.pdf
/Music
track01.mp3
之后,通过Arduino IDE将仓库中/firmware/文件夹里的固件烧录到开发板上,插入U盘,接通电源。网络列表中会出现Jcorp_Nomad(默认密码:password)。
在浏览器中打开管理面板,运行初始索引——你的离线媒体库就准备好了。
值得一试吗
Jcorp Nomad是用微控制器以极低成本在日常生活中创造真正有用东西的绝佳范例。该项目代码清晰开源(CC BY-NC-SA 4.0许可证),作者活跃,社区氛围浓厚。
如果你经常在手机没有信号的地方,或者只是想备一个带有电影资源的应急独立参考资料以防停电,这个项目绝对值得花几个晚上搭建一下。
相关项目