The m3pi expansion board has access to a number of pins from the 3pi base via a 20-pin header near the center of the PCB:
Two rows of pins are identical, with columns connected by traces on the underside of the PCB. Typical users might find this header is useful for accessing power for additional sensors and custom electronics (see Section 4.b). Advanced users may also find this header useful for accessing the free or partially free I/O lines of the 3pi base’s AVR microcontroller. If you want to use the 3pi’s microcontroller as the main controller of the m3pi robot, you can connect your extra electronics to these I/O lines on the expansion board. If you are using the mbed as your main controller, these I/O lines will probably not be very useful.
Pins PD0 and PD1 are also free by default on the 3pi (i.e. they are not connected to anything on the 3pi other than AVR I/O pins). These are the 3pi’s hardware serial pins, and the default 3pi firmware uses these pins to receive commands that tell the 3pi base what to do. These pins connect to serial lines on the m3pi’s mbed socket and can be connected through jumpers on the m3pi expansion board directly to the serial pins of a socketed Wixel or XBee wireless module (see Section 4.a). If you want to use these as general-purpose I/O lines, you can access them through the appropriate mbed socket pins. Alternatively, you can use your favorite microcontroller board to control your m3pi by routing its serial pins to PD0 and PD1 through the mbed socket and sending the appropriate serial commands. The commands for the 3pi’s default serial slave program are documented in section 10.a of the 3pi user’s guide.
You can find out more about these I/O lines from section 10.c of the 3pi user’s guide. The most relevant part of that section is quoted below:
Note: 3pi pin PB3 doubles as a 3pi motor driver input and an AVR programming pin. We strongly recommend that you not connect this pin to anything.