Thủ thuật
Dùng Claude thiết kế mặt đồng hồ Casio cho PineTime giá 27 USD
(giờ Việt Nam)
Tóm tắt AI
Một lập trình viên đã sử dụng Claude để tạo mặt đồng hồ phong cách Casio cho PineTime, tận dụng trình giả lập InfiniSim để tối ưu hóa quy trình phát triển. Dự án cho thấy tiềm năng của AI trong việc hỗ trợ lập trình nhúng trên các thiết bị phần cứng giá rẻ.
Bản dịch AI

PineTime là một chiếc đồng hồ thông minh giá 27 đô la chạy firmware mã nguồn mở. Tôi đã để nó nằm trong ngăn kéo suốt một hoặc hai năm nay. Khi thấy dòng Tweet của @steveruizok về việc hack các thiết bị ESP32 với Claude, tôi đã tìm thấy cảm hứng để lấy chiếc PineTime của mình ra khỏi ngăn kéo và xem Claude có thể làm được những gì!
Nếu bạn biết "coding agent" là gì thì hãy mua cái này hoặc thứ gì đó tương tự (tôi không được tài trợ đâu, nhưng chúng có bán trên Amazon, Pi Hut, Ali và khắp mọi nơi) pic.twitter.com/iPvHxBiltf
Tôi biết mình muốn bắt đầu bằng việc xây dựng một mặt đồng hồ vì các mặt đồng hồ mặc định đi kèm khá đơn giản và nhàm chán. Tôi cũng vừa mới thấy dòng Tweet của @levelsio về việc tạo một mặt đồng hồ Casio tùy chỉnh cho chiếc Apple Watch của anh ấy.
Tôi tự hỏi liệu mình có thể tạo ra thứ gì đó tương tự cho PineTime (với một chút trợ giúp từ Claude) hay không. Hóa ra, PineTime là một chiếc đồng hồ tuyệt vời để hack cùng Claude!
Mặc dù tôi vẫn hay nói là "Claude", nhưng thực tế tôi đã thực hiện phần lớn công việc trong OpenCode với một số mô hình open weights yêu thích của mình: Kimi K3 & K2.6, và DeepSeek v4 Pro & Flash. Tôi bắt đầu bằng việc clone repo InfiniSim (có chứa một git submodule cho InfiniTime) và yêu cầu Claude làm cho bản build hoạt động. Việc này diễn ra rất nhanh chóng và dễ dàng trên Ubuntu! Sau đó, tôi trở nên khá tham vọng: tôi đưa cho Claude bức ảnh từ Tweet của @levelsio và yêu cầu Claude sao chép mặt đồng hồ đó, lấy mã nguồn từ một mặt đồng hồ InfiniTime có sẵn làm điểm khởi đầu. Tôi cũng yêu cầu nó điều phối và sử dụng các sub-agent khi cần thiết cho các tác vụ phát triển được xác định phạm vi rõ ràng.
Nó đã tạo ra một bản phác thảo khá tốt, nhưng vẫn còn rất thô. Nó dường như chỉ đoán kích thước và vị trí văn bản, dẫn đến việc các thành phần nằm ở vị trí gần đúng nhưng lại chồng chéo lên nhau và không thể đọc được. Tuy nhiên, đó là một điểm khởi đầu tốt để chúng tôi có thể lặp lại. Tôi nghĩ Fable có lẽ đã có thể hoàn thành công việc và đạt độ chính xác đến từng pixel mà không cần giám sát, nếu tôi cung cấp cho nó một vòng lặp phản hồi để chụp ảnh màn hình trình mô phỏng. Nhưng vì tôi đang thực hiện việc này với các mô hình open weight trên OpenCode, với ngân sách hạn hẹp, tôi đã chọn tiết kiệm token bằng cách tự mình tham gia nhiều hơn và đưa ra phản hồi cụ thể với các tác vụ riêng biệt cùng các bước tiếp theo rõ ràng. Tôi đã sửa từng thứ một – làm cho từng phần tử văn bản trở nên chuẩn xác trước khi chuyển sang phần tiếp theo.
Tôi nhận thấy chúng tôi đang tốn rất nhiều công sức để xây dựng các phần tĩnh của màn hình và nhận ra rằng điều đó có thể không cần thiết. Tôi tự hỏi liệu mình có thể tạo một hình nền toàn màn hình với tất cả các phần tĩnh hay không, để chúng tôi chỉ cần lập trình các phần động của màn hình. Chúng tôi đã thử cách này và nó hoạt động trên trình mô phỏng! Sau khi cài đặt firmware lên đồng hồ thật, tôi thấy rằng chúng tôi đang đẩy giới hạn những gì chiếc đồng hồ nhỏ bé này có thể làm được. Mất khoảng 10 phút để truyền hình ảnh 240x240 qua Bluetooth để cài đặt vào thiết bị, và mất 1-2 giây để làm mới toàn bộ màn hình khi bạn vuốt. Đồng hồ không thể giữ toàn bộ hình ảnh này trong bộ nhớ cùng một lúc; nó phải stream từ hệ thống tệp. Nhưng điều đó hoàn toàn ổn đối với một mặt đồng hồ mà tôi đã xây dựng trong vài giờ! Có thể lúc nào đó tôi sẽ quay lại để xây dựng thêm phần nền bằng mã nguồn để nó có thể cập nhật tức thì. Nhưng hôm nay, tôi rất hài lòng với nguyên mẫu đang hoạt động của mình!
Tôi đã đẩy tất cả mã nguồn của mình lên GitHub và bạn có thể sử dụng trực tiếp hoặc dùng nó làm điểm khởi đầu cho dự án của riêng mình nếu muốn. Tôi cũng đã nhờ Claude tóm tắt những điều chúng tôi học được trong quá trình thực hiện vào một tệp AGENTS.md. Điều đó sẽ giúp bạn bắt đầu nhanh chóng và tránh được một số trở ngại mà tôi đã gặp phải nếu bạn muốn thử làm điều này với chiếc đồng hồ của riêng mình!
Tôi rất thích làm việc trong dự án này với AI! Môi trường ít rủi ro (không phải mã nguồn sản phẩm tại công việc chính của tôi) khiến tôi cảm thấy mình có thể thử bất cứ thứ gì mình muốn và lặp lại nhanh chóng. Thật sự rất bổ ích khi được làm việc trên firmware cho một thiết bị vật lý mà tôi có thể cầm nắm và sử dụng sau khi xây dựng xong! Vài năm trước khi mua chiếc PineTime này, tôi đã hết thời gian và động lực để học cách làm việc với codebase của InfiniTime, và chiếc đồng hồ đã nằm trong ngăn kéo suốt vài năm. Nhưng hôm nay, tôi đã có thể xây dựng một mặt đồng hồ mới chỉ trong vài giờ và cảm thấy rất vui khi làm điều đó! Tương lai thật tươi sáng!
Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.