sports/健康系」カテゴリーアーカイブ

バランスWiiボードの解析メモ 4

取りあえず体重らしき値が取れました。

バランスWiiボードの解析メモ 3」のキャリブレーションパラメータを使用。
あらかじめレジスタから A0-A2 ~ D0-D2 を読み出しておきます。

WiiFit の バランスWiiボード は max 136kg なので、単純に
A1/B1/C1/D1 を中点 (68kg) とみなして補間してみます。

右上のセンサー(A) でサンプリングした値を P0a とすると
補間値 P1a は

・P0a < 68 A1

  P1a = 68 * (P0a – A0) / (A1 – A0)

・P0a >= 68 A1

  P1a = 68 * (P0a – A1) / (A2 – A1) + 68

これを A,B,C,D の 4センサー分求めて平均をとると、これだけで
自分の体重に一致しました。

まだ試したサンプル数が少ないのでもっと検証が必要でしょう。
これで PC 上でも Bluetooth による履歴付き体重計が作れそうです。

追記(2020/09/30): GitHub: Measurements of the four weight sensors on the Nintendo Balance board are exactly 4 times too big

参考ページ
Wikipedia バランスWiiボード

関連エントリ
バランスWiiボードの解析メモ 3
バランスWiiボードの解析メモ 2
バランスWiiボードのメモ

バランスWiiボードの解析メモ 3

もう一台 WiiFit 買いました。
2台目は最初のバランスボードとはかなり異なる数値が出ています。
バランスWiiボードの解析メモ 2」ではセンサーが2種類あると
書きましたが単なる個体差だったようです。

HID のレポートは 0x34 より 0x32 の方が多少効率的です。
加速センサーも IR センサーも無いのと、圧力値のサンプリング
だけなら 8個で十分なため。

キャリブレーション用の値が 0x04a40020 以降に格納されているようです。

A = センサー右上
B = センサー左上 右下
C = センサー右下 左上
D = センサー左下

04a40024 - 25 :  A0
04a40026 - 27 :  B0
04a40028 - 29 :  C0
04a4002a - 2b :  D0

04a4002c - 2d :  A1
04a4002e - 2f :  B1
04a40030 - 31 :  C1
04a40032 - 33 :  D1

04a40034 - 35 :  A2
04a40036 - 37 :  B2
04a40038 - 39 :  C2
04a4003a - 3b :  D2
* 2byte 単位 BigEndian

おそらく A0 – A1 – A2 この 3点が右上センサーの圧力に対応する
カーブをあらわしているのではないかと思われます(憶測)。
B~D も同様。

balancewiiboard0
balancewiiboard1

足の部分だけ分解してみると機械的な可動部分は特に無く
金属の棒の中央からコードが出ています。

サスペンションのような構造で浮いていて、棒の片端が本体側、
反対側に浮かせた足が接地していました。

●拡張機器用レジスタのダンプ

バランスWiiボード 1台目
04a40000 :  49 2b 0c 24 0a 84 4a 89 1d 00 99 00 00 00 00 00
04a40010 :  00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff
04a40020 :  41 69 00 00 49 69 0c 67 0a a4 4a b6 50 7c 13 3d
04a40030 :  11 6d 51 a6 57 87 1a 17 18 3f 58 9e d8 94 ce 81
04a40040 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a40050 :  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04a40060 :  1b 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04a40070 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a40080 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a40090 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400a0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400b0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400c0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400d0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400e0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400f0 :  ff ff 00 00 ff ff 00 00 00 00 00 00 a4 20 04 02
バランスWiiボード 2台目
04a40000 :  13 b2 13 ed 0b f5 48 47 0f 00 96 00 00 00 00 00
04a40010 :  00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff
04a40020 :  01 69 00 00 13 66 13 f2 0b f6 48 91 1a 5f 1a a3
04a40030 :  12 dd 4f 48 21 5a 21 62 19 ce 56 0f b9 34 f5 28
04a40040 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a40050 :  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04a40060 :  11 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04a40070 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a40080 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a40090 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400a0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400b0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400c0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400d0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400e0 :  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
04a400f0 :  ff ff 00 00 ff ff 00 00 00 00 00 00 a4 20 04 02

参考ページ
WiiBrewWiki Wiimote
WiiLi.org Wiimote

関連エントリ
バランスWiiボードの解析メモ 2
バランスWiiボードのメモ

バランスWiiボードの解析メモ 2

やはり拡張ポート経由扱いで接続されていました。
アクセス方法は Nunchuk や Classic Controller と同じです。

他の拡張ポート経由のデバイス同様、16 でレジスタに書き込んで初期化を
行えば拡張デバイスの更新情報を取得できます。

例えばレポート番号 0x34 を使った場合下記の形式でデータが取れます。

34 00 00 AA AA BB BB CC CC DD DD ?? ?? EE ..

 AA AA 右上 (L)
 BB BB 左上  右下 (S)
 CC CC 右下  左上 (S)
 DD DD 左下 (L)

(AA AA~は BigEndian)
EE にも何らかの値が入っているように見えますが用途は不明です。
センサーは4つ。
バランスボード本体の4本の足の位置に入っているようです。

 +----------------+
 | BB(S)  AA(L) |
 | DD(L)  CC(S) |
 |      Power     |
 +----------------+

裏返して足部分だけ押してみると、上の AA~DD の値が個別に
反応する様子がわかります。

センサーの種類は、値の範囲から見て2種類。

(L) が 18000~ 程度
(S) が 2700~ あたり

この2つはそれぞれ精度の担当範囲が異なっているのかもしれません。
対角に配置して精度を補いつつ、向きもわかる構造になっていると
考えられます。

2007/12/17追記: 単なるセンサーのばらつきでした

またこの値は Nunchuk/Classic のような 0x17 デコードが不要です。
実際に 0x04a40000 ~ 0x04a400ff をダンプしてみても、そのまま
素の値が取れているように見えます。
例えば 0x04a400fc は最初から 0xa4 です。

識別に使うと思われる 0x04a400f0~ のライン

04a400f0 : ff ff 00 00 ff ff 00 00 00 00 00 00 a4 20 04 02

その他わかったこと
・電源ボタンは Wii Remote の (A) ボタン相当
・電源ランプは LED1
・Nintendo RVL-WBC-01

●バランスWiiボード の判別アルゴリズム
(1) 0x20 レポートを読み出し、拡張ポートが使われているかチェック
(2) 拡張ポートが使われていなければ Wii コントローラのみ
(3) 拡張ポートへ接続があれば 0x04a400fc を読み出し 0xa4 かチェック
(4) 0xa4 なら 0x17 デコードをしない。0xa4 でなければ 0x17 変換を行う
(5) 0x04a400fe~ff を読み出し判別する。
   0x00 0x00 Wiimote+ヌンチャク
   0x01 0x01 Wiimote+クラシックコントローラ
   0x04 0x02 バランスWiiボード

キャリブレーション等その他の情報は不明。
追記: 解析済みです。解析メモ 3以降を参照してください。
これは blog の1エントリに過ぎないので、他の後日のエントリも参照してください。

参考ページ
WiiLi.org Wiimote
WiiLi.org Wiimote/Extension Nunchuk
WiiLi.org Wiimote/Extension Classic Controller
WiiBrewWiki Wiimote

リンク
WiiFit 、バランスWiiボード

関連ページ
バランスWiiボードの解析メモ 3 / 4
バランスWiiボードの解析メモ 5
wiibalancepc PC版体重計 Download

バランスWiiボードのメモ

WiiFit の体重計 バランスWiiボード
コントローラと同じように Bluetooth で認識可能。

Bluetooth での機器名

・Nintendo RVL-CNT-01 (Wiiリモコン)
・Nintendo RVL-WBC-01 (バランスWiiボード)

Vista x64 でもペアリング OK。
ただしそのままではコントローラとして使えません。

Bluetooth での名称は異なるものの、HID でアクセスすると
プロダクトID も名称も Wiiリモコン と全く同じ。特に区別なし。

Wiiリモコンの LED コントロールを使うと、LED1 がバランスWiiボード
の電源ランプに相当。0x11 0x10 等。

0x20 の Status を見ると、Nunchuk, Classic Controller と同じように
拡張ポート扱いで接続されているように見えます。
バッテリー容量はそのまま取れそうです。

参考
WiiLi.org Wiimote
MSDN Human Input Devices

HID へのアクセス方法は WindowsDriverKit (WDK) の
\WinDDK\6000\src\hid\hclient あたりが参考になります。

てくてくエンジェル単体版

てくてくエンジェルの単体版が発売されていました。(見落としてました)
育成散歩計 てくてくエンジェル Pocket
ハドソン、育成散歩計「てくてくエンジェル Pocket」を単体販売
単体でも万歩計機能として十分使えるし、意外にも細かいところまで行き届いていて
他の歩数計より優秀なところも数多くあります。
詳しいレビューはこちら「てくてくエンジェル DS日記 まじめレビュー

なので安価に手に入る単体発売はいいですね。
さらに DS の代わりに携帯で管理できるアプリ版も無料でダウンロードできる
とのこと!やっぱり出ましたか携帯版。
パスワード連動だからハードを特定しないので、次は web 版とか PC 版も
でるかなあ。
食事カロリー管理機能を省いているそうだけど、DS版も非常にわかりづらい
アイコン選択で使い物にならなかったので、これはこれでいいんじゃないでしょうか。
本当は数値入力だけでもあったほうが良いのですが。

アプリは SB版が出たら試してみます。