Monday, April 25, 2011

Phuong D and Konstantino K’s Mouse Hack



Our mouse hack, which we’ve entitled “LightWeight,” attempts to bring the property of mass to light itself. Recalling a short passage by Yoko Ono read to us in the beginning of the semester, which asked participants to capture sunlight in a bag, we explored how we could bring a more tangible manifestation to the movement of light and how a person could manipulate its direction.



In our initial brainstorming, we envisioned a cube where users could shake and rotate it as they please, causing embedded lights to move with the cube as though they were a bottled liquid. For aesthetic reasons, we tweaked the idea for a pyramid (pictured lower left), and eventually into a short triangular prism for technical reasons. We realized that to have two separate axis for users to control, there would be some difficulties in the circuit design. Namely, each LED would be linked to two separate circuits and there would need to be two mice (for X motions and Y motions respectively).


Deciding that three-dimensional manipulation would be a bit too ambitious for this project, we worked with motion on a purely two-dimensional arena. On the first layer of our prism, a mouse shifts by the way the user tilts the piece.



We purchased a miniature mouse to maximize the motion on our relatively limited surface. The top enclosure of the mouse was removed, and its sides were hacked off from the bottom of the enclosure to maintain a low profile. This was important for the next layer of our piece, where we introduced a ceiling for the mouse.


The majority of the structure is built with foam core.



The ceiling is a separate triangular piece that we insert into the middle of LightWeight. Its first function is to prevent the mouse from jumping upward: we found that once the mice coordinates were read on the software side, jumps caused erratic and unusable readings (more on the software in a bit). Its second use was to separate it from the LED array we built, as the mouse’s laser introduced an undesirable light source of its own. We made sure that the ceiling was easily removable so that we could access the mouse without destroying the top layer in testing and for future use.




The top layer comprised of 10 white LEDs that we purchased from Active Surplus (for $1.00 each, which is irregularly expensive for an LED). Each LED was equipped with a standard 1K resistor, and each had its positive side fed into a pin on our Arduino dedicated to the individual LED. The negative sides were daisy chained and fed into one of the ground terminals in the Arduino. Like the mouse’s ceiling piece, we made sure that the top layer was also easily removable by implementing pull-up straps on its sides.




To interface the mouse with our LEDs, we used a USB Host Shield designed by sparkfun.com, purchased at Creatron. Like any Arduino shield, the USB Host Shield conveniently sits atop the Arduino through stackable connector pins. A single USB port sits at the edge of the board where the mouse is plugged in. In our picture above, you can also see the tangle of wires, each of which comes from one of our LEDs (with the exception of the blue ground wire, which comes from all of them).


On the software side, we had to install three libraries for the USB Host Shield to function correctly. These were Spi (Serial Peripheral Interface), Max3421e (which is named after the main microchip on the Host Shield), as well as a USB library.



While testing the information the mouse gave us, we learned that the raw coordinate values provided were fairly sensitive, circumstantial, and mostly unpredictable. To resolve these issues, we created a simple algorithm that read the raw coordinates and made them more “readable.” Among other things, we made the values add or subtract to themselves as the mouse moved so we could envision its point in space (here we created an actual X and Y coordinate – before, the mouse values compared themselves to the previous moment). Finally, we created a set of statements that determined which lights would turn on based on where the mouse was shifted.



To finish the physical design, we covered the LED array with parchment paper (to diffuse the glow of the lights) and a blue sheet of plastic transparency. The end result is an object that can be held and played with by the user to manipulate the flow of light. In future iterations, we would like to work on a three-dimensional plane as previously stated, and include several more LEDs to create a more organic and naturalistic aesthetic.

No comments:

Post a Comment