Although we recommend the uBlox GPS module
we sell in the DIY Drones store, which is solid and easy to set up, ArduPilot can support any GPS module in NMEA mode. The tricky bit, however, is usually the connector and programming it to the right baud rate and other settings. Although every GPS module is different, here's a tutorial for two common ones that may help you with others.
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)