I am the lead programmer on the Robosapien Dance Machine project; an open source free program that lets Robosapien owners control their Robosapien from their PC. Currently I am using a third party infrared device for the infrared code transmission; which acts as a replacement for the Robosapien's included infrared remote control.
I am also a Lego Mindstorm 2.0 owner and I would like to be able to use the USB Tower to control the Robosapien (and later the serial tower).
I can read and write the USB tower just fine, however, my Robosapien never responds to the codes I'm sending. I'm guessing this is because of a low level format difference in the infrared data stream structure between the Robosapien's remote control and what the Lego USB IR Tower is sending.
Do any of you have any tips or ideas on how I can get this to work?
I'm guessing I need to alter the low level format of what the USB Tower is putting out, but I don't know how to do this.
I got the following Robosapien format information from this URL:
----------------- Robosapien IR format
The IR Carrier is 39.2kHz. Data is modulated using a space coded signal with8 data bits (data clock is 1200Hz, but actual data rate varies depending on the data).
You can skip the IR and IR modulation by wiring directly into the main PCBoard. This can be encoded easily by almost any small microprocessor. For modulating the signals yourself, the signal looks something like this:
Timing based on 1/1200 second clock (~.833ms) Signal is normally high (idle, no IR). Start: signal goes low for 8/1200 sec.
Data bits: for each of 8 data bits, space encoded signal depending on bit value Sends the most significant data bit first If the data bit is 0: signal goes high for 1/1200 sec, and low for1/1200 sec. If the data bit is 1: signal goes high for 4/1200 sec, and low for 1/1200 sec. BTW: The first bit (msb) is always 1 (valid codes are from $80 to $FF)
When completed, signal goes high again. No explicit stop bit. Minimal between signals is not known.