スマートウォッチの作り方:チップ選定
(ericmigi.com)- 2025年に優れたスマートウォッチを作るには、まず目標とする体験を定め、それを MCU・ディスプレイ・バッテリー・ソフトウェア の制約内に収める必要がある
- チップ選択は単なる性能比較ではなく、ソフトウェア互換性、消費電力、部品単価が同時に関わる製品設計上の判断である
- Core 2 Duoでは、慣れ親しんだ Nordic nRF52840 を使い、PebbleOSの迅速な移植を狙ったが、Core Time 2ではより大きなカラーディスプレイのため、より多くのRAMと処理性能が必要だった
- SiFli SF32LB52xシリーズは、512KB以上のSRAM、16MB PSRAM、MIPディスプレイ周辺回路、約 50µAのBLE接続時電力、2ドル未満の価格、オープンソースSDKを提供する
- Core Time 2には、SF32LB527の1.8V版である SF32LB52J が使われる予定で、オープンソースのPebbleOSを維持しつつ、電力・コスト・ディスプレイ要件を満たす選択である
スマートウォッチ設計は制約を満たす作業
- スマートウォッチは大きく3つの部分に分かれる
- 実際の時計である ウォッチハードウェア
- ファームウェアまたはOSと呼ばれる ウォッチソフトウェア
- 通知の転送、ウォッチフェイスのダウンロードなどを担うiOS・Androidの モバイルコンパニオンアプリ
- スマートウォッチは、1つの形がすべての人に合うデバイスではなく、PebbleOSのオープンソース化が、それぞれのニーズに合ったスマートウォッチ制作につながることを期待している
- コンシューマー電子製品の設計は、目標とする体験を定めたうえで、それを実現可能な仕様と部品に分解するプロセスである
- 例:「常時オンで、日光下でも読め、30日持続するスマートウォッチ」
- 仕様例:e-paperディスプレイ、Bluetooth LE、防水、150ドルの小売価格
- 部品例:Sharp Memory LCD、150mAhリチウムポリマーバッテリー、FreeRTOS
ウォッチハードウェアを構成する5つのシステム
- ウォッチハードウェアは5つの中核システムに分かれる
- 通常Bluetoothラジオを含む マイクロコントローラーチップ
- ディスプレイ
- タクトスイッチ、タッチ、マイク、加速度計、スピーカーなどのセンサーと出力デバイス
- チップ、受動部品、PCB、バッテリーなどのその他の電子部品
- ケース、ガラス、ボタン、ストラップ、充電ケーブルなどの機構構造
- センサー、バッテリー、ストラップ、ケース、マイクなど、後ろの3つのシステムは、最近ではさまざまな価格帯で良い選択肢が多く、比較的選びやすい
- スマートウォッチ設計で最も難しい部品判断は、MCU/Bluetoothラジオ とディスプレイの選択である
Pebble時代のMCUとBluetoothの制約
- 初代Pebbleの時代には STM32F2 MCU を使用した
- Pebble以前の製品であるinPulseは、8KB RAMのLPC2103を使っていた
- 当時のPebbleのMCU仕様は、64〜144MHz、128〜256KB RAM程度だった
- 当時のMCUにはBluetoothラジオが統合されておらず、TI CC2564のような別チップを併用する必要があった
- MCUは、CPU、RAM、通常のフラッシュストレージ、入出力周辺回路、場合によってはラジオまでを1つの小さな集積回路に収めた、スマートウォッチの 中核チップ である
MCU選択が製品全体を左右する理由
- MCUは、スマートウォッチの最も厳しい条件である ソフトウェア互換性、消費電力、コストの中心にある
- 組み込みソフトウェアはコンピューターのOSよりもさらに断片化しており、ハードウェア要件に強く結びついている
- Linuxはハードディスク容量の制約が小さいため、17,000を超えるデバイスドライバーを含められる
- PebbleOSは事実上、STM系MCUのみをサポートするようハードコードされていた
- 別ブランドのMCUに切り替えるには、I2C、SPI、DMAのような 周辺回路ドライバー を新たに書き、別のSDKを採用し、場合によってはビルドシステムも変更する必要がある
- こうした変更は危険な作業ではないが、実装とテストの時間が必要になる
- 一部のMCUはFreeRTOSを簡単にはサポートしない
- 数十万〜数百万台規模で生産しなければ、ソフトウェアエンジニアリング費用を大量販売で分散することは難しく、時計1台あたりの総コストに大きな影響を与える
- スマートウォッチは24時間ずっとBluetoothでスマートフォンに接続されている必要があるため、接続状態の平均消費電力が、ディスプレイと並んで最大の消費電力要因となる
Core 2 DuoとCore Time 2のチップ候補
- Core 2 Duoには Nordic nRF52840 を使うことに決めた
- 古いチップではあるが、すでに慣れており、PebbleOSを比較的早く載せられると判断した
- 当初はNordic SoftDevice BLEスタックを使う計画だったが、その後、オープンソースのBLEスタックである nimBLE に移行した
- Core Time 2には、nRF52840より多くのRAMと処理性能が必要だった
- より大きなカラーディスプレイが、より多くのRAMを要求する
- 新機能のための余裕も欲しかった
- Nordicを使い続けたかったが、BLE MCUのロードマップが要件にうまく合わなかった
- nRF54L15はRAMが256KBしかなく、最近ようやく量産に入ったばかりで、利用経験談も多くなかった
- 1MB RAMの54Hシリーズは価格が4〜5ドル以上と約2倍で、512KB RAMの選択肢がなかった
- Core Time 2の64色MIPディスプレイには特殊なインターフェースが必要で、2015年版Pebbleはそのために別途FPGAを使用していた
SiFli SF32LB52Jを選んだ理由
- Apollo、BES、Dialogなど複数の候補を検討したが、要件に正確に合うチップを見つけるのは難しかった
- 大きな障害の1つは オープンソースSDKの不在 だった
- BESのあるチップは良さそうに見えたが、SDKとサンプルコードは公開されておらず、すべてがNDAの背後にあった
- PebbleOSはオープンソースでなければならないため、この方式は合わなかった
- SiFliは、スマートウォッチのメインチップとして使われるよう作られたBluetoothチップを提供している
- Redmi、Oppo、Noiseなど複数ブランドの数千万台のスマートウォッチですでに使用されている
- 最小チップの SF32LB52x でも512KB以上のSRAMと16MB PSRAMを提供する
- 専用MIP周辺回路があるため、別途FPGAやEpsonのような高価な専用ディスプレイインターフェースチップは不要である
- BLE接続状態の消費電力は約 50µA で、価格は2ドル未満である
- 必要であれば、1〜2MB SRAMオプションを持つ別のSiFliチップに切り替えることもできる
- SiFli SDKは GitHubのOpenSiFli でオープンソースとして公開されており、SiFliはPebbleOSの移植支援も提案した
- Core Time 2には、SF32LB527の1.8V版である SF32LB52J が使用される予定である
関連するSiFliリンク
- SF32LB52x reference guide: SF32LB52xリファレンスガイド
- OpenSiFli: SiFliオープンソースSDKのGitHub
- Buy Devkit on Taobao: Taobao開発キット購入リンク、Aliexpressは後日提供予定
1件のコメント
Hacker News のコメント
この分野にあるのは PebbleOS だけではなく、https://www.espruino.com/ もあり、https://banglejs.com/ を動かしている
マイクロコントローラ向けの超小型 JavaScript 実装なので、デバイスをリアルタイムにハックしやすい
Fallout Pip-Boy や The Wand Company のほかの製品にも使われているようだ: https://www.thewandcompany.com/fallout-pip-boy/
参考: https://github.com/orgs/espruino/discussions/7577
四角いデザインが好きではないので第1世代モデルを買いたいが、もう販売していないようだ
Pebble も素晴らしいが、こうしたプロジェクトも注目されるに値する
それと機会があれば Amazon の Fallout ドラマも見る価値がある
「SDK がオープンソース」と言っていたが、BLE マイクロコントローラにオープンソースのコード SDKがあるという意味ではなさそうだ
見たところ、BLE コードはバイナリ blob として提供されている
https://github.com/OpenSiFli/SiFli-SDK/tree/6c82a9b15db49871...
それ自体が問題というわけではないが、「オープンソース」と呼ぶならソースコードを読めるとよい
このスマートウォッチは、最近の基準で見るとそれほどスマートではない
今使っているスマートウォッチの NFC 決済、デュアルバンド GPS 追跡、4G LTE 接続のような便利機能がかなり恋しくなりそうだ
Pebble と rePebble はその代わりに数週間持つバッテリーを選んだが、Galaxy Watch を2日に1回充電する程度の小さな不便のために、こうした強力な機能を手放したいとは思わない
異なるユーザーを狙ったデバイスが存在するのは良いことだ
対象ユーザーが違うからといって「スマートではない」というより、自分の用途に合わないデバイスというだけだ
そうした機能はあまり必要なく、少しカスタマイズできて通知を受け取れ、基本的な心拍数測定だけできる時計でいい
週に1回以上充電しなければならないなら、身に着けないと思う
まだ 4G はないが、来年のデバイスには入るという報道があったと記憶している
Garmin はバッテリー、ウィジェット、カレンダー、画面の読みやすさといった別の部分で妥協がある
結局すべてはトレードオフだ
チップに関する追加情報はここにある:
https://www.cnx-software.com/2025/05/14/sifli-sf32lb52j-big-...
メインアプリケーション用に1つ、BLE 用に1つと分ける2チップ設計を選ばなかったのが興味深い
高性能マイクロコントローラには普通 RF がないので、時にはそうした設計が理にかなう
NRF 系列もあるし、ESP32 のように Bluetooth と Wi-Fi を1つのパッケージに入れた製品もある
個人的には最近なら ESP32 のほうに傾きそうで、継続的によく改善されており、コミュニティサポートも良い
今、MicroPython ベースのスマートウォッチプラットフォームを開発している
部品表も問題だが、チップごとに補助的な受動部品や発振器が必要で、チップ間通信を調整しなければならず、ファームウェア更新とデバッグのアプローチも双方について設計する必要がある
バッテリー寿命を少し犠牲にしてでも、シンプルにするほうがよい場合がある
その代わりバッテリー寿命の向上は非常にうれしく、今回統合 Bluetooth マイクロコントローラを使ったことが、約1週間のバッテリーから約1か月のバッテリーへ改善した大きな理由に見える
時刻表示、心拍数の記録、AWS に信号を送るといったことに完全な UNIX コンピュータは必要ない
低消費電力チップ業界で、ようやくオープンソースの方向へ進もうとする試みが見えてうれしい
rePebble の発表を見てすぐ申し込んだが、後になって気づいたのは、実はスマートウォッチではなく振動通知付きのシンプルな時計が欲しいということだった
少数派の好みなのは分かっているが、かなり熱心な人たちがいるニッチだ [0] [1] [2]
この2年間 Casio F105 を着けてきたら、これより大きい、重い、厚い製品には戻りにくくなった
Bluetooth 機能が少し付くなら、週1回の充電は受け入れられる
最近は、小さな振動モーターを駆動し、iPhone のすべての通知を受け取れる超小型 Bluetooth チップを探している
試してみたところ、F105 の両側のストラップの間にチップ、モーター、小さなリチウム電池を取り付けても、その位置に少し重さが加わるのはあまり感じなかった
昔、最初に使った Mi Band 1 のこともまだ覚えている
画面がなく RGB LED が3つだけ付いた、忘れられたフィットネスバンドで、通知を送ったアプリに応じて特定の色を表示できたので、青色の Messenger チャットならすぐ返信すべき、黄色の Google Keep 通知ならコンピューターに戻るまで無視してよい、と即座に分かった
[0] https://www.reddit.com/r/pebble/comments/9xw2j2/im_looking_f...
[1] https://www.reddit.com/r/smartwatch/comments/174hq9x/need_a_...
[2] https://tildes.net/~tech/18nf/smartwatch_primarily_for_notif...
最近、状態の良い中古を200ドル未満で買ったが、かなり良いクロノグラフで、BLE、アラーム、振動モーターがあり、少し放置されているような奇妙なスクリプト可能な通知エコシステムもある
時計としては、さまざまなインターフェース方式を理解するには説明書を最後まで読む必要があるが、ディスプレイなしで針だけですべての情報を示さなければならない点を考えると妥当だ
初期設定時に針の同期が必要になることがあり、最初はかなり戸惑った
スーパーキャパシタを使う効率的な太陽光駆動方式なので、暗闇に置いても数か月持ち、身に着けていればバッテリーの心配は実質的にない
スーパーキャパシタは劣化したら交換可能で、他の Citizen 時計の例を見ると、おおよそ15〜20年は安定して持つようだ
よく作られた本物の時計なのでかなり気に入っていて、望むなら着けたまま忘れていても毎年きちんと役目を果たしてくれる
Citizen には BLE 搭載の他の選択肢もあるかもしれない
誰かが通知と BLE 通信プロトコルをリバースエンジニアリングしてオープンソースのコンパニオンアプリを作れば、ハッカー気質の人たちにとってかなり面白い可能性が開けそうだ
自分の要件も単純だ
振動アラーム、通知、そして何より、強い日差しの下でも読めて老眼にも優しいディスプレイが必要だ
OG Pebble の eInk ディスプレイがまさに合っている
スマホを取り出さずにテキストメッセージを読めるのも良い
しかも eBay で約30ドルで入手でき、新しいバッテリーも約15ドルなので負担は大きくない
Rebble.io コミュニティの取り組みも、自分の用途にはまだ十分よく動いている
ヴィンテージの Seiko 時計に使える「スマート」な時計バンドやバックルを探していた
スマホでごく特定のことが起きたとき、例えば妻から電話が来たときだけ振動通知が来ればいい
一般的なスマートウォッチの全機能や画面は必要なく、気が散りすぎる
Apple Watch の UX はひどい
2cm の画面に 1cm の指先なんて、あまりに多くのことをやろうとしすぎているし、自分の好みでもない
Pebble はスマホから離れていても SMS や電話の通知を受け取り、反応するか判断できる程度には見せてくれる
Pebble はかなり軽く、このウォッチフェイスを入れれば見慣れた感じになるはずだ:
https://store-beta.rebble.io/app/52f0939b1ac7948708001fc9
通知はたいてい時間に敏感ではない
数年前、スマホが大して意味のない通知を鳴らし続けて注意を奪っていることに気づき、すべての通知を切ってしまった
数時間に一度だけ確認して、届いたメッセージに返信している
一般的なスマートウォッチは自分にはほとんど役に立たず、手首にメッセージ通知が来るのは大きな逆機能に近い
ただ、アラームを手軽に設定し、時間になったら手首で振動する機能はあるとよい
「バスに乗るなら今出ろ」や「そろそろ休め」のような通知なら十分だ
それ以上は必要なく、派手なセンサーも不要だ
安価な中国製 Freqchip SoC を触り始めた:
https://github.com/zoobab/FR801xH
Ali でこのチップを使ったスマートウォッチを3ユーロで買えた
本当に信じられないほど安い
SDK はどれくらい使い物になるのか?
2回ざっと検索してみたが見つけられなかった
記事はよかったし、ある程度オープンソースハードウェアで PebbleOS が動いているのを見るのはすばらしい
ただ、2025年にもなって左寄せのブログを見続けなければならないのか?
ワイド画面はずいぶん前からあるし、無駄に読みにくくしている
「最も興味深く難しい制約は実はソフトウェア互換性だ」と述べていたが、おそらく最も回避しやすい制約だと思う
リストではもっと後ろのほうに置くと思う
まず、今のチームは以前のPebbleチームに比べて明らかに小さいので、ソフトウェア作業は少ないほどよい
次に、もともとPebble向けのアプリとウォッチフェイスはコンパイル済みのARMバイナリとして配布されていたため、まったく別の命令セットのマイクロコントローラを選ぶと後方互換性を失うことになる
たとえばESP32がその範疇に入る。そもそも良い選択肢でもなかっただろうが
すべてがプロプライエタリだと行き止まりにたくさんぶつかる
標準的なPCハードウェアのような場合とはまったく違う
この記事は気に入った
nimBLEは優れたBluetoothスタックで、今後Core Devicesに面白い機会を開いてくれそうだ