watchX が届いた。

2022-06-01
最新版が最後のほうにあるのでどうぞ!

indiegogoにてデビューした世界で初めてのArduino/Scratch互換の手首装着プラットフォーム「watchX」が届いた。

watchX – Wearable Development Platform

トラッキング情報を見ると、中国-スペイン-スイス-日本、と全世界を駆け巡っての到着である。少々遠回りした感はあるが(笑)、OLED、技適対応のBLE、RTC、加速度、温度、気圧センサーなどを搭載。MCUはATmega32U4だ。私の欲しい機能が高度に凝縮されている。かつ、時計のように手首に装着することができる夢のようなデバイスだ。

2018-07-03
Arduinoのサンプルが動くことを確認した後、3Dプリンターでケースを作り、watchXのwatch-firmwareでも入れようと思ったがどこを探しても見つけられない。結局、途中でCPUを変更した影響でまだfirmwareがないという状況みたいだ。今のところは写真のようなfirmwareしかない。しかも、電池すぐ無くなる...

2018-07-06
調べてみると、watchXは、N|Watch互換からスタートしているようだ。

DIY Digital Wristwatch

しかし、途中でMCUをATmega328->ATmega32U4へ変更したためウオッチ・ファームウェアが出荷に間に合わなくなったとのこと。

しょうがないので、自分で、N|Watch(Atmel Studio)のソースコードを、watchX(Arduino)へ移殖してみた。ファイルが多くて結構大変だった。

HWの違いによりUSB接続状態が適切に認識できないのとArduinoのブートローダー領域のために2個あるゲームが1個しか入らなかった。それ以外の機能は全て動作するようだ。また、watchXに追加されたBLE/センサー等は対応されていない。

元ソースはサブフォルダが使われていたが、Arduinoはサブフォルダの扱いが微妙というか開けないので全て同一フォルダに展開したのとそれに関連して同名のファイルがあったため2つほどファイル名を変更して対処。これでArduinoで全てのソース・コードを修正することが可能であるがファイルが多すぎてタブに収まりきらないためソースの切り替えは▽のドロップダウンボタンにて行う必要がある。ちなみにファイルが115個もあるのでArduinoのシンプルな開発規模では非常に苦しい。

download watchX firmware for Arduino Sketch

2018-07-07
何点か気になったところを修正。
1)上下操作が逆になっていたため修正。
2)低電圧時でも正確にバッテリ電圧を測定できるようADCリファレンス電圧を3.3Vから2.56Vに変更。
3)パワーセーブモードに入る条件が間違っていたため修正。
4)USB給電状態を判定する方法がわかったため修正。

download watchX firmware for Arduino Sketch (2)

2018-07-08
改良と不具合修正。
1)給電のみではスリープするがPCとのUSB接続が有効なときはスリープしないよう変更。(開発用途向け)
2)省電力化のためスリープ中はUSBを停止。
3)省電力化のため使わない(使えない?)USARTの電力を遮断。
4)MCU仕様不一致のためアイドル時のパワーセーブ動作を禁止。
5)スリープ中だとアラームが起動しない不具合を修正。

download watchX firmware for Arduino Sketch (3)

恐らくこれが最後の更新。このソースはwatchX公認?の下記サイトにてGitHUB管理されるようなので、今後の更新等はそちらで確認するようにしてほしい。(私は関与しないのであしからず)

https://www.reddit.com/r/watchX/

2018-07-11
本日、直前(2018-07-08)のソースがGitHUBにて公開された。(知らない他国の人から公開してもらった...)

kghunt/NWatch

貢献してみたい方はどうぞ。

で、省電力化の奥深さにハマってしまい省電力化できるところが残ってないかと探しまくったらまだあった。もう、これ以上は無理。

1)watchX.ino, pwrmgr.c: スリープ時にUSBのPLLを停止&復帰時に再初期化。
2)adc.c: 未接続かつADC対応ピンであるPF7(ADC7)のデジタル入力禁止。

download watchX firmware for Arduino Sketch (4)

さらに、アイドル時の省電力対策としてUSBからの非給電時もPLLを含めUSBを完全に停止するようにしてみた。
しかし、この変更でコードが入らなくなったため、Flashlight機能(ピカピカ)を削除。機能の追加削除は、config.hの#defineで設定可能なので好みに合わせて変更することができる。

download watchX firmware for Arduino Sketch (5)

2018-07-30
ストップウォッチを削除&一部のメニューアイコンデータをEEPROMに移動しコード領域を確保しブロック崩しゲームを入れてみた。ついでというか、ブロック崩しゲームの速度が速すぎて私のような反射神経の鈍い人にはとても無理っぽいので速度を半分にしてみた。

最初に、”watchX setup”を書き込み&実行すること。この実行で必要なデータがEEPROMに書き込まれる。

download watchX setup for Arduino Sketch

次に本体を書き込んで完了。

download watchX firmware for Arduino Sketch (6)

2022-06-01
久しぶりに使ってみたら曜日が間違ってるのを発見。調べてみたら元プログラム(time.c)の曜日計算がバグッてたので書き直してみた。あとコンパイラの最適化の問題によりArduino-1.8.1以降でspi_transfer_nrがないという不思議なリンク・エラーが発生するようなので対策をしたのとワーニングが沢山でるのも直しておいた。念の為古いのは残しておく。

ちなみにであるがwatchX.inoファイル以外をlibraryフォルダに入れてる人がいるようであるがArduinoのライブラリファイルではなくwatchX専用ファイルであるからlibraryフォルダを使うのはあまり好ましくないと思う。全部まとめてスケッチ・フォルダーに入れればOKだ。

download watchX firmware for Arduino Sketch (6)
※このファイルの前に上の”download watchX setup for Arduino Sketch”の書き込みが必要なことに注意。

いつも途中で終わってしまうけどゲームの最後はどうなんの?(笑)

ついにブロック崩しゲーム完了!!以外につまらない完了画面であった。(笑)