I needed a way to have uniquely identifiable beacons for the Create to pass while on it's journeys through the house/office. I've posted the schematics and source-code here so you can make your own.
This project could be used to make a full-function remote for the Create/Roomba. Each beacon is assigned a number (you probably want to use any IR byte not used by the remote or Dock). The beacon transmits the byte every 200ms (configurable).
On the right you'll see the Schematic for connecting to a PIC16F690 and a link to the Source Code.
The source has a default IR Beacon # of 10. It can be set to anything. If you connect to the PIC's serial port on pin 12 then you can change the Beacon #, xmit interval, or disable the beacon and just send any IR byte it receives on the serial port.
Here is the latest version on a custom Printed Circuit Board powered by a 3v Lithium Battery. (I didn't have any 20 pin sockets and didn't need those four dangling pins anyway.)
Using a Radio Shack IR Receiver module (which demodulates the 38khz IR signals to nice 1/0 signals) and a Parallax Propeller chip I am decoding the iRobot Create/Roomba remote control. My plan is to use a couple of these IR Receivers to be able to detect my IR Beacons (above) to determine waypoints and help with localization.
My current version doesn't decode the Virtual Wall and Docking Station IR signals since they are not transmitting "bytes" like the remotes do. Future versions will be able to detect the walls and docking stations, but for now I'm not interested in those since the Create detects those itself just fine. I built this receiver to detect my IR Beacon to aid in navigation.
An "ON" is a 38khz PWM signal.
I didn't realize what they meant by a "38khz Carrier Frequency" until I tried to implement an IR Transmitter. A "Carrier Frequency" means when you are transmitting an ON signal, it is actually Pulsed On and Off at 38000 times per second. If you don't do this, then the receiver will see a single pulsed ON at the beginning of your ON time but then the receiver will interpret the rest as OFF. When transmitting an OFF signal, simply don't transmit anything. It's only the ON signals that have to be pulsed at 38khz.
You can see the 3ms ON and 1ms OFF for the 1-bits, and 1ms ON and 3ms OFF for the 0-bits, then 4ms OFF for the Stop-bit. (9 bits total including the Stop bit) The byte is then repeated about 27ms later while the button is held down. One byte is transmitted every 62ms (begin byte to next being byte) while the remote button is held down.
The Virtual Walls generate a 1ms ON, 1ms OFF signal continuously. The 1ms ON is a 38Khz PWM pulse.
IR Transmitter for a PIC16F690 - transmits a Byte every 200ms which is detected by the Create and indicated in the IR Sensor packet
Any other characters will be send out via IR, even in Beacon Mode.
Receives Create and Roomba Remote Control IR bytes (can be used to receive from the above IR Transmitter)