I just received my latest subscription box from HackerBoxes and decided to spend some time tinkering with it this weekend. If you haven’t heard of HackerBoxes I highly recommend checking them out. You can view past box contents and their guides on their Instructables page.
Box #21 (Hacker Tracker) explores using a Arduino Nano to log positional data from a GPS module to a micro SD card for later retrieval.
HackerBoxes #21 (Hacker Tracker) Box Contents
- RobotDyn CH340G Arduino Nano V3
- uBlox NEO-6M GPS Module
- GY-273 3 Axis Magnetometer
- 16GB MicroSD Card
- USB MicroSD Card Reader
- SMD PCB Ruler
- Micro USB Cable
- SPI MicroSD Card Adapter
- Half Size Solderless Breadboard
- Jumper Wire Assortment
- HackerBoxes #21 Reference Card
- Hardware Hackers Decal
RobotDyn Arduino Nano V3
The Arduino nano is really convenient for prototyping since it can be plugged directly into a solderless breadboard. The V3 version from RobotDyn uses a micro USB connector which is helpful too.
The nano came preflashed with the blink sketch making it easy to do a simple power on test to test it out.
Catalex MicroSD Card Module
I was surprised how easy it was for the Arduino to interact with the MicroSD card module. The module requires power, ground, and 4 signal connections (MOSI, MISO, SCK, CS).
The Arudino folks have some sample code for reading and writing to these types of modules. This will come in handy for any future projects that requires any logging or storage capabilities.
Ublox NEO-6M GPS Module
The GPS module included in this box is a ublox NEO-6M module. This module has several really nice features making it very easy to work with.
The integrated USB to serial chip makes accessing this module super easy since you don’t need a seperate USB TTL serial adapter. If you are running Windows 10 you’ll need to download uBlox Ucenter to get the appropriate com port driver.
This module has an integrated antenna but you can also connect an external active GPS antenna. For indoor testing I use an active antenna placed on a window sill. A SMA to IPX adapter will allow you to connect standard SMA antennas directly to the module.
I actually like this module better than the Adafruit ultimate GPS breakout board which is based on the MTK3339 chipset.
Below is the completed circuit with both the MicroSD card interface and the GPS module connected to the Arduino nano. In this configuration the GPS module is powered directly from the 5V output on the nano. The ublox module has its own internal voltage regulator and can accept 3.3V-6V.
The ublox module status LED remains solid red while it is acquiring a signal. Once a satellite fix is acquired it will blink about once per second.
When using GPS modules inside it can take quite a while for them to achieve signal lock from a cold start. Placing them near a window, or using an external active antenna will speed up the process.
Testing the Tracker
To test the completed tracker in a real world situation I mounted the breadboard on my Logitech magnetic car mount and went for a drive. The integrated antenna was able to quickly acquire a signal lock outside.
After my test run I uploaded the file to www.gpsvisualizer.com and plotted the data on Google maps. The overall accuracy was very good! It missed a few location reports when I went through an area with very heavy trees but otherwise the tracking was perfect. Next time I’ll test the unit at highway speeds to verify if it can still keep up when moving faster.
This was a fun project that really opened my eyes to how easy it is for Arduino modules to interface with GPS modules and flash storage. Normally I would jump right to using a Raspberry Pi for something this complex but next time I’ll reconsider the much simpler and less expensive Arduino nano.
Other Project Ideas
The hardware included in this box could be used for several other projects, below are a few of my ideas.
GPS Clock – The GPS module has a 1PPS output that could be used to build a very accurate.
APRS Tracker – Combine the GPS module with a Raspberry Pi to remotely relay positional data via wireless