Features
* all open source and hardware,
* cost < £100 excluding projector and computer,
* detects can's nozzle pressure and distance from the screen,
* models paint dripping if you move too slowly!
Notes
* this instructable is quite high level, but please let me know if I've missed something important,
* the computing setup is for Linux. If you get it working on other systems, please post your instructions!
Skills you'll need
* wood working to make the wooden rear projection screen,
* electronic circuits and programming Atmel AVR micro controllers (or arduino),
* be able to install some libraries on your computer to allow processing to talk to the wiimote.
Remove these ads by
Signing UpStep 1: How it works
* The wiimote sends the X and Y co-ordinates of the can to the computer via a bluetooth radio link.
* The computer is running a simple painting program that uses a projector to "paint" the lines as you draw with the can. It also takes care of mapping the wiimote camera to the screen using a 4 point calibration system.
* The spray can also detect its distance from the screen and the nozzle pressure: the further you are away the bigger the dot drawn, the harder you press the nozzle, the more opaque the paint dot becomes.











































Visit Our Store »
Go Pro Today »




Thanks for the detailed instructions. I did everything explained above to connect Processing and the Wiimote, but I get the following error:
The type lll.Loc.Loc cannot be resolved. It is indirectly referenced from required .class files
Do you know how to fix this error?
Thanks a lot for your help.
mtwister
Native Library bluecove not available
!! There may be no USB dongle/device. !!
java.lang.IllegalStateException: Bluetooth failed to initialize. There is probably a problem with your local Bluetooth stack or API.
at wiiremotej.WiiRemoteJ.(WiiRemoteJ.java:74)
at lll.wrj4P5.Wrj4P5.connect(Wrj4P5.java:301)
at lll.wrj4P5.Wrj4P5.connect(Wrj4P5.java:290)
at lll.wrj4P5.Wrj4P5.connect(Wrj4P5.java:284)
at lll.wrj4P5.Wrj4P5.connect(Wrj4P5.java:278)
at wiimotetest.setup(wiimotetest.java:30)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.bluetooth.BluetoothStateException: BlueCove library bluecove not available
at com.intel.bluetooth.BlueCoveImpl.loadNativeLibraries(BlueCoveImpl.java:381)
at com.intel.bluetooth.BlueCoveImpl.detectStack(BlueCoveImpl.java:429)
at com.intel.bluetooth.BlueCoveImpl.access$500(BlueCoveImpl.java:65)
at com.intel.bluetooth.BlueCoveImpl$1.run(BlueCoveImpl.java:1020)
at java.security.AccessController.doPrivileged(Native Method)
at com.intel.bluetooth.BlueCoveImpl.detectStackPrivileged(BlueCoveImpl.java:1018)
at com.intel.bluetooth.BlueCoveImpl.getBluetoothStack(BlueCoveImpl.java:1011)
at javax.bluetooth.LocalDevice.getLocalDeviceInstance(LocalDevice.java:75)
at javax.bluetooth.LocalDevice.getLocalDevice(LocalDevice.java:95)
at wiiremotej.WiiRemoteJ.(WiiRemoteJ.java:67)
... 8 more
When I run $ hcitool scan it dows see the wiimote so the dongle is probably not the problem. Any suggestions?
I'd google the phrase:
Caused by: javax.bluetooth.BluetoothStateException: BlueCove library bluecove not available
And try some of the suggestions.
Sorry I can't help more,
Matt
I'm using processing 1.0.9.
What errors are you getting?
You need to install all the libraries detailed in the previous step. Have you followed those steps exactly? Can you see the lll directories that need to be created?
Let me know if that helps,
Matthew
What gives? Could you upload it again please? or mail the code over to stuchilds [at] gmail.com
Nice one, good work Matthew :)
I don't know why it changes the name. I tried uploading it again but same result.
For others: this pinout of the atmega/arduino will help:
http://arduino.cc/en/Hacking/PinMapping168
Next thing I'm struggling with is the external crystal osc:
I don't have the facilities to reset the fuse / timing on the atmega chip so thought would try to use an external 16MHz crystal.
[this one: http://uk.farnell.com/jsp/search/productdetail.jsp?CMP=i-ddd7-00001003&sku=9712526 ]
Now, as I am trying to build this circuit around an actual Arduino board I can't see a way of connecting the external osc. as pins 9/10 of the atmega chip do not have an external connection, they are linked to the onboard crystal.
Will keep updating progress.. Trying to use a pressure sensitive resistor instead of a linear pot. for the cap assembly instead in the hope that it will be a little more durable [plus I have some lying around to play with]
Lovely.
stuart
Basically, you only need to use external crystal if you're making a board from scratch and you don't have a fuse programmer.
Weve taken the one we made all round the UK and originally made it for back projecting on windows. were also taking it to NY in march time and would be great to see you there.
Super Nice
Dave
JamJarcollective.com
I actually found your site after making my own, and don't know why I didn't find it earlier! I found wiispray and some videos on the internet but nothing opensource. I've been meaning to get in contact with you guys anyway!
So yes, please take anything and feel free to ask any questions/post blogs etc.
I'm in London, not NY, where are you based?