Hack Timex m851
(lock.cmpxchg8b.com)- Timex m851 trông giống một chiếc đồng hồ số dành cho người chạy bộ, nhưng thực ra là một nền tảng siêu tiết kiệm điện có thể chạy ứng dụng người dùng chỉ với CPU Seiko S1C88 8-bit và 2KB RAM
- Các chân ở cạnh bên là USB, có thể đồng bộ dữ liệu như lịch hẹn, và với SDK của Timex có thể build
cc helloworld.crồi nạp trực tiếp lên đồng hồ - WatchApp có cấu trúc thay thế mã theo từng state do RAM hạn chế, đồng thời dùng chung API cho mã dùng chung, biến và dữ liệu lâu dài
- Kernel đảm nhiệm các tác vụ mức thấp như chuyển sự kiện, timer, tiếng bíp, cuộn màn hình, truy cập cơ sở dữ liệu, và điều khiển núm vặn cùng đèn nền
- Đây là thiết bị đã ngừng sản xuất nên khó kiếm, nhưng nhờ trình mô phỏng Virtual Datalink cùng tài liệu và mã ví dụ được công khai, có thể phát triển mà không cần reset đồng hồ thật mỗi lần
Nền tảng phát triển bên trong một chiếc đồng hồ nhỏ
- Timex m851 là đồng hồ số có CPU Seiko S1C88 8-bit, 48KB ROM, 2KB RAM và màn hình chính dạng dot-matrix 42x11
- CPU được thiết kế với mục tiêu vận hành siêu tiết kiệm điện, có thể hoạt động 3 năm chỉ với một viên pin
- Các chân ở cạnh bên là USB, được dùng để đồng bộ dữ liệu như lịch hẹn với đồng hồ
- Có thư viện cho Linux là libdlusb
- Nếu dùng SDK do Timex cung cấp, có thể build ứng dụng bằng
cc helloworld.cvà tải lên đồng hồ - Bộ công cụ mặc định có dạng wizard thời Windows XP, nhưng bên trong chạy toolchain kiểu UNIX
Ví dụ WatchApp và hệ sinh thái sẵn có
- Ví dụ hello world và
Makefilecó thể xem trong kho taviso/timex - Trên nền tảng này đã có nhiều WatchApp như game, tiện ích và công cụ
Cấu trúc WatchApp: state và mode
- Ứng dụng được chia thành các state, và khi state thay đổi thì mã đang hoạt động sẽ bị loại bỏ, mã mới sẽ được nạp lên
- Ứng dụng có thể dùng tối đa khoảng 30KB mã hoặc dữ liệu, nhưng RAM chỉ có khoảng 2KB
- Không có paging, và không thể chứa toàn bộ mã trong RAM nên cần cấu trúc state
- Có không gian mã dùng chung cho mọi state, cùng với không gian biến và API cơ sở dữ liệu cho dữ liệu bền vững
- Một số state ở phần đầu được dành riêng cho xử lý sự kiện chung, phần còn lại ứng dụng có thể dùng theo ý muốn
- mode tương ứng với ứng dụng ở tiền cảnh
- Ứng dụng thường cung cấp mode, nhưng cũng có thể thêm tác vụ nền hoặc tác vụ định kỳ
- Nếu yêu cầu chuyển mode bằng
coreRequestModeChangeNext();thì ứng dụng tiếp theo sẽ giành quyền điều khiển
Xử lý sự kiện và dịch vụ kernel
- Mỗi state cần có trình xử lý sự kiện
- Các sự kiện bao gồm vào state, kéo núm vặn ra hoặc đẩy vào lại, xoay núm vặn, nhấn nút và nhập từ nút mode
- Có thể bỏ qua các sự kiện không cần thiết
- Kernel phụ trách xử lý phần cứng, phân phối sự kiện và cung cấp nhiều dịch vụ
- timer
- tạo tone và tiếng bíp
- cuộn màn hình
- truy cập bản ghi cơ sở dữ liệu
- cấu hình núm vặn
- điều khiển đèn nền
- Mã ví dụ dùng các dịch vụ kernel như
lcdClearDisplay()vàlcdDispBannerMsg()để hiển thị thông điệp banner"hello!"
Môi trường debug giúp giảm số lần reset
- Không có bảo vệ bộ nhớ, nên ứng dụng có thể ghi đè lên bộ nhớ kernel
- Kernel phải báo cho watchdog biết vẫn còn sống mỗi 2 giây, nếu không watchdog sẽ reset đồng hồ
- Khi thực hiện tính toán nặng thì cần làm mới watchdog bằng
hwResetWatchdog();
- Khi thực hiện tính toán nặng thì cần làm mới watchdog bằng
- Virtual Datalink là trình mô phỏng mã nguồn mở của bên thứ ba
- source
- Chỉ dành cho Windows và được viết bằng Delphi
- Cung cấp breakpoint có điều kiện, disassembler, lưu trạng thái, phân tích tài nguyên và phân tích điện năng
Tìm thiết bị đã ngừng sản xuất và tài liệu tham khảo
- Timex m851 đã ngừng sản xuất từ lâu và ngày càng khó tìm hơn
- Có thể tìm thấy thiết bị trên eBay mà chỉ cần thay pin là dùng như mới
- Nếu không có cáp, có thể tận dụng việc nó dùng chân USB Type-A tiêu chuẩn và một đầu nối đặc biệt để dùng cáp USB cũ cùng kẹp cá sấu
- Timex T5G751 cũng dùng cùng đầu nối, tương đối dễ tìm hơn nên có thể dùng để kiếm cáp
- Biến thể m851 có tên “dress edition” có cùng thông số nhưng thân vỏ khác, và đôi khi được đăng với số model khác
- Tài liệu tham khảo
- Design Guide: tài liệu quan trọng nhất và được viết rất tốt
- CPU manual: hướng dẫn CPU
- tài liệu toolchain
- API reference: chứa danh sách các dịch vụ do kernel cung cấp
1 bình luận
Ý kiến trên Hacker News
Một trong những điểm như phép màu là Epson SoC (PN S1C88349) tiết kiệm điện đến mức khó tin: khi chạy ở chế độ tiết kiệm điện 32kHz, dòng tiêu thụ chỉ 9 microampere
Điều này khiến ta nghĩ xem có thể làm được bao nhiêu việc với ngân sách 32.000 chu kỳ mỗi giây
Hơn nữa, nó còn có 48K ROM, 2K RAM, 3 bộ định thời, UART và cả bộ chuyển đổi A/D
[1] https://global.epson.com/products_and_drivers/semicon/pdf/id...
Chip Seiko-Epson, cùng với EM-Swatch và chip OKI-Casio, được dùng trong đồng hồ, máy tính bỏ túi, nhiệt kế và các thiết bị LCD segment giá rẻ, tiêu thụ điện thấp, vốn phải chạy trong nhiều năm chỉ bằng một viên pin cúc áo
Những chiếc máy tính bỏ túi và nhiệt kế kỹ thuật số hơn 15 năm tuổi cũng dùng các chip Seiko-Epson kiểu này, và đến giờ vẫn chạy bằng viên pin cúc áo 1,5V ban đầu. Nếu tính đến mức tự xả của pin lithium theo thời gian thì điều đó khá đáng kinh ngạc
Kích thước binary của nhiều ứng dụng di động ngày nay còn lớn hơn cả hệ điều hành và toàn bộ ứng dụng ngày xưa vốn làm được những việc rất hữu ích
Thật đáng sợ khi nghĩ xu hướng này sẽ đi đến đâu, và có vẻ cũng ít khả năng sẽ có ai hay điều gì đó kìm nó lại
Theo tôi nhớ, tính cả những thứ như rò rỉ ở công tắc nguồn thì danh nghĩa vẫn dưới 100nA, thực sự rất ấn tượng
Đó là một vi điều khiển 4-bit (!) 32KHz với ROM 12-bit (‼) 6.144 word, RAM nội 4-bit 640 word, và frame buffer 4-bit 160 word cho driver LCD tích hợp. Thậm chí còn có thể double buffering
Quả là một con chip tuyệt đẹp. Khoảng một năm trước tôi đã làm một emulator bằng TypeScript nhưng chưa đưa lên GitHub. Nếu có ai quan tâm thì tôi có thể đưa lên, và nó cũng chạy được firmware Tamagotchi chưa chỉnh sửa
Thực ra nó là EEPROM, và có vẻ hơi giống Flash memory
Nếu muốn thứ có nhiều tính năng hơn một chút, Bangle.js cũng đáng xem
Ưu điểm là có Bluetooth, GPS, gia tốc kế, mô-tơ rung và màn hình màu. Nhược điểm là pin dùng ngắn hơn 3 năm rất nhiều
[0] https://banglejs.com/
Họ giới thiệu Bangle.js 2 như một lựa chọn thay thế để thoát khỏi những smartwatch đắt tiền, với các điểm nhấn: “màn hình luôn bật đọc được dưới ánh nắng, pin 4 tuần, tính linh hoạt hoàn toàn, toàn quyền kiểm soát dữ liệu”
Khoảng 15 năm trước tôi từng có chiếc đồng hồ này và có thể ghi lại nhiều thứ
Tôi lưu trong đó địa điểm lớp học tiếp theo, lịch xe buýt của những trạm hay dùng, pha của Mặt Trăng và những thứ tương tự
Trước thời smartphone, xem lịch xe buýt trên đồng hồ đeo tay trông như James Bond vậy :)
Ước gì họ vẫn còn làm những chiếc đồng hồ như thế. Với mức tiêu thụ điện như này, có lẽ dùng năng lượng mặt trời là có thể vừa sạc vừa dùng gần như mãi mãi
Hơn 20 năm trước tôi từng lưu lịch xe buýt dưới dạng bản nháp SMS trên điện thoại Siemens
Một cách tiếp cận hiện đại hơn cho đồng hồ có thể hack được có lẽ là cái này
https://github.com/sharandac/My-TTGO-Watch
Tôi phát hiện ra nó khi đang tìm hiểu để làm một chiếc iPod Nano 7G DIY bằng board phát triển LILYGO T5 E-Paper
Sản phẩm: https://www.aliexpress.com/item/1005002474854718.html
Kho mã nguồn: https://github.com/Xinyuan-LilyGO/LilyGo-T5-Epaper-Series
Nếu tôi có thêm thời gian và kỹ năng phía Arduino, có lẽ nó đã có thể trở thành một sản phẩm thay thế iPod Nano 7G tuyệt vời ;)
Code mặc định hầu như không hoạt động tử tế, và pin chỉ được khoảng 12 giờ ngay cả khi chẳng làm gì. Dù vậy, nếu bạn thích debug code của người khác thì đúng là một món rất đáng kinh ngạc so với giá
Tôi đã lấp một số phần còn thiếu và tìm ra các thiết lập để giảm tiêu thụ điện, khiến nó chạy được khoảng 6 giờ khi sử dụng “bình thường”
Có lẽ code hiện tại đã tốt hơn nhiều, nhưng ngân sách năng lượng của nó chắc chắn gần với smartwatch Apple hoặc Samsung hơn nhiều so với m851 siêu tiết kiệm điện kiểu thập niên 80
Nếu thích thử nghiệm thì đây là một dự án nhỏ thú vị và xứng đáng với số tiền bỏ ra. Còn nếu kỳ vọng một thứ cạnh tranh với iWatch thì rất có thể sẽ thất vọng
Nếu “chạy 3 năm chỉ với một viên pin” là ưu điểm lớn, Casio chắc chắn vẫn đang làm những thứ như vậy
Chỉ cần tìm “Casio MIP display” là được
Có thêm thông tin về dòng Timex Datalink tại đây
https://en.m.wikipedia.org/wiki/Timex_Datalink
Liệu có thể tái hiện bằng IPS LCD hiện đại không?
Hy vọng sẽ có thêm nhiều đồng hồ và thiết bị đeo được làm bằng những chip 8-bit tiêu thụ điện thấp như thế này, và có chân dữ liệu lộ ra để có thể hack được
Với đồng hồ thì thời lượng pin 3 năm là điểm cốt lõi. Nếu phải bận tâm đến việc sạc đồng hồ thì với tôi là loại ngay
Chiếc Swatch tôi đang dùng hiện vẫn giữ giờ đều đặn được khoảng 1 năm với cùng một viên pin. Vấn đề của đồng hồ cơ giá rẻ là nếu không cẩn thận thì có thể lên dây cót quá tay. Vì vậy cứ vài năm tôi lại làm hỏng một chiếc, nhưng dù sao chúng cũng rẻ
Điểm hay của cả hai loại đồng hồ là không cần sạc mỗi ngày. Tất nhiên đồng hồ lên dây cót thì vẫn phải lên dây cót
Nó nhắc lại rằng chúng ta thực ra có thể có những món đồ tốt. Miễn là có thị trường cho những món đồ như vậy
Tôi muốn có một chiếc đồng hồ tích hợp tốt, dùng ít pin, ít phiền khi đeo hoặc thay thế, và thiết kế cũng chấp nhận được
Thật tiếc là thứ tốt nhất hiện chúng ta có thể làm lại là Sensorwatch [1]
[1] https://www.sensorwatch.net
Sửa: Sensorwatch rất tuyệt, nhưng vẫn chưa phải là một hệ sinh thái
Tôi tò mò không biết nó có thể khiến người ta muốn làm gì với bo mạch ấy
Trông còn đơn giản hơn Ez430-chronos của TI và có vẻ ổn
Tuy nhiên 3 năm với một viên pin thì không có vẻ quá ấn tượng. Tất nhiên còn tùy bạn dùng và cài ứng dụng nào, và việc có thể lập trình được là rất hay
[0] https://www.sparkfun.com/products/retired/10019
Năm 2018 tôi làm mất một chiếc Casio F91, và tuần trước khi đóng đồ cho chuyến đi ca nô thì tìm thấy nó. Giờ và ngày chỉ lệch vài giây so với chiếc Casio F91 tôi đang đeo trên tay
Trước đây tôi đã mua một chiếc nhưng nó biến mất khi chuyển nhà. Tôi muốn nghịch lại nó
Sửa: À, hóa ra bạn đã đưa link có ghi “RETIRED” trong danh sách sản phẩm. Nếu là sản phẩm của TI thì sẽ lạ nếu TI không ngừng sản xuất đúng lúc thị trường bắt đầu có phản hồi