旅行やオフラインネットワーク向けESP32-S3ポケットメディアサーバー
長距離の旅行や自然の中でしていると、すぐに一つの厄介な問題に気づきます。モバイル接続が最も必要な瞬間に切れてしまうのです。事前にスマートフォンのストレージに動画や書籍をダウンロードしておくこともできます。もう一つの方法は、自律型サーバーを設置することです。しかし、そのためにRaspberry Piにモバイルバッテリーや外付けドライブを一式用意するのは非現実的なことが多いです。基板が熱を持ち、バッテリーを激しく消耗し、バックpackspaceを大幅に占有してしまいます。
開発者のJackson Studnerはこの問題によりエレガントなアプローチを取りました。彼はJcorp Nomadを書きました—ESP32-S3マイコン上で動作し、标准的なUSBフラッシュドライブサイズのケースに収まる完全自律型メディアサーバーです。

1台15ドル程度のマイコンで何ができるか
Nomadは独自のローカルWi-Fiネットワークを作成します。スマートフォン、タブレット、ラップトップから接続し、ブラウザを開いてメディアプレイヤーにアクセスできます。アプリのインストールは不要です。
フラッシュドライブの中にはMicroSDカードが収まっており、デバイスはそのカードからコンテンツを配信します。接続されたデバイスにストリーミングできるものは以下の通りです:
- 映画やテレビシリーズ。動画再生はPlyrウェブプレイヤーを通じて行われます。シーズン別フォルダ構造と適切な再生進捗記憶に対応しています。
- 音楽。サブディレクトリからのプレイリストと動的キューイングによるバックグラウンド再生。
- 書籍とコミック。PDF、EPUB、CBZ、CBR形式に対応しています。
- オフラインWikipedia。Mk4リリースの目玉機能—ZIMアーカイブの読み取り。フラッシュドライブにWikipediaダンプ、Gutenbergライブラリ、TEDトークンをロードできます。
複数人が同時に接続して異なるファイルを視聴できます。当然、これはマイコンのWi-Fi帯域幅に依存しますが、ファミリーやテントキャンプ程度のグループには十分です。
ESP32にギガバイトサイズのアーカイブを読み取らせる方法
Nomadで最も興味深い技術的詳細は、ZIMファイルの扱いです。イラスト付きの完全なWikipediaダンプは140ギガバイト以上になります。限られたRAMを持つESP32チップに、このような大容量データを自力で検索させようとすれば、システムクラッシュは避けられません。
著者は分業でこの問題を解決しました。プロジェクトにはNomad Toolsというパソコン用のユーティリティが含まれています。これはPC上でZIMファイルを事前スキャンし、コンパクトなインデックスファイルを作成します。完成したインデックスはMicroSDに配置します。スマートフォンのブラウザで検索クエリを入力すると、Nomadは軽量なインデックスに対してすぐにチェックし、正しい記事を即座に配信します。
最新のMk4アップデートでは、開発者がメモリ管理を改良しました:
- 2ギガバイト以上のファイル使用時の定期的なクラッシュを修正。
- PDFとコミックの読み取りページの動的アンロードを追加。以前は、長いトピックや重いスキャンドキュメントがRAMをすぐに埋め尽くし、ボードをクラッシュさせていました。
- 起動時のインデックス作成を最適化。ボードは電源を入れるたびにではなく、メモリカードのファイルが実際に変更された場合のみ再スキャンするようになりました。
画面を挟まなくなったケース
このデバイスは、特定の開発ボード—1.47インチカラーディスプレイ搭載のWaveshare ESP32-S3 Dev Boardを中心に構築されています。リポジトリにはケースの3Dプリント用のSTLファイルが含まれています。

ケースのデザインはMk4で改良されました。以前は上下から挟み込む方式だったため、組立時に薄いディスプレイガラスを挟み込みやすくなっていました。新しいバージョンは前から後ろへスライドして組み合わされます。リセットボタンとフラッシュボタンは外側に配置されているため、ソフトウェアを更新するためにケースを分解する必要がありません。
このようなサーバーを自分で作る方法
組み立ては簡単で、はんだ付けは不要です。必要なものは以下の通りです:
- 1.47インチディスプレイ搭載のWaveshare ESP32-S3ボード(約15〜18ドル)。
- 16GB〜128GBのMicroSDカード(最大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/フォルダのバイナリを使ってボードをフラッシュし、フラッシュドライブを挿入して電源を入れます。ネットワーク一覧にJcorp_Nomadが表示されます(デフォルトパスワード:password)。
ブラウザで管理パネルを開き、初期インデックス作成を実行すれば—オフラインメディアライブラリの準備完了です。
試してみる価値はあるか
Jcorp Nomadは、マイコンを使って僅かな費用で日常生活で本当に役立つものを作る素晴らしい例です。プロジェクトは明確なオープンソースコード(CC BY-NC-SA 4.0ライセンス)、アクティブな著者、活気のあるコミュニティを持っています。
もし頻繁にモバイル信号の届かない場所にいる場合や、停電時に備えて映画付きの緊急用スタンドアロンリファレンスを手元に置いておきたい場合は、このプロジェクトを数時間の夜に構築する価値は十分にあります。
関連プロジェクト