Let's Make Robots!

Wii IR camera as standalone sensor

AttachmentSize
Wii-IR-Camera-schem.pdf11.63 KB
Wii-IR-Camera-board.pdf11.3 KB
wii_remote_ir_sensor_sample.pde2.5 KB

The Wii Remote became a very intersting tool for hacking and other uses where it not has been mentioned for. After the first hacks appears in the internet a lot of people are doing great stuff with it.

This tip&walkthrough is about  using the IR camera from the Wii Remote as a standalone sensor. It is based on hack of a japanese guy named kako. There also exists a Make article

This sensor is great for tracking infrared sources. It can track upto 4 sources independently and give out the coordinates and the strength ob each tracked object. The IR camera has an I2C interface which can be easy accessed by a microcontroller. Here an Arduino board has been used. 

3625806085_61cc9ba881.jpg

Wii Remote disassembling:

To get the IR camera out of the Wii Remote, the Wiimote must be disassembled. A Tri-Wing screw driver has been used for this task. The IR camera is on the front of the board. To get the IR sensor out a hot air gun is been usefull.  

This walkthrough only works for an original Wii Remote. There exists some Wii Remote clones, which are cheaper than the original one but they have different sensors with unknown pinout, so be warned!

Schematic:

The schematic slightly differs from Kako's aproach, it has been taken form the CC2 ATM18 project. A quartz oscillator has been used. A frequency bettween 20..25MHz will work. Unfortunately the sensr is a 3.3V device. Some level conversion must be done before connecting it to a 5V Arduino board. The sensor gets it power source from 2 diodes in series with a 5V from the arduino board which give roughly 3.6V. 2 pullup resistors on the I2C pins limits the voltage down to 3.6.

Schematic and a board layout is atached to this article.

 

Partlist:

  • Wii Remote IR Camera (from a original Wii Remote, not a clone!!)
  • 24Mhz quartz oscillator (or 25MHz, but not a resonator!)
  • 2x diode 1N4148 or equivalent
  • 2x elecrolytic capacitor 10uF
  • 1x ceramic capacitor 100nF
  • 2x resistor 2.2kOhm
  • 1x resistor 22kOhm
  • perf board 60 x 25 mm
  • pin bar 1x4
  • pin bar 2x4
  • bar jack 2x4

 

Software:

The Arduino control software is also based on Kako's sources. It simply initialise the IR camera sensor and sends the readed blob information to a PC: The sourcecode has been slightly modified to work with the PC software.

The PC software is also taken from the CC2 ATM18 project and can be downloaded here.

An Arduino sketch is attached to this article. At the moment I am working on a processing sketch for graphical represantation of the Wii IR Camera output.

 

 

To be continued...

 

 

 

 

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Hello,

I have tried to solder wires on the camera's pins but it's really hard. After having managed to solder all of them I pulled on one wire and the complete pin went out from the camera. So I would recommand to attach the camera directly to a PCB as in the article.

I had no choice but to cut the black box containing the camera. You can see the pictures in the official Arduino forum. The sensor has eight copper lines with a 0.875mm pitch (SMD standard ?). So it appears even harder to solder...

Hello,

 

I'd be interested to use this setup to track the position of a hand in three dimensions.

However I'd like to have an idea about the sampling rate of the data. Does anyone know it ?

Also, does the sensing work well in a very short range (0 to 50 cm) ?

 

Thank you in advance.

RobotFreak's picture

The sample rate should be 200Hz, when using I2C. Here is video about this:

http://www.youtube.com/user/sha433#p/a/u/1/ssMlodh2n4U

You will need a glove with IR LEDs or reflective material on your fingers and a IR LED beamer. Johnny Lee has done this. The video shows how it works:

http://www.youtube.com/watch?v=0awjPUkBXOU&feature=relmfu

Never tested it by myself but would like to hear more about it.

200 Hz ? Great ! In between I've read somewhere that it was only 100 Hz, so it's even better !

Yes I saw Lee's video. This might be really interesting. One question: is his setup is there any technical reason to put all the IR LEDs so close to the camera ? Wouldn't it be better to spread them on a bigger surface ?

RobotFreak's picture

Don't know if 200Hz is the real sample rate, maybe it's only the maximum sample rate for reading the sensor with I2C.

A single IR point source would be the best, I think. Spread the LEDs on a bigger surface, will give you different reflections for each finger.

I managed to extract the camera from the Wiimote and have alost finished to solder it on new wires. But before trying to build the circuit I'd like to ask additional questions:

1. Is the 25 MHz crystal necessary ? Couldn't this signal be generated by the Arduino board (I am using an Uno) ?

2. As the Uno has a 3.3 V output is the voltage conversion from 5 V necessary or not ?

botthoughts's picture

I think AVR is limited to a clock signal of fclk/2 so on Arduino that'd be 8MHz.  The mbed I used is running 96MHz so 25MHz is no big deal. Easy enough to just use a separate 25mhz crystal/oscillator/clock thingy.

That seems logical. Thanks.

What about the voltage ? Should I use the 5 V output and additional components or the 3.3 V output ?

This is a first time i use  i2c comunication and still not good with programing

i use ATmega8 minimum system as the processor, CodeVisionAVR for compiler and this is my project

http://www.mediafire.com/?2ss8cqi8pg6uegq

this program use to show the output from ir camera to lcd, but look like this program is not complete.. i don't know how to fix it.. i've try to use ATM18 project but... very hard to find atmega88 in jakarta (indonesia)  and i need ito finish this project before december. anyone can fix my program? thx in advance