Nintendo Wii balance board

The educational technology and digital learning wiki
Jump to navigation Jump to search

Draft

<pageby/>

Definition

The Wii balance board is a controller for the Nintendo Wii gaming console.

It is possible to hook it up with a PC. You then can use it as an input device, e.g. like a joystick.

Surfing the Internet

The idea: Surf on the Web with your feet only. This is a first attempt ...

Material:

  • A DELL XPS II Laptop with a bluetooth card
  • Adapter is Toshiba
  • Driver is "Bluetooth Personal Area Network from Toshiba" - Version 5.0.2129.0 of 27.11.2002
  • Bluetooth HID port from Toshiba
  • Nintendo wiimote + nunchuk and a wii balance board

Wiimote hookup

To set up the bluetooth connection for the wiimote

  • Hook up the nunchuk ! ... else (I think) it won't be calibrated right and you will have to delete bluetooth connect
  • Launch the Bluetooth program (Menu Programs->Bluetooth->Bluetooth settings)
  • Click on "new connections", express mode
  • Press on the wiimote at the same time button 1 and button 2 (or alternatively the red button inside the battery trap)
  • Create a blue moon shortcut on the desktop

... and it should work, basically it's like connecting a cell phone or any other bluetooth device, i.e. straight forward with this laptop at least.

The Nintendo Wiimote seen by the Bluetooth tool (sorry my Windows speaks french)

  • Nom du périphérique: Nintendo RVL-CNT-01
  • Addresse du périphérique: 0:1E:35:5E:38:22
  • Classe du périphérique: Périphériques(Manette de jeu)
  • Classe de service: Périphérique d'interface humaine
  • Nom du service: Nintendo RVL-CNT-01

GlovePIE Scripts

The Wii balance board is supported by Carl Kenner's GlovePIE v. 0.3 + on the PC.

  • Donwload and install this software
  • Then get some PIE scripts that emulate mouse behavior or just get all scripts from wiiscript

I based my trials on WiiMouse Version 0.4 by Sam Braidley (just appended what's below to it)

Balance board hookup

To set up the bluetooth connection for the wii balance board

  • In the bluetooth program, click on "new connections"
  • Open the battery case of the board and press the red button

What I get is:

  • Nintendo RVL-WBC-01
  • 00:1E:35:FD:7D:B5
  • Périphériques(Manette de jeu)
  • Nintendo RVL-CNT-01

The documentation for the GlovePIE v 0.3 balance board support is on page 70. It works :) ... there is only some weird calibration to do (e.g. I find the X and Y axis of the Joystick interface mixed up.

Balance board script

I added this (in several variants) to an existing PIE script

// Put the LED on
Wiimote2.BalanceBoard.LED = true

// This may look really weird. What is X and Y is a question of opinion ;)
// (1) For me, X should be handled by left/right when board is in normal position in front of TV. Glove PIE X is front/back.
//               on/off LED
//    +--------------------------+
//    | FL                    FR |
//    |     left        right    |
//    | BL                    BR |
//    +--------------------------+

// (2) on/off button is IN FRONT, i.e. close to computer, else multiply by -1
// Calibration (x and y offsets) are a bit strange. Seems to change over time also.
// Finally, there is some Interaction with the Wiimote I don't understand.

// Ajust values here - you may have to change them each time
// When you don't stand on the board, data for FL and BR are weird.
// Below a formula that leaves the cursor more or less idle when NOT on the board
var.deltaX = (Wiimote2.BalanceBoard.JoyY - 0.00) / 25
var.deltaY = (Wiimote2.BalanceBoard.JoyX + 0.05) / 25

// When you stand on the board (in neutral position) things may be wrong. So you may to compensenate once you are on the board...
// var.deltaX = (Wiimote2.BalanceBoard.JoyY - 0.20) / 25
// var.deltaY = (Wiimote2.BalanceBoard.JoyX + 0.15) / 25

mouse.x = mouse.x + var.deltaX
mouse.y = mouse.y + var.deltaY

debug = "BB= " + Wiimote2.HasBalanceBoard + " JoyX =" + Wiimote2.BalanceBoard.JoyX + " JoyY =" + Wiimote2.BalanceBoard.JoyY + " FL=" + Wiimote2.BalanceBoard.FrontLeft + " FR=" + Wiimote2.BalanceBoard.FrontRight + " BL=" + Wiimote2.BalanceBoard.BackLeft + " BR=" + Wiimote2.BalanceBoard.BackRight

// debug = ('WiiBalance by Daniel K. Schneider tecfa.unige.ch, based on Sam Braidley www.wiiscript.co.uk')

Greasemonkey script

When you surf on the Internet you don't want to click, but just ride. To do so you have to write a Greasemonkey script like this.

Greasemonkey is a quite spectacular FireFox extension that allows you to customize the way a webpage displays using small bits of JavaScript. Hundreds of scripts, for a wide variety of popular sites, are already available at UserScripts.org. Something similar exists for Opera. IE 7 we don't know. Below is the script I wrote, you can copy/paste or get it from here

// ==UserScript==
// @name           Mouseover surfing
// @namespace      DKS
// @description    Adds a mouseover event handler to internal each link of a MediaWiki that will redirect to a new page. This is for surfing a Mediawiki
// @include        http://tecfa.unige.ch/guides/js/ex/greasmonkey/
// ==/UserScript==

var n=document.links.length;
// Change the cursor into something that is bigger
document.body.style.cursor = "url(http://tecfa.unige.ch/guides/js/ex/greasemonkey/cursor.png) 25 25, auto";

for (var i = 0; i < n; i++) {
  l = document.links[i];
  l.addEventListener(
     'mouseover',
     function(event) {
       var link = event.target;
       // link.style.cursor = "crosshair";
       link.style.cursor = "url(http://tecfa.unige.ch/guides/js/ex/greasemonkey/cursor-link.png) 25 25, auto";
       // Uncomment to constrain to mediawiki internal links
       // if (link.className!="external text") 
       if (link.href) document.location.href = link.href;
     },
     true);
 }

This little script should be improved, e.g. by waiting a second before loading a new page. I'll do this once I have time, based on the code of NoClick 1.00.A.

The result

Result is not perfect, but it does ok for a let's ride the Internet demo. I put it on YouTube (sorry I am not a filmmaker ...): http://www.youtube.com/watch?v=bqTB5AUDZzo

<object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/bqTB5AUDZzo"> </param> <embed src="http://www.youtube.com/v/bqTB5AUDZzo" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object>