lance@motcsd.csd.mot.com (lance.norskog) (04/23/91)
The Power Glove interface recently announced is actually a Nintendo joystick interface. The theory behind it is from an article in Byte, July 1990, pp. 288-289. This was originally posted on sci.virtual-worlds last November. It is a dissection of the Glove and contains basic information for building your own "raw mode" interface to get 4 degrees of freedom (X, Y, Z, and yaw) and 4 fingers out of the glove concurrently by cutting out the microprocessor in the "glove box" and feeding it your own 50khz signal. As far as we can find out, the Power Glove inventors have a serial port box, but another company (VPL Research) with a $5000 glove beat them in a patent fight. The inventors can't sell their box, and VPL is apparently protecting their market. This was originally posted by Sean Schur for his friend Dale McBeath at Cal-Arts, one of the three or four top commercial graphics arts schools. Enjoy! --------------------------------------------------------------- I had been working independantly on the disection of the Nintendo power glove when a friend and associate showed me what Eric Pepke had listed here. It's great to know someone else is working on the glove, as it looks like VPL isn't going to release their RS232 version anytime soon. I am using parts at hand, so undoubtedly a better way exists to get the pulse and timing into something more CPUseful. What I did was to chop off the glove's CPU and just use the knuckle box and receiver. The wiring and board location names follow. Unlike Eric, I couldn't get the switching supply on the knuckle board to get anywhere near 40 volts. With straight 50Khz going to the violet wire I get 15 volts. However, using the divider below to get from 1 Mhz down to 50 Khz, if the 50 Khz is NOR'ed with pin 12 (QC) of the divide by 10 counter and then fed to the violet wire, I get a nice 25 volts. I suspect the switcher is very frequency sensitive, and somehow this combination and pulse width is nearer to perfect. The receivers can be used as is. When a nice pulse is sent from the transmitter in the form of a burst of 50 Khz (but not longer than 3ms to keep from double triggering) the receiver will send out a clean negative going pulse 7.5ms long. I time from the begining of the transmit pulse burst until the leading edge of the receiver pulse by counting 25 Khz clocks. The circuit is set up so that the final latches (only one shown)can catch the results and then be polled if needed to pass the data on to your computer through a UART or parallel port. It is easy to expand so that all 6 receiver bursts (3 for each transmitter) could be collected. This test circuit is easy to change and play with....changing the counter configuration can give better resolution but more jitter. To see the output without having to write code, I just used a couple of Texas Instruments TIL311 hex displays connected directly to the latch outputs. I was getting about 1cm resolution as connected. What I would really like to know is how to very simply and quickly get nice X-Y-Z coordinates from the planar 3 receiver array without lots of gooey math. I have tried remaking the receiver stand so that they fall on the axes, but must tilt the stand so that the glove points into the origin. Again, some translation and rotation math would be helpful. The problem with a stand set up in this way is that it limits movement even more than the planar version. Any help would be appreciated. We at CAL-ARTs are deeply interested in VR. We have many artists in the film, video, dance, music,and theater arts. In our own Media Lab, have over 100 students producing art on Amigas, and most of those are character animators aching to actually move INTO the worlds they are now creating on paper, film, and video. Thanks for the forum, and keep those ideas comming! Dale McBeath voice (805) 255-1050 ex. 2330 CAL-ARTs (805) 245-3191 Character Animation Dept. PLINK msu-387 School of Film and Video 24700 McBean Pkwy, Valencia CA 91355 Knuckle box wiring: Knuckle pin CPU pin Color Function 1 3 Pink Index finger (analog 100K to 500K) 2 2 Brown Thumb 3 12 Lt. Blue Finger common (thrugh a diode) 4 4 Orange Middle finger 5 11 White Small finger 6 7 Green Right transmitter 7 6 Yellow Left transmitter 8 9 Violet Switching Supply Pulse (50Khz) in 9 10 Grey Switching Supply feedback (2v nom) 10 1 Black Ground 11 5 Red +5 volts 12 8 Dk. Blue Bell (small peizo element) Receiver Box Wiring: (1) Recv 1 (top left) GND (6) (2) GND Reset in (7) (3) Recv 2 (corner) Clock in (8) (4) Recv 3 (bottom right) Data out (9) (5) +5 TIMING: low = ______ high = --------- lots-o-pulses = ||||||| 50Khz |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| TRIG --------+_____+-----------------------------------+______+-- RESET __+-----+___________________________________+-----+_________ XMIT ________|||||||___________________________________||||||||__ GO ________+-----------------------------------+_______________ COUNT --------+|||||||||||||||||||||||||||||||||||+_______________ RCV -------------+_____+-----------------------------------+____ DATA =============X=========NEXT GOOD DATA==================X==== | +5v > < .39 K (/10) +------+ > +-----------+ +---------+ | 1/2 |QA----O--------O---> 50 Khz | 1meg osc. |-----| 74ls160 |--CK| 74ls | | (violet) +-----------+ +---------+ | 393 |QB------------ | --> 25 Khz | | | +----------CLR| |QD--------+ | | +------+ | | GND +------------------------+ | | +------+ | | | 1/2 | (/256) | +----CK| 74ls | | | 393 |QD--------+ | +------+ | | +----------------------------------------------------+ | | +-------------------------+ | | | +----\-----\ | +------+ +------+ | ls02 >nor-------------> XMIT | | 1/2 |QA----A| |Q1--O--/-----/ (yellow +----CK| 74ls |QB----B| 74ls | | or green) | 393 |QC----C| 138 | +----------------> TRIG +------+ | | | |Q8-------------------> RESET +-en'+---+--+ | EN GND | (open) 25 Khz>--------------------------------+----\ TRIG>-------+----\ | ls00>nand--------> COUNT | ls00>nand-----O----------+----/ +-+----/ | +---------------+ | | | +-----------------+ +-+----\ | | ls00>nand---+ RESET>------+----/ RCV(1,2,or3)>------------------------------------+ | +-------+ +----+---+ COUNT>--------------| 74ls | | 74ls | | 393 >----(8 bits)---> 373 >---(8 lines)--> | (/256)| | (latch)| DATA OUT | | | | +--clr--+ +--'OE---+ | | |\ | | RESET>-----| >not------+ GND |/ (or POLL for data)
jfreeman@next.com (Joe Freeman) (04/23/91)
In article <3710@motcsd.csd.mot.com> lance@motcsd.csd.mot.com (lance.norskog) writes: >The Power Glove interface recently announced is actually a Nintendo >joystick interface. The theory behind it is from an article in Byte, >July 1990, pp. 288-289. I really wish you had waited for me to reply to your email before you posted about something you know nothing about. There was an article in Byte magazine that talked about how to use a PowerGlove with a pc. The article used it in the default configuration, joystick, pad... The stuff that was posted, to the archives, reprograms the glove to give more information. It passes back, 8 bits, x, y, z, roll, 2 bits per finger and all the buttons on the pad. This is in contrast to 2 axis, 1 bit for movement, pad emulating joystick and only 2 fingers active in joystick mode. The code in the demo goes beyond the Byte article. You can ask the author if you'd like. > >This was originally posted on sci.virtual-worlds last November. >It is a dissection of the Glove and contains basic information for >building your own "raw mode" interface to get 4 degrees of freedom >(X, Y, Z, and yaw) and 4 fingers out of the glove concurrently >by cutting out the microprocessor in the "glove box" and feeding >it your own 50khz signal. > Folks, you can do the above mod if you want. You hack the glove to bits, building your own hardware and debugging it. The version that was posted, on the other hand, lets you build a cable that allows the unit draw power from the DSP port. The glove is still useable on your nintendo machine and the code to use it on the NeXT is trivial. <joe>