Máy đọc sách XTEINK X4 vốn nổi tiếng vì nhỏ gọn và chỉ tập trung vào việc đọc. Thế nhưng cộng đồng mã nguồn mở lại thích biến chiếc màn hình e-ink này thành nhiều thứ khác: đồng hồ, bảng thông báo, khung ảnh — và giờ là một người bạn thú ảo đi kèm trợ lý AI. Dự án XTeInk Tamagotchi làm đúng điều đó: biến X4 thành một màn hình phụ sống động, phản ánh trạng thái hoạt động của trợ lý AI bằng hình ảnh và dòng tin nhắn ngắn.
Bài viết này tóm lược lại cách dự án hoạt động, cần những gì để cài đặt, và những giới hạn quan trọng cần biết trước khi thử. Đây là firmware không chính thức, không phải sản phẩm của XTEINK, nên hãy cân nhắc kỹ phần cảnh báo ở cuối bài.
XTeInk Tamagotchi là gì?
Nói đơn giản, đây là một firmware cho XTEINK X4 kết hợp với một đoạn script nhỏ chạy trên máy tính. Khi trợ lý AI của bạn nhận tin nhắn, suy nghĩ, trả lời, làm việc hay gặp lỗi, chiếc X4 sẽ đổi hình ảnh và hiển thị dòng trạng thái tương ứng. Bạn nhìn vào màn hình e-ink là biết trợ lý đang làm gì, thay vì phải mở máy tính hay điện thoại.
Theo mô tả của tác giả dự án, màn hình có thể thể hiện 8 trạng thái: ngủ, chờ, cảnh báo, đang suy nghĩ, đang nói, đang làm việc, hào hứng và lỗi. Ngoài hình ảnh, máy còn hiển thị nội dung tin nhắn mới nhất tối đa 288 ký tự, cùng thanh trạng thái gồm mức pin, kết nối Wi-Fi và kết nối MQTT.
Điểm đáng chú ý: kho mã nguồn không kèm sẵn hình nhân vật. Người dùng tự tạo 8 hình sprite của riêng mình. Điều này vừa giúp tránh dùng hình ảnh không rõ bản quyền, vừa cho phép mỗi người cá nhân hóa nhân vật theo sở thích.
Nó hoạt động như thế nào?
Luồng hoạt động gồm 3 mắt xích: trợ lý AI trên máy tính, một MQTT broker làm trung gian, và chiếc X4 đóng vai trò thiết bị nhận tin.
- Bạn chạy một skill nhỏ, truyền vào tin nhắn muốn hiển thị và trạng thái tương ứng, ví dụ trạng thái đang nói hay đang suy nghĩ.
- Script dùng công cụ mosquitto_pub để gửi một bản tin JSON tới MQTT broker.
- Chiếc X4 đã đăng ký theo dõi đúng topic đó sẽ nhận bản tin, phân tích và cập nhật màn hình e-ink.
Trong thiết kế mặc định, dự án dùng broker công khai broker.hivemq.com. Cách này tiện để thử nghiệm, nhưng cũng là lý do bạn không nên gửi nội dung nhạy cảm qua kênh mặc định. Bạn có thể đổi sang broker riêng, và nên đặt topic thật riêng, khó đoán để tránh bị người khác vô tình gửi tin vào cùng topic.
Một ưu điểm của cách làm này là tính chủ động: bạn quyết định khi nào gửi, gửi nội dung gì và gán trạng thái nào. Nó không tự động đọc trộm suy nghĩ hay tin nhắn của trợ lý rồi phát lên màn hình.
Cần những gì để bắt đầu?
Phần cứng: một chiếc XTEINK X4 dùng chip ESP32-C3, màn hình e-ink 4,26 inch độ phân giải 800 × 480, cáp USB-C và một máy tính chạy macOS hoặc Linux để biên dịch và nạp firmware.
Phần mềm: Git để tải mã nguồn, PlatformIO để biên dịch và nạp firmware cho ESP32, cùng bộ công cụ MQTT client để script có thể gửi bản tin. Trên macOS có thể cài mosquitto bằng Homebrew, trên Ubuntu/Debian có gói mosquitto-clients.
Kiến thức nền: bạn nên quen với việc mở terminal, sửa một file mã nguồn, và hiểu cơ bản về Wi-Fi và MQTT. Nếu chưa từng nạp firmware cho ESP32, hãy đọc kỹ tài liệu của dự án và thử trên máy phụ trước khi dùng máy chính.
Các bước cài đặt tóm tắt
Các bước dưới đây là bản tóm tắt theo tài liệu gốc của dự án. Chi tiết đầy đủ, tên file và câu lệnh chính xác luôn nằm ở kho mã nguồn, và bạn nên đối chiếu trực tiếp với bản README mới nhất trước khi làm theo.
- Tải mã nguồn: clone kho maddiedreese/xteink-tamagotchi từ GitHub về máy tính.
- Đặt topic riêng: mở file firmware/src/main.cpp và đổi MQTT_TOPIC thành một chuỗi riêng của bạn. Đây là bước quan trọng để máy của bạn không nhận tin nhắn của người khác.
- Nạp firmware: kết nối X4 bằng cáp USB-C, vào thư mục firmware rồi chạy lệnh nạp của PlatformIO.
- Kết nối Wi-Fi: sau khi nạp xong, máy sẽ phát mạng Wi-Fi tên Tamagotchi-Setup. Bạn kết nối vào mạng này, mở cổng cấu hình ở địa chỉ 192.168.4.1 nếu cổng không tự hiện, chọn Wi-Fi nhà bạn và lưu lại. Khi kết nối thành công, thanh trạng thái sẽ báo Wi-Fi và MQTT đều ổn.
- Cài skill: chép thư mục skill trong kho mã nguồn vào thư mục skill của trợ lý AI, rồi cấu hình đúng topic đã đặt ở bước 2. Hai bên phải dùng cùng một topic mới nói chuyện được với nhau.
- Thử gửi tin: chạy script kèm tin nhắn và trạng thái, ví dụ trạng thái đang nói, đang suy nghĩ, đang làm việc, hào hứng hay lỗi. Màn hình X4 sẽ đổi hình và hiển thị nội dung tương ứng.
Nếu không dùng trợ lý AI cụ thể mà dự án hướng tới, bạn vẫn có thể dùng chiếc X4 như một thiết bị nhận MQTT thông thường: chỉ cần gửi đúng định dạng JSON tới đúng topic là màn hình sẽ cập nhật. Nhờ vậy dự án cũng có thể tích hợp với các trợ lý hoặc hệ thống tự động khác, miễn là chúng gửi được MQTT.
Tự tạo nhân vật của riêng bạn
Vì kho mã nguồn không kèm sprite, bạn cần tự vẽ hoặc tạo 8 hình tương ứng 8 trạng thái. Tài liệu gốc gợi ý kích thước 200 × 200 pixel, định dạng PNG nền trong suốt, phong cách pixel art và ưu tiên hình đen trắng 1-bit để hiển thị đẹp trên e-ink.
Quy trình trong tài liệu gồm: tạo hình gốc, tách nền, đưa về pixel art 200 × 200, chạy script chuyển đổi PNG thành file header cho firmware, chép file header vào firmware rồi biên dịch lại. Nghe nhiều bước nhưng mỗi bước đều đơn giản, và đây là phần vui nhất của dự án: nhân vật của bạn sẽ là duy nhất, không đụng hàng với ai.
Một lưu ý về ảnh: vì dự án không cung cấp sẵn hình nhân vật, bài viết này đăng không kèm ảnh chụp màn hình từ kho mã nguồn. Nếu bạn tự tạo sprite, hãy chỉ dùng hình do chính bạn vẽ hoặc hình có giấy phép rõ ràng, tránh dùng hình nhân vật có bản quyền.
Nó hợp với ai, và chưa hợp với ai?
Hợp với bạn nếu: bạn thích vọc ESP32, đã quen với PlatformIO và MQTT, muốn có một màn hình phụ vui mắt để theo dõi trợ lý AI, hoặc muốn học cách một thiết bị e-ink nhận dữ liệu thời gian thực qua MQTT.
Chưa hợp nếu: bạn chỉ cần một máy đọc sách ổn định để đọc mỗi ngày, ngại nạp firmware, ngại cấu hình Wi-Fi và MQTT, hoặc không muốn thiết bị phụ thuộc vào máy tính và mạng. Trong trường hợp đó, giữ nguyên firmware đọc sách sẽ nhẹ đầu hơn nhiều.
Cũng cần hiểu rõ bản chất: đây không phải trò chơi Tamagotchi độc lập, nơi bạn cho thú ăn và thú tự lớn lên. Nó là một màn hình hiển thị trạng thái của trợ lý AI, lấy cảm hứng từ thú ảo. Nếu bạn tắt máy tính, ngắt mạng hay không gửi tin qua skill, màn hình sẽ không tự sinh ra hoạt động mới.
Một số sự cố thường gặp
- Màn hình kẹt ở Starting: thường do máy đang chờ cấu hình Wi-Fi. Hãy kết nối vào mạng Tamagotchi-Setup và hoàn tất bước nhập Wi-Fi.
- Wi-Fi báo dấu gạch: máy đã mất kết nối. Theo tài liệu, máy sẽ tự mở lại cổng cấu hình sau một khoảng thời gian để bạn nhập lại Wi-Fi.
- MQTT báo dấu gạch: máy chưa nối được tới broker. Hãy kiểm tra mạng, kiểm tra broker có hoạt động không, và chắc chắn topic ở hai phía trùng nhau.
- Tin nhắn bị cắt ngắn: giới hạn hiển thị là 288 ký tự. Tin dài hơn sẽ bị rút gọn khi đưa lên màn hình.
- Màn hình không cập nhật: kiểm tra máy có đang ở chế độ ngủ không, kiểm tra Wi-Fi và MQTT đã báo ổn chưa, và thử khởi động lại máy.
Cảnh báo rủi ro và bảo hành
Đây là firmware không chính thức, do cộng đồng phát triển, không phải sản phẩm hay bản cập nhật của XTEINK. Việc nạp firmware lạ luôn đi kèm rủi ro: máy có thể treo, mất cấu hình, phải nạp lại firmware gốc, hoặc trong trường hợp xấu nhất là không khôi phục được.
- Chỉ thử khi bạn chấp nhận rủi ro và hiểu rằng việc này có thể ảnh hưởng tới bảo hành của nhà sản xuất.
- Trước khi nạp, hãy sao lưu dữ liệu, ghi lại firmware đang dùng, và giữ sẵn cách quay về firmware gốc.
- Không gửi mật khẩu, mã xác thực, nội dung riêng tư hay dữ liệu nhạy cảm qua broker công khai. Nếu cần dùng thật, hãy dùng broker riêng và topic riêng.
- Không nạp firmware từ link lạ ngoài kho mã nguồn chính thức. Luôn kiểm tra tên kho, tác giả và nội dung file trước khi chạy lệnh.
- Nếu máy là máy chính dùng để đọc sách hằng ngày, hãy cân nhắc dùng máy phụ để thử nghiệm.
Với những ai thích vọc vạch, XTeInk Tamagotchi là một ví dụ thú vị cho thấy màn hình e-ink không chỉ để đọc. Chỉ với một chiếc X4, một MQTT broker và một chút cấu hình, bạn đã có một người bạn thú ảo luôn cập nhật trạng thái làm việc của trợ lý AI ngay trên bàn. Còn nếu bạn ưu tiên sự ổn định, hãy cứ để chiếc X4 làm tốt nhất việc của nó: đọc sách.
