Wii Whiteboard test = NEC projector + Wii Remote + Linux
Just a first trial of using python-whiteboard with a stock Wii Remote (those things run on bluetooth) and a screen projector on a wall. As an infrared pen – a TV remote.
Sorry, but the video has been taken using a potato, my Eken H9R is still somewhere between China and me.
So, I grabbed one of the spare NEC V311W projectors from work and tried to do something creative with it – an interactive whiteboard. Those things can be constructed in a few ways, including one that does not involve spending 10h+ on designing your own PCBs and sourcing components – just buy a Wii Remote. Wii Remote is a brilliant, 10 year old thing. It consists basically of an accelerometer, gyro, some buttons, I2C communication, Bluetooth and … a 128×96 monochrome camera? What? That little? Well, the trick lies in a subpixel processing for tracking infrared points that is actually done onboard – the usable output is 1024×768.
Ok, some let us assume that you have a screen, a laptop, TV remote (as a cheap’n’dirty infrared source) and a Wii Remote, all set up in a room. What next? Time to download some software to calibrate and process the movement. I chose a pretty popular python-whiteboard, but for some strange reason I kept running into stupid problems with:
Traceback (most recent call last): File "python-whiteboard-test", line 23, in
if __name__ == '__main__': main() File "python-whiteboard-test", line 20, in main pywhiteboard.main() File "/home/anil/wii/python-whiteboard/stuff/pywhiteboard.py", line 675, in main mainWin = MainWindow() File "/home/anil/wii/python-whiteboard/stuff/pywhiteboard.py", line 90, in __init__ conf = Configuration() File "/home/anil/wii/python-whiteboard/stuff/configuration.py", line 124, in __init__ Configuration.__instance = Configuration.__impl() File "/home/anil/wii/python-whiteboard/stuff/configuration.py", line 35, in __init__ version = self.getValueStr("version") File "/home/anil/wii/python-whiteboard/stuff/configuration.py", line 53, in getValueStr v = self.settings.value(name).toString() AttributeError: 'NoneType' object has no attribute 'toString'
I tried fiddling with it, but a quick reverse to an earlier commit solved everything (well, I’m missing Qt5 for Qt4, but I don’t really care). So the route to getting it online:
make sure you have python-gattlib pybluez python-xlib numpy on your Slackware:
sbopkg -i "python-gattlib pybluez python-xlib" sbopkg -i numpy
and download the python-whiteboard:
git clone https://github.com/pnegre/python-whiteboard cd python-whiteboard/ git checkout e710a72 python python-whiteboard-test
That’s it 🙂