GPS Logger Shield Hookup Guide
Hardware Overview
For a quick overview of the components and features of the GPS Logger Shield, refer to the image below:
The rest of this section will dive into some of the more critical components of the shield, including power supply requirements and UART and SPI interface configurations.
Powering the GPS Logger Shield
The GPS Logger Shield's main voltage supply is taken from the Arduino 5V header pin. This voltage is regulated down to 3.3V, which is supplied to both the GPS module and the µSD card.
These two components should consume around 30mA on average, but they may very occasionally spike to upwards of 100mA.
Logic-Level Shifting
The shield includes a TXB0108 8-Channel Level Shifter, which shifts voltage levels between the Arduino and 3.3V GPS UART and µSD SPI signals. Regardless of whether your Arduino runs at 5V or 3.3V, you shouldn't have to concern yourself with shifting voltages between either component.
The Arduino-side logic-level voltage is set by the IOREF pin, which most Arduino development boards connect to either 5V or 3.3V.
⚡ If your Arduino board doesn't have an IOREF pin, or if no voltage is supplied on that pin, you will need to set the IOREF voltage manually. The shield includes a jumper on the back-side of the board, labeled IOREF-SEL, which you can use to set the IOREF voltage to either 3.3V or 5V.
If your Arduino board doesn't have an IOREF pin, set this jumper to match your desired logic level.
GP3906 Battery Supply (VBAT)
The GP3906 is a great, little module, but it has one, big quirk: A supply voltage between 2.0-4.3V is required on the VBAT pin. If you have a 12mm coin cell battery, supplying that voltage is as easy as pushing it into the battery socket. When you insert the battery, make sure you slot it in + side facing up.
If you don't have a battery handy, there are a few workarounds. You can grab a soldering iron, and short the 3V3-Batt jumper, next to the battery socket.
Or you can wire the broken out VBAT pin to any voltage supply between 2.0-4.3V.
Supplying the GP3906 with a backup battery supply ensures that its real-time clock (RTC) will continue to tick, even when the rest of the board is powered off. That allows the module to get faster GPS fixes when it initially powers up. It doesn't consume a lot of power -- we've measured around 5-6µA, -- so a 12mm coin cell battery could keep the board "running" (in sleep mode) for about a year.
GPS Pin Breakout's
Most of the GPS input, output, and power pins are connected to something on the GPS Logger Shield, but they're all also broken out to this 8-pin header.
Here's a quick overview of each pin and its function:
Pin Label | In/Out | Board Connection | Pin Description |
---|---|---|---|
GND | In | Ground | GPS module ground (0V reference) |
PPS | Out | 1 pulse-per-second time reference | |
EN | In | Active-high chip-enable – pull low to reset or turn off | |
RX | In | Arduino TX/D9 | Serial data input |
TX | Out | Arduino RX/D8 | Serial data output |
FIX | Out | GPS Fix LED | GPS fix indicator – blinks before a fix, HIGH once a fix is valid |
VBAT | In | 12mm coin cell socket | Backup power – keeps the RTC running (2.0-4.3V input range) |
3V3 | In | On-board 3.3V regulator | 3.3V power supply input |
The PPS and EN pins are left unconnected. You're free to wire them up to any Arduino pin should you need either a pulse-per-second signal, or extra control of the GPS module's operation.
Selecting the Serial Port
The GPS module communicates via a simple, UART (serial) interface. The UART-select switch allows you to switch that interface between either the Arduino's hardware UART -- on pins D0 and D1 -- or a SoftwareSerial port on pins D8 and D9.
Should you need a reference, this table shows the map between GPS module and Arduino UART(s):
GPS Pin | Arduino Software UART Pin | Arduino Hardware UART Pin |
---|---|---|
RX | 9 | 1 (TX) |
TX | 8 | 0 (RX) |
If you're using an Arduino Uno or any development board with one, pre-occupied hardware UART, you may be forced to use the software serial port. Fortunately, the GPS module's baud rate defaults to a slow, steady 9600 bps, which SoftwareSerial shouldn't have a problem handling.
If you need to move the software serial port pins, they can be custom-routed to any other pin by cutting the solder jumpers between pins GPS-RX and D8 and/or GPS-TX and D9.
Once those jumpers are cut, you can wire the GPS-RX and GPS-TX pins to any other pins you'd like.
Selecting the µSD SPI Pins
On older Arduino boards, finding the SPI port was pretty simple -- it'd be on pins 10-13, mapping out to CS, MOSI, MISO, and SCLK respectively. On more recent Arduino board releases, however, these pins are just as likely to be found on only the 6-pin, 2x3 SPI header. The GPS Logger Shield maps the µSD SPI pins to both of these headers, in order to support as many development boards as possible.
A trio of three-way solder jumpers can be used to modify which Arduino pins are routed to the µSD card's SPI I/O's.
The middle pad of these jumpers carries the signal to/from the µSD card. The pads toward the inside of the board carry signals to the SPI header, and the pads toward the outside carry signals to pins 10-13.
Boards that map SPI to pins 10-13 include the Arduino Uno, RedBoard, Arduino Pro's, and most ATmega328P-based boards. If you're using any of these boards, it should be safe to leave the jumper's untouched (as they're also, likely, shorted together on the Arduino).
Boards that only map SPI to the 2x3 SPI header include the Arduino Leonardo (and other most ATmega32U4-based boards), Arduino Due, and the Arduino Zero (and most ATSAMD21-based boards). On these boards, you'll need to cut the solder jumpers connecting the middle pad to the D11-, D12-, and D13-side pads. The µSD_CS connected to pin D10 can be defined on any pin so it does not have to be modified.
Check below for more information about the **µSD SPI Jumpers**.
Power and GPS Fix Status LEDs
This pair of LEDs on the corner of the shield are a handy tool for initial troubleshooting. The red PWR LED is attached to the output of the shield's on-board 3.3V regulator. If the shield is getting power, this LED should be on.
The blue GPS FIX LED is connected the GP3906's "3D_FIX" pin. It can be used to identify whether the GPS module has a proper fix or not. When you initially power the shield up, the LED should blink -- indicating it's trying to find a fix. Once the LED turns solidly on, you can rest assured that your GPS module has a good fix on your location.
Both of these LEDs have solder jumpers underneath, should you find the need to disable either of them. A quick slice between the pads is all it takes to remove them from the circuit. This might be useful if you're using the GPS Logger Shield in a low-power application, where even the handful of milliamps consumed by the LEDs means months off a project's battery lifetime.