1 điểm bởi GN⁺ 2025-05-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đã chọn SF32LB52J của SiFli làm chip cho Core Time 2
  • Một trong những quyết định quan trọng nhất khi thiết kế smartwatch chính là chọn chip
  • Khả năng tương thích phần mềm, mức tiêu thụ điện năng và giá thành đều ảnh hưởng lớn đến việc chọn chip
  • Chip SiFli cung cấp SDK mã nguồn mở, mức tiêu thụ điện năng thấp và bộ nhớ dồi dào
  • Loạt bài này trong tương lai cũng sẽ đề cập đến cách chọn các linh kiện chủ chốt khác như màn hình

Tổng quan

  • Bài viết này là phần đầu tiên của loạt bài giới thiệu cách tự làm một chiếc smartwatch
  • Mục tiêu là cho thấy rằng vào khoảng năm 2025, bất kỳ ai cũng có thể tạo ra một chiếc smartwatch đủ dùng chỉ với một chút nỗ lực
  • Kỳ vọng rằng việc PebbleOS được mã nguồn mở sẽ thúc đẩy sự phát triển của các mẫu smartwatch sáng tạo hơn
  • Smartwatch về cơ bản gồm ba thành phần chính: phần cứng, phần mềm (firmware/hệ điều hành) và ứng dụng di động

Phân tách các thành phần phần cứng

  • Phần cứng smartwatch có thể được chia thành năm nhóm hệ thống lớn
    • Chip vi điều khiển (thường tích hợp radio Bluetooth)
    • Màn hình
    • Cảm biến và thiết bị đầu ra (nút bấm, cảm ứng, micro, gia tốc kế, loa, v.v.)
    • Các linh kiện điện tử khác (chip, linh kiện thụ động, PCB, pin, v.v.)
    • Cấu trúc cơ khí (vỏ đồng hồ, kính, nút bấm, dây đeo, cáp sạc, v.v.)
  • Các thành phần như cảm biến, pin, dây đeo và micro hiện khá dễ chọn vì có nhiều lựa chọn ở nhiều mức giá khác nhau
  • Những quyết định khó nhất là vi điều khiển + radio Bluetooth và màn hình

Tầm quan trọng của việc chọn chip (vi điều khiển)

  • MCU đóng vai trò là “trái tim” của smartwatch, tích hợp CPU, RAM, bộ nhớ flash, I/O và radio vào một con chip
  • Việc chọn MCU phù hợp là tìm điểm cân bằng giữa nhiều ràng buộc như chi phí, điện năng và khả năng tương thích phần mềm
  • Mỗi MCU có SDK, driver và hệ thống build khác nhau nên làm tăng độ khó của phát triển phần mềm
  • PebbleOS chỉ được tối ưu cho MCU của một hãng cụ thể (STM), nên khi chuyển sang MCU khác sẽ cần thay đổi driver và hệ thống build
  • Một số MCU gặp khó khăn trong việc hỗ trợ FreeRTOS cần thiết cho PebbleOS
  • Vì không phải sản xuất số lượng lớn, chi phí phát triển phần mềm chiếm tỷ trọng rất lớn trong giá thành sản phẩm

Các chip từng dùng và quá trình lựa chọn

  • Các mẫu đồng hồ Pebble trước đây sử dụng STM32F2, và thời kỳ đầu việc chọn chip thường dựa trên quan hệ hoặc lời khuyên từ xung quanh
  • Gần đây, nguyên mẫu smartwatch Core 2 Duo được chế tạo bằng chip Nordic nRF52840
    • Quá trình phát triển được thực hiện bằng cách chuyển sang ngăn xếp BLE mã nguồn mở (nimBLE)
  • Với Core Time 2 cần bộ nhớ lớn hơn và hiệu năng cao hơn, nRF52840 đã bộc lộ giới hạn
    • Chip giá rẻ thế hệ mới của Nordic (nRF54L15) thiếu RAM, còn chip cao cấp (nRF54H) thì giá quá cao
    • Cũng cần giao diện đặc biệt để điều khiển màn hình màu của Core Time 2

Phát hiện và lựa chọn chip SiFli

  • Đã xem xét nhiều ứng viên (Apollo, BES, Dialog, v.v.) nhưng vẫn chưa hài lòng vì thiếu SDK mã nguồn mở và các lý do khác

  • Một số chip như BES có môi trường phát triển không phù hợp do NDA, không công khai mã ví dụ và những hạn chế tương tự

  • Tình cờ nhận được email từ CEO của SiFli, sau khi trao đổi thì xác nhận rằng họ rất tích cực với hệ sinh thái mã nguồn mở

  • Chip SiFli hiện đã được dùng trên hàng chục triệu smartwatch (các thương hiệu: Redmi, Oppo, Noise, v.v.)

    • Mẫu nhỏ nhất (SF32LB52x) có từ 512K SRAM trở lên, 16M PSRAM và bộ điều khiển màn hình MIP chuyên dụng
    • Mức tiêu thụ điện năng thấp (~50uA khi kết nối BLE), giá dưới 2 USD
    • Có tùy chọn bổ sung thêm 1~2MB SRAM
    • Cung cấp SDK mã nguồn mở trên GitHub, đồng thời cam kết hỗ trợ port PebbleOS
  • Kết quả là chip cho Core Time 2 được chọn là SF32LB52J (phiên bản 1.8V)

Kết luận và hướng đi tiếp theo

  • Core Time 2 sẽ được phát triển bằng chip SiFli SF32LB52J
  • Bài tiếp theo sẽ đề cập đến quá trình chọn màn hình

Liên kết tham khảo

1 bình luận

 
GN⁺ 2025-05-16
Ý kiến Hacker News
  • Nhấn mạnh rằng PebbleOS không phải là cái tên duy nhất trong mảng này, đồng thời giới thiệu Espruino, một triển khai Javascript nhỏ dành cho vi điều khiển, được dùng trong bangle.js và Fallout Pip Boy, rất dễ hack thiết bị theo thời gian thực; cũng chia sẻ kèm một liên kết thảo luận trên Github về Espruino
    • Đây là lần đầu tôi nghe về bangle.js, và tôi thích việc có thể vọc thoải mái bằng một ngôn ngữ mình đã biết; hơi tiếc là tôi đã muốn mua bản thế hệ đầu nhưng giờ không còn bán nữa
    • Cảm ơn vì đã nhắc đến những đối thủ ít được chú ý nhưng làm rất tốt; Pebble cũng rất tuyệt, nhưng họ cũng xứng đáng được quan tâm; và show Amazon Fallout cũng khá vui, có dịp thì nên xem
    • Nhân tiện, còn có cả PineTime nữa
  • Chú ý đến cụm từ "SDK mã nguồn mở"; tôi thấy hứng thú với ý tưởng MCU BLE đi kèm SDK code mã nguồn mở, nhưng thực tế code BLE lại ở dạng binary blob; nếu đã mô tả là mã nguồn mở thì theo tôi phải đọc được toàn bộ mã nguồn
    • Firmware cho thiết bị radio BLE hầu như luôn được cung cấp dưới dạng binary blob vì lý do IP và quy định quản lý
  • Chiếc smartwatch này theo tiêu chuẩn ngày nay không quá thông minh; tôi sẽ nhớ khá nhiều tính năng tiện lợi trên chiếc smartwatch mình đang dùng như thanh toán NFC, GPS băng tần kép, kết nối 4G LTE; Pebble (và repebble) đánh đổi những thứ đó để lấy thời lượng pin nhiều tuần, nhưng việc phải sạc Galaxy Watch hai ngày một lần không bất tiện đến mức khiến tôi từ bỏ tất cả những tính năng mạnh mẽ kia
    • Ngược lại, tôi không quan tâm đến toàn bộ những tính năng đó và ưu tiên thời lượng pin dài; việc có nhiều thiết bị cho nhiều kiểu người dùng khác nhau là điều tốt; chiếc smartwatch này không hợp với bạn không có nghĩa là nó "không thông minh", chỉ là không phù hợp với người dùng đó thôi
    • Garmin đã cung cấp phần lớn các tính năng kiểu này cùng với thời lượng pin nhiều tuần; chỉ còn thiếu 4G, và tôi còn nghe nói thiết bị năm sau có thể sẽ có
    • Tôi cũng sẽ thấy thiếu nếu không có GPS, nhưng tôi vẫn chưa tìm được thiết bị nào mang lại cảm giác hài lòng như Pebble từng làm; Garmin lại phải thỏa hiệp ở chỗ khác (pin, widget, lịch, độ dễ đọc của màn hình, v.v.); mọi thứ đều là đánh đổi
    • Với tôi thì tất cả những tính năng đó đều không cần thiết; chỉ cần một chiếc đồng hồ nhận thông báo, đo nhịp tim cơ bản và tùy biến được đôi chút là đủ; nếu phải sạc nhiều hơn một lần mỗi tuần thì tôi không muốn đeo
    • Chỉ riêng thời lượng pin thôi cũng đã rất ấn tượng
  • Chia sẻ thêm thông tin về con chip này qua một bài viết trên cnx-software
  • Thật thú vị khi họ chọn thiết kế một chip duy nhất thay vì dùng chip chính và chip BLE riêng; MCU hiệu năng cao thường không có RF nên thiết kế 2 chip đôi khi lại phù hợp hơn
    • Ngay cả các MCU cao cấp hiện đại cũng có những chip cho phép dùng cả Bluetooth lẫn Wi‑Fi như NRF hay ESP32; với tình hình hiện nay cá nhân tôi nghiêng về ESP32 hơn, vì nó liên tục được cải thiện và có cộng đồng hỗ trợ tốt; tôi cũng đang phát triển một nền tảng smartwatch dựa trên micropython
    • Lõi Cortex-M33 của chip SiFli nhanh hơn nhiều so với lõi M4 dùng trong Pebble trước đây; không cần MCU nhanh hơn nữa, điều quan trọng hơn là thời lượng pin, và lần này việc dùng MCU tích hợp Bluetooth là một nâng cấp lớn khi kéo thời lượng từ khoảng 1 tuần lên khoảng 1 tháng
    • Nếu chỉ là một chiếc đồng hồ thì đâu nhất thiết phải cần tới một máy tính UNIX; hiển thị giờ, đo nhịp tim, giao tiếp với AWS, v.v. thì một MCU đơn giản là đủ
    • Tăng số lượng chip sẽ làm dự án phức tạp hơn; mỗi chip lại cần linh kiện thụ động, bộ dao động, phải lo điều phối giao tiếp giữa các chip, cập nhật firmware, cách debug, v.v.; như vậy thì thà hy sinh một chút thời lượng pin còn hơn
  • Thật vui khi cuối cùng cũng có một sản phẩm theo hướng mã nguồn mở xuất hiện trong ngành chip tiết kiệm điện; tôi đã đăng ký ngay khi thấy công bố rePebble; nhưng rồi sau đó tôi mới nhận ra thứ mình thật sự muốn không phải smartwatch mà là một chiếc đồng hồ "ngu" chỉ có thông báo rung; đây là một thị trường ngách với ít người nhưng lại có nhóm rất quan tâm; sau 2 năm đeo Casio F105, tôi không thể chịu nổi thứ gì lớn hơn, nặng hơn hay dày hơn nó; nếu chỉ có Bluetooth thì tôi vẫn sẵn sàng chấp nhận sạc mỗi tuần một lần; vì vậy dạo này tôi đang tính gắn một chip Bluetooth thật nhỏ có thể nhận mọi thông báo từ iPhone, cùng motor rung và pin lithium nhỏ, vào giữa dây đeo đồng hồ; tôi vẫn nhớ lần đầu dùng Mi Band 1, không hề có màn hình mà chỉ có 3 LED RGB với màu thông báo khác nhau theo từng ứng dụng, và tôi có thể biết ngay khá dễ dàng là loại tin nhắn gì vừa tới
    • Có nhắc đến một sản phẩm tên W770 của Citizen; gần đây tôi mua đồ cũ với giá dưới 200 USD, đây là chiếc đồng hồ khá ổn với chronograph, BLE, báo thức và motor rung; thay vì màn hình, nó hiển thị hầu hết thông tin bằng kim đồng hồ nên gần như chắc chắn phải đọc hướng dẫn sử dụng mới nắm được cách vận hành; nó sạc năng lượng mặt trời dựa trên siêu tụ điện nên ngay cả khi ở chỗ tối hoàn toàn cũng không phải lo pin trong nhiều tháng; siêu tụ điện là linh kiện có thể thay sau khoảng 15–20 năm sử dụng; nó cứ đều đặn làm đúng việc của mình mà không đòi hỏi gì; có thể Citizen còn có các mẫu khác có BLE; nếu ai đó reverse engineer giao thức thông báo/Bluetooth và làm một ứng dụng mã nguồn mở thì sẽ mở ra nhiều khả năng thú vị cho dân hacker
    • Tôi vẫn đang dùng OG Pebble và rất hào hứng vì nó quay trở lại, nhưng không có kế hoạch nâng cấp; chỉ cần báo thức rung và thông báo là đủ, nhưng bắt buộc phải có màn hình nhìn rõ cả trong môi trường sáng và thân thiện với mắt lão; màn eInk của OG Pebble đáp ứng rất tốt điều đó; có thể đọc tin nhắn mà không cần rút điện thoại ra; hàng cũ giá 30 USD, pin mới cũng chỉ 15 USD nên rất đáng tiền; cộng đồng Rebble.io cũng vẫn hoạt động rất ổn
    • Tôi cũng ước có thể gắn một dây đeo hay khóa đồng hồ “thông minh” vào chiếc Seiko vintage của mình; chỉ cần thông báo rung trong vài tình huống rất cụ thể là đủ; còn mọi tính năng khác hay màn hình lại chỉ gây phiền
    • UX của Apple Watch khá khó chịu (ngón tay 1 cm chạm vào màn hình 2 cm...); tôi cũng không thích việc nó cố làm quá nhiều thứ; Pebble chỉ cần nhận cuộc gọi hay tin nhắn là đủ để tôi có thể ở xa điện thoại hơn; Pebble rất nhẹ; cài một mặt đồng hồ nhất định lên là có cảm giác như được về nhà
    • Tôi cũng chỉ muốn một chiếc đồng hồ “ngu” có rung thông báo; đa số thông báo chẳng hề gấp gáp mà chỉ vô ích làm mất tập trung; cuối cùng tôi tắt hết thông báo và chỉ vài tiếng mới tự kiểm tra điện thoại một lần; thứ thực sự cần lại là tính năng rung cho báo thức, kiểu như “sắp tới giờ xe buýt” hoặc “đến giờ nghỉ”; không cần các cảm biến thừa thãi
    • Withings ScanWatch cũng là sản phẩm khá phù hợp cho mục đích này, pin gần một tháng
    • Mong muốn của tôi về một fitness tracker thay vì đồng hồ cũng là nhu cầu khá hiếm; tôi không thích nhẫn và muốn dạng vòng tay hoặc lý tưởng hơn là băng đeo cổ chân, dù có lẽ sẽ khó đo nhịp tim hay thu thêm dữ liệu
    • Những thiết bị như Mi Band lấp đầy ngách này khá tốt; nhỏ, nhẹ, không gây vướng víu mà vẫn có màn hình và thời lượng pin ổn
  • Bắt đầu hack SoC Freqchip giá rẻ của Trung Quốc; trên Ali có thể mua smartwatch dùng chip này với giá 3 euro
    • Có người xin liên kết tới mẫu đồng hồ dùng con chip này, nói rằng đã tìm vài lần mà vẫn không thấy
    • Ngạc nhiên khi một số chip có giá 2,6 nhân dân tệ ($0.36) với MOQ 3.000 chiếc mà vẫn có Arm Cortex m3, BLE và cả hỗ trợ sig-mesh; cũng tò mò về mức độ dễ dùng của SDK
  • Thật vui khi thấy phần cứng ở mức nào đó là mã nguồn mở chạy PebbleOS; hy vọng đến năm 2025 kiểu blog căn lề trái sẽ biến mất, vì màn hình rộng đã phổ biến rồi mà vẫn cố làm cho việc đọc khó hơn thì thật đáng tiếc
  • Về nhận định rằng "ràng buộc thú vị và khó nhất là tương thích phần mềm", tôi lại nghĩ đây nên là mục cuối cùng trong danh sách vì là phần dễ giải quyết nhất
    • Riêng với sản phẩm này, tương thích phần mềm rất quan trọng vì hai lý do lớn: thứ nhất, quy mô đội ngũ hiện tại nhỏ hơn rất nhiều so với thời Pebble cũ nên ưu tiên hàng đầu là giảm bớt công việc phần mềm; thứ hai, toàn bộ app và mặt đồng hồ đều được phân phối dưới dạng binary ARM, nên nếu kiến trúc MCU khác đi thì sẽ mất tương thích ngược; ESP32 cũng vướng điểm này
    • Nếu mọi thứ đều là proprietary thì có thể vấp phải rất nhiều ngõ cụt; nó rất khác với phần cứng PC tiêu chuẩn
  • Tôi đọc bài này rất hứng thú; nimBLE là một Bluetooth stack tuyệt vời và thật đáng mong chờ khi nó mở ra tiềm năng phát triển trong tương lai cho Core Devices