Babel-USB: Biến ESP32-S3 thành ổ USB chứa mọi tệp tin có thể tưởng tượng
Babel-USB là một dự án mã nguồn mở biến bảng phát triển ESP32-S3 thành một hệ thống tệp tin "vô hạn", lấy cảm hứng từ Thư viện Babel. Thay vì lưu trữ vật lý, dự án sử dụng thuật toán để xác định vị trí của bất kỳ tệp tin nào dựa trên nội dung của nó.

Babel-USB là một dự án kỹ thuật độc đáo biến bảng phát triển ESP32-S3 thành một hệ thống tệp tin "vô hạn", lấy cảm hứng từ ý tưởng về Thư viện Babel trong văn học. Về bản chất, dự án này không thực sự lưu trữ dữ liệu theo cách truyền thống, mà tạo ra một cơ chế để truy xuất bất kỳ tệp tin nào bằng cách tính toán địa chỉ của nó trên thiết bị.
Về ý tưởng của dự án
Thư viện Babel là một khái niệm toán học và văn học mô tả một thư viện chứa tất cả các cuốn sách có thể có được bằng cách kết hợp các ký tự. Babel-USB áp dụng nguyên lý này vào dữ liệu kỹ thuật số: mọi tệp tin có thể tồn tại đều đã có sẵn ở một địa chỉ cụ thể trên hệ thống tệp này. Nhiệm vụ của chúng ta không phải là "tải lên" tệp, mà là tìm ra đường dẫn chính xác để truy cập nó.
Yêu cầu phần cứng và cài đặt
Để thực hiện dự án này, bạn cần chuẩn bị những phần sau:
- Một bảng phát triển ESP32-S3: Tốt nhất là loại có hình dạng giống thanh USB để tạo sự bất ngờ tối đa. Lưu ý quan trọng là phải dùng dòng S3 vì nó hỗ trợ USB phần cứng; các dòng khác như ESP32 tiêu chuẩn có thể không hoạt động.
- Môi trường lập trình: Cài đặt Visual Studio Code và thiết lập PlatformIO.
- Firmware: Clone mã nguồn từ kho GitHub của dự án (bao gồm cả các submodule).
Quá trình cài đặt khá đơn giản. Sau khi mở dự án trong VS Code, bạn giữ nút "BOOT" trên ESP32-S3 và cắm vào máy tính, sau đó nhấn biểu tượng mũi tên để biên dịch và nạp firmware (flash) vào thiết bị.
Cách sử dụng và tìm kiếm tệp tin
Sau khi nạp xong, ESP32-S3 sẽ xuất hiện trên máy tính như một thiết bị lưu trữ sử dụng giao thức MTP (Media Transfer Protocol). Bạn có thể duyệt qua các thư mục, nhưng để tìm một tệp cụ thể, bạn cần một công cụ tính toán.
Dự án cung cấp một script sử dụng Bun (một runtime JavaScript) để thực hiện việc này:
- Cài đặt Bun.
- Sử dụng lệnh
bun run file-to-path.js <đường_dẫn_tệp>trong thư mục dự án. - Script sẽ trả về một đường dẫn trên ổ USB.
Bạn chỉ cần dán đường dẫn đó vào trình duyệt tệp (file explorer) vào thư mục disk/, tệp tin bạn cần sẽ nằm ở đó. Tuy nhiên, do đặc thù của thuật toán, việc tạo ra đường dẫn cho các tệp có kích thước lớn (hàng trăm byte trở lên) sẽ tốn khá nhiều thời gian xử lý.
Lưu ý kỹ thuật
Hầu hết các chương trình không hỗ trợ đọc trực tiếp từ MTP, do đó bạn thường cần sao chép tệp từ ổ USB này sang máy tính trước khi mở. Về mặt kỹ thuật, dự án này được xây dựng dựa trên công việc của RigoLigoRLC về esp32s3-tusb-mtp và phiên bản fork của họ về espressif-tinyusb-component.
