The Command Module uses the TWI interface (i2c) to talk to a Text-to-Speech module, Compass, LCD Display and Sonar. I have also added a PIC to the i2c Slave mix which I call with some Sensor Data from the Create so other modules have access to the data. The Command module only has 1 UART so it can only talk to the Create. Luckily the i2c bus gives an additional communications path. I connected the XBee radio to the USART port on the PIC to be able to relay data and commands to the PIC via i2c. Check out the iRobot Forum for solutions on adding more UART's using any other available ports.
The Command Module is the i2c Master and continuously polls the i2c sensors for data or remote commands. The Command Module also sends sensor data to the PIC to be available to be sent out it's Serial port via Radio for data logging.
If you need another UART on the Command Module, here is some code from JohnQ on the iRobot Create Forum which to allows you to use a couple of pins on the Command Module to add another "UART".
cm9600_410.zip
Here are some apps to get you going with the Command Module:
CMStart1.zip - A basic shell-of-an-app that polls sensor data. Add your own code in main() to make it move around.
oi.h - Used by all apps. Contains constants for Create OI.
JoeDrive.c - The last Main app I wrote for the Command Module. Uses most of the sensors I've tested.
CompassTest.c - Use this to test the compass.h header for the Devantech CMPS03 i2c compass. (scroll down, on the right side of this page to find the header files)
AdBotv1.zip - This is a complete AdBot project for the iRobot Create with the iRobot Crate Command Module. Really it's a simple program that polls sensors and sits in an idle loop checking bumpers and randomly moving a little every 8 seconds. It's a good bare-bones starter app. It already handles some of the IR Remote buttons so you can drive it around with the remote as-is. Just change the Main function a little to make it do whatever else you want, when you want it. No additional sensors or anything special going on here, just some random movement with bumper and wheel-drop checking.
Some Command Module References:


