Arduino GPS Reciever in a Tin




About: Into electronics, particularly Arduino as well as building and fixing things. Also enjoy 3D Printing, Mechanics and CAD.

Welcome to my tutorial on how to build a GPS Receiver!

I have entered this Instructable into a few competitions that I think it is applicable to. If you feel it is worth a vote into the above contests, please do click the vote button. Thank you!

Ever wanted to know your exact location? Perhaps the exact time in GMT? Or even your speed?

With this project you can know all of the above. I wanted to create a very simple and cheap GPS receiver so that I can know my exact location. This receiver can be used for many things such as geocaching, model R/C, navigation and more!The receiver uses a simple touch-screen interface and all the GPS data refreshes every second. It is also powered of a LiPoly battery to make it portable and easier to use.

The GPS Receiver will get and display the following information:






-Time and Date

This project has been published 'as is' and therefore I accept no responsibility for any loss or damage.

So, with that out he way, on with the build...

Step 1: Parts List:

To make the receiver you need:

1) GPS module - I re-used mine from a different project, but any module that supports the NMEA protocol over serial should work. I also added an external LED to report fix status.

2) 500mA LiPo battery

3) Adafruit Power Boost 500

4) 2.2 Inch Nextion LCD display

5) Arduino Micro using AtMega 32u4 (I used this over an Arduino mini or micro as it was small, and had on board USB)

6) DC barrel jack

7) Enclosure - I used a cigarette tin, but a mint tin would work. I also used some rubber sleeve for the edges.

8) Automatic wire strippers

9) 22AWG hook-up wire.

10) Soldering station and solder

11) Helping hands (optional but very helpful)

12) Wire cutters

13) Micro SD card (not shown)

14) Hot glue gun (optional for insulation, not shown)

15) Heat shrink tubing (not shown)

16) Cardboard and Scissors (not shown)

17) Toggle switch (not shown)

18) LED for fix indication and 330 ohm resistor (optional and not shown)

Step 2: Enclosure

First, cut a rectangle in your enclosure 2mm bigger than your screen, leaving enough room for the connector on the side.

Drill two holes suitable for your toggle switch and LED, if you decide to use them.

Afterwards, line the edges with rubber sleeve but cut the sleeve at right angles (as shown) to cover the corners.

Press fit the screen gently into place to verify it that it fits.

Step 3: Battery Connector

It is a good idea to allow the battery to be removable, in case it needs to be replaced.

To do this, cut two headers off the strip (included with the Power Boost and Arduino) and solder both wires from the JST cable to them.

Insulate with tape around the contacts and then heat shrink over the top.

Step 4: Power

Cut, strip and solder two appropriate lengths of wire. Solder one wire to 5v on the Power Boost and RAW on the Arduino. Solder the other piece to GND on the Power Boost and GND on the Arduino.

As well as this, solder the 5v from the GPS to another available 5v output on the Power Boost. Also wire the GPS's GND and Power Boost GND connection together.

Lastly, solder the Nextion Display's 5v wire to a 5v output on the Power Boost. Also, solder the GND wire from the Nextion Display to a GND output on the Power Boost. (Notice I used headers on the Power Boost for the display so that I could easily remove it.)

Step 5: Toggle Switch

A toggle switch can be added to power on or off the unit.

First, solder two wires to each terminal.

Then solder one to EN and the other to GND on the Power Boost.

Lastly, mount the toggle switch on the enclosure.

Step 6: Signal Connections

Solder the Rx wire from the GPS to pin 10, and the Tx to pin 7 on the Arduino.

Connect the Rx pin of the Nextion display to pin 8 and the Tx to pin 9 on the Arduino. Again, I used headers on the Arduino for the display.

Also, if your module supports it, solder a 330 ohm resistor and LED to the fix output on your GPS module.

Step 7: DC Barrel Jack

Mark out a hole for the barrel jack on your enclosure, then remove all components from the case.

Drill the hole and glue the jack in place. Also optionally insulate the barrel jack's contacts with hot glue.

Step 8: Final Assembly

Cut out a rough patch of cardboard that covers the back of the display.

Gently press-fit the screen back into place, and layer the cardboard over the back of it.

Now place the rest of the components in. This process will vary dependent on your enclosure. I stacked the Power Boost and Arduino with insulation tape between them.

Next, I inserted the battery and then followed up with the GPS receiver.

Insert the LED into the hole (if you used one) and glue it in place.

Lastly, connect the battery to the adapter that was made earlier on.

Ensure the polarity is correct (The two Red wires should be connected, likewise with the black)!!

Step 9: Programming

Install these libraries into the Arduino IDE. You can find out how to do this here. Look for installing .zip libraries.

To program the display, copy the file attached below to a Micro SD card. Insert it into the display and power on the unit. The display will copy the code of the card. When it is done (it will report success), turn of the unit and remove the SD card.

To program the Arduino, plug it into the computer using a USB cable and select Arduino Leonardo from Tools > Board

Then select the appropriate Com port from Tools > Port. (It should say Com x (Arduino Leonardo), where x is the com port number)

When finished, remove the USB cable.

Step 10: Testing and Operation

Turn the unit on with the toggle switch.

Once greeted by the splash-screen, tap the screen once.

Now wait until the GPS gets a fix. This is denoted by the GPS's fix LED flashing.

Once there is a fix, tap the red cross. The GPS data is now displayed. If it the data is invalid, there are not enough fixes or there is another error, 'NO FIX' will be displayed. Restart the unit and try again if this happens.

To see the time, tap the top title on the screen, and to get back, tap the title again.

Note: For long uses, where the unit will not be in use, unplug the battery to prevent any discharge.

Thank you for reading this Instructable, and I hope you have enjoyed reading it and good luck with your build :)



    • Woodworking Contest

      Woodworking Contest
    • Classroom Science Contest

      Classroom Science Contest
    • Arduino Contest 2019

      Arduino Contest 2019

    14 Discussions


    2 years ago

    This is a great project. One question, would you be able to integrate a transmitter to send the GPS location to a receiver to allow for real time tracking?

    1 reply

    Reply 2 years ago

    Hi TrentL12,

    Thank you for your comment, it is possible, but you would need to use a system such as GSM (mobile connections such as texts) or the 2.4Ghz band using commonly known digital transmitters and receivers (xbee etc.). You would be limited with range however, and would also need to implement this into the code.


    2 years ago

    Where's the schematic for us to understand? I did look for one . . . .


    2 replies

    Reply 2 years ago

    Hello gromit1943,

    Thank you for your comment, unfortunately however, the components I have used do not feature as parts in the schematic program I use. Therefore I can not make an accurate schematic as it would not represent the parts I have used and create confusion. However, the basic pin connections are mentioned, as there are are not too many, which I felt where detailed enough. I will answer any questions if you are unclear on anything however :)


    Reply 2 years ago

    Thank you for your reply, and I do understand; and you have certainly supplied all the info necessary to build the unit. It's just that as an engineer, my brain needs a schematic to fully understand the operation. Many thanks for the 'able.

    Dr. T. Rowe


    2 years ago

    adding display is great !! and working under neath the tin is also good!! thanks for sharing!

    1 reply

    2 years ago

    Hi, how long it takes to receive and display the GPS data? I have some cheap GPS, but the seller said you need to take outdoor for GPS signal...

    1 reply

    Reply 2 years ago

    Hello WongH,

    The fix time depends on where you are. If the unit is facing towards the sky, without any buildings, it can take around 15 - 60 seconds (sometimes longer). This time can be longer inside buildings.

    Your GPS modules might work, the best soloution would be to connect the serial lines to an Arduino UNO 0 and 1 pins (or hardware serial pins on a different Arduino) and see if you get a fix indoors, looking at the raw data from the serial monitor. There are also example sketches in the TinyGPS++ library that can parse the information as well, just look at the wiring needed for them.

    If it works indoors, it should work in the tin.


    2 years ago

    Hi friend! (diytronics)

    Can a larger screen be used, for example 2.8" or 3.2" Nextion?
    Thank you

    1 reply

    Reply 2 years ago

    Hello dancopy,

    You would have to try putting the .tft file on the larger screen. I have not tried experimented with larger screens as they would be to big for the enclosure. Therefore I am unsure what the result would be.


    2 years ago

    Hi petercd,

    Thanks for your comment, you are right in that the signal passes through the TFT display, as it mostly compromises of glass. The antenna is positioned underneath it so it intercepts the sattalites signals more effectively. The system being inside metal was an initial worry for me as metal generally does have a negative effect on GPS signals, however I can still retain a fix inside buildings so it seems to be OK.

    1 reply

    Reply 2 years ago

    It is due to the distance between the tin and the antenna. or frequency harmonics.

    If that tin was say, 3 cubic feet of interior volume with the patch antenna being 8-12 inches from the metal wall, then you'd probably have a reception issue.

    Radio frequency propagation is quirky like that. In your case, the tin is conducting the signal parasitically, and the antenna being within one of the many harmonic resonance areas. move it a few millimeters closer or farther from the tin surface, and you'll find dead spots. Think of these harmonic resonant zones as 'stripes'... they alternate, and are of different thicknesses also.


    2 years ago

    I wouldnt have thought this would work in a tin, seeing as my Garmin Nuvi40 doesnt pick up signal under the corrugated iron roof in my garage.

    Perhaps its getting signal through the led display, in which case a non metallic back should increase the performance considerably.