First, here are the pinouts for the EM406 connector that we use (pins 5 and 6 are not used):
Option One: Locosys 20031
One excellent module is the Locosys 20031 that's sold by Sparkfun (it's also the module used by AttoPilot). To connect it to ArduPilot, solder wires to the pads on the board as shown here:
Once you've got it soldered up, you need to program it for the right baud rate and 5Hz update rate. The best way to do that is to get a GPS adapter from the DIY Drones store and solder on a four pin header on the spare pins. Then connect them to your FTDI cable with jumper wires and another header, as shown here:
Now plug the Locosys into the GPS adapter and follow this tutorial to reprogram it.
In the ArduPilot code, you'll need to change the configuration file to tell it that you're using the Locosys. Change this line to 0, as shown:
#define GPS_PROTOCOL 0 // 0 = NMEA, 1=SIRF, 2=uBlox, 3 = ArduIMU, 5 = Simulated GPS mode (Debug)
Option Two: Paparazzi GPS module
Another GPS module you can use is the Paparazzi one (which is also a Ublox 5). Here's how to connect it:
Once you're done, use the same adapter board connection shown above and follow this tutorial to reprogram it for ArduPilot.
You can leave the ArduPilot configuration file in its default setting of 2:
#define GPS_PROTOCOL 2 // 0 = NMEA, 1=SIRF, 2=uBlox, 3 = ArduIMU, 5 = Simulated GPS mode (Debug)