2007/12/16
バランス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」のキャリブレーションパラメータを使用。
あらかじめレジスタから A0-A2 ~ D0-D2 を読み出しておきます。
WiiFit の バランスWiiボード は max 136kg なので、単純に
A1/B1/C1/D1 を中点 (68kg) とみなして補間してみます。
右上のセンサー(A) でサンプリングした値を P0a とすると
補間値 P1a は
・P0a <
P1a = 68 * (P0a - A0) / (A1 - A0)
・P0a >=
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ボードのメモ
2007/12/16
バランスWiiボードの解析メモ 3
もう一台 WiiFit 買いました。
2台目は最初のバランスボードとはかなり異なる数値が出ています。
「バランスWiiボードの解析メモ 2」ではセンサーが2種類あると
書きましたが単なる個体差だったようです。
HID のレポートは 0x34 より 0x32 の方が多少効率的です。
加速センサーも IR センサーも無いのと、圧力値のサンプリング
だけなら 8個で十分なため。
キャリブレーション用の値が 0x04a40020 以降に格納されているようです。
A = センサー右上
B =センサー左上 右下
C =センサー右下 左上
D = センサー左下
おそらく A0 - A1 - A2 この 3点が右上センサーの圧力に対応する
カーブをあらわしているのではないかと思われます(憶測)。
B~D も同様。


足の部分だけ分解してみると機械的な可動部分は特に無く
金属の棒の中央からコードが出ています。
サスペンションのような構造で浮いていて、棒の片端が本体側、
反対側に浮かせた足が接地していました。
●拡張機器用レジスタのダンプ
参考ページ
・WiiBrewWiki Wiimote
・WiiLi.org Wiimote
関連エントリ
・バランスWiiボードの解析メモ 2
・バランスWiiボードのメモ
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 も同様。


足の部分だけ分解してみると機械的な可動部分は特に無く
金属の棒の中央からコードが出ています。
サスペンションのような構造で浮いていて、棒の片端が本体側、
反対側に浮かせた足が接地していました。
●拡張機器用レジスタのダンプ
バランス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ボードのメモ