月別アーカイブ: 2007年12月

PC でバランスWiiボードの体重計

解析結果を元に、体重計ソフトを作ってみました。
取りあえず表示するだけ。

wiibalance v0.03

PC 上で Wii Fit のバランスボードを使って体重測定できます。
Bluetooth が必要。

ついでに「体重マウス」機能を追加してみました。

[SPACE] または [M] キーで On になります。
体重マウスが On の場合、重心の移動でマウスカーソルが動きます。

wiibalance

バランスWiiボードは体重計以外にもいろいろ応用できます。
例えば PC の前にいるかどうか判定するセンサーとして、
椅子とか座布団代わりに使うとかどうでしょう。

本当に離籍したときだけ短い時間でスクリーンロックすれば
セキュリティ対策に。

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

バランス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ボードのメモ

Windows Vista x64 8GB RAM増設

メモリが安くなったので増設してみました。
2GB×2 で 約 8000円

ちなみに 10月に 1GB×2 を 7000円ほどで買ったばかり・・。

Windows Vista x64 で 8GB きちんと認識しています。

その効果はというと

合計           8190MB
キャッシュ済み 6775MB
空きメモリ       34MB

6.7GB ものメモリがキャッシュで費やされています。

さすが Vista。
メモリを増やせば増やした分だけ、空きがなくなるまで取りあえずメモリを
使ってくれるようです。これがスーパーフェッチの効果でしょうか。

たまに Vista にしたら空きメモリが減ったとか、空きメモリを増やすには
どうしたら良いかと尋ねられることがあります。
だけど特に意識する必要はないと思います。

余剰金が発生しても、何もしないで家においておくのが「空きメモリ」で、
銀行に預けたり資産運用するのが「キャッシュ済み」メモリ。

所持金が減るわけではなく、必要になったらいつでも引き出せますし
しかもバックグラウンドである程度有効に活用されています。

キャッシュに活用してくれるのは良いのですが、その代わりメモリが
埋まるまで、先読みの HDD アクセスが結構長く続くようになりました。

関連エントリ
2007/11/27 プログラマの開発環境
2007/10/22 em1keypc 64bit Windows でも 親指シフト

バランス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