This section of my wiki contains documentation, notes, and files related to my GPS Receiver for Nikon D3100 Cameras project that I have on the Hackaday website.
The goal of this project is to create a small device that will provide GPS data to a Nikon D3100 camera allowing it to tag photographs with location data.
The heart of this device is an easily obtained, small, inexpensive, GPS receiver package designed for use as part of a flight controller for radio controlled aircraft.
I bought my first digital SLR camera in January of 2013. I had thought about getting a digital SLR before then but they were not up to film standards or were way too expensive (almost $1,000 or more).
Just after Christmas a local store had a sale on a camera bundle that contained an entry level digital SLR made by Nikon. The camera in the bundle seemed a better choice than a similarly priced entry level Canon so I decided to buy it. I didn't think I would use the digital SLR camera that much as I had not taken many photographs with my 35mm SLR film camera in the last few years. I soon proved myself wrong on that count.
Since I bought the camera I have taken close to 6,000 pictures. I'm averaging around 200 photographs a month and I keep about 75% of them. I've been posting some of my photographs to Flickr and I add the locations for some of them to a map. That is when I realized I had a problem. I couldn't always remember exactly where I was when I took some of the pictures. I could keep a pen and paper on me but if I'm on the move and taking lots of photographs it would soon become burdensome to keep notes. I needed a better way to keep track of where I was when I take a photograph.
Nikon makes the GPS-1a attachment that I could use with my camera and it would solve the problem of keeping track of where I was when I take a photograph but the price on it is over $300. I looked around a bit more and found some other commercial GPS receivers available were more affordable at around $100 to $150 each. One was around the $60 mark but reviews of it mentioned some reliability issues.
During my research I found one DIY GPS receiver project online. It used a LEA-4S receiver module made by Ublox, which is one of their older products. The problem with it, and most of the commercial units, is the location data was stated as only being accurate to within 10m. When I'm on foot taking pictures a variation of 10m from my actual position can put me on the other side of a roadway, down the street by a few houses, or almost half a block away. I wanted something that could give me my location with more accuracy.
I looked for more information about the LEA-4S receiver module on the Ublox website to find out if it would be useful in my project, what was involved in using it, and the price for one. I discovered Ublox has a newer unit with the part designation of NEO-6M that has a claimed accuracy of 2.5m. At 4 times the accuracy of commercial units the NEO-6M would be good enough for my application. I soon found boards with a NEO-6M on them were readily available on eBay at a surprisingly low price. The DIY GPS project and the ready supply of inexpensive receiver boards on eBay inspired me to build my own GPS receiver attachment for my Nikon camera.
The heart of this GPS receiver attachment for a Nikon D3100 camera is a circuit board containing a Ublox NEO-6M. The boards are readily available on eBay at prices as low as $12 to $16 and include a passive antenna. The board sends out multiple NMEA data packets once per second at 9600 baud (its default rate). The catch here is the camera wants the data at 4800 baud. The addition of an 8-pin AVR micro-controller will allow the GPS data to be filtered and only the needed data will be passed to the camera at the rate it requires. The baud rate could be changed by a command to the NEO-6M device but if its configuration ever changed it might revert to sending data at 9600 baud and the camera would no longer see the location information.
I originally wanted to avoid using a micro-controller as I want to keep the current drain to a minimum. The micro-controller allows me to add a push button and an LED. They will let a user change some configuration options such as whether the unit is being used by someone walking around or if it is being used in a moving vehicle.