I decided to make my own GPS for my Nikon D90. Nikon wants well over $200 for a GPS unit. The parts I used cost roughly $40 in total, much less expensive than Nikon’s solution. The D90 accessory plug outputs +5V and expects 5V TTL logic. I was able to output +3.3V logic from my Arduino and it worked, but the GPS unit’s threshold must have been lower and the D90 didn’t accept the data. Below are the details on how I completed the task. I have left out the tracing and testing (e.g. checking to make sure I didn’t connect two pins or ground anything out) phases of the project in this writeup, but needless to say you should test and check your modifications with a multimeter.
I started with a cheap knockoff remote shutter release cable from Ebay; cost $5-$6.
The connector needs to be cut apart since the the wire only has the pins soldered for the remote release (3 wires).
The outer molding removed.
After careful cutting the connector has been completely exposed.
Here is the pinout of the connector for the D90.
The corresponding solder pads, I’m not sure if all the connectors will have the same location of pads.
Soldering the molex connector wire onto the D90 plug. I decided to use this approach instead of hard wiring into the GPS for three reasons. I wanted to be able to disconnect from the GPS unit, still be able to use the USB output from the GPS and if the connector broke I could make a new jumper wire easier.
I wanted to test the connector after I finished soldering it, so I setup my Arduino to output some emulated NMEA GPS sentences. The D90 accepted the Arduino’s 3.3V logic.
After tracing the pins from the PL2303 Serial to USB converter I was able to find larger pads to solder the +3.3V and GPS Data. The +5V is used for powering the GPS and as a reference voltage for the logic level converter. The 3.3V is used as reference for the logic level converter. This GPS unit cost $30 shipped off Ebay.
Here is the Sparkfun logic level converter hooked up to the GPS. The converter needs +5V and +3.3V as reference voltages to do the conversions.
Closeup of the logic level converter. Cost under $2.
Here is the completed GPS. I didn’t take any pictures of soldering the USB connector. Since this picture I have epoxied the cover back into the connector to add strength and to prevent short circuiting. I would not connect the GPS to the computer and camera at the same time. If you do you will just want to connect the ground and GPS data lines and NOT THE +5V. You really don’t want the a voltage differential to go into your camera or vice versa.
And we have real GPS data!
All things considered the project was definitely worth it and made me exercise some of my EE skills from college. I still need to figure out how I am going to mount the GPS to the D90. So now I will be able to geotag my photos when I am out taking pictures and won’t ever forget where I took one again.














George // Dec 6, 2010 at 17:59
Ahh, reminds me of good old senior design project days. Very nice write-up. Wish my Olympus eVolt was enable to encode GPS data into photos.
Max // Dec 6, 2010 at 19:29
Brilliant! I had thought about doing something similar but hadn’t find a cheap way around the proprietary connector. I didn’t realize that they were using that slot for remote triggers. I wonder if you could track down a manufacturer that would pin-out all the connections to a cable?
I’ve been thinking about doing some interesting things w/ the USB port, and would love to vampire-off the 5V of the GPS port. Any idea how much current you can sap off it?
-m
dan // Dec 6, 2010 at 19:55
Max,
I haven’t found anything short of the cable Nikon sells that you could cut in half.
I just took an amp reading and the GPS draws roughly 50mA. I don’t know how much you can pull on that pin. The +5V is always on, even when the camera is off. I think there is another pin that can output the +5V with the “auto meter” option in the GPS menu but then the GPS would have to re-acquire the GPS fix.
Fernando Lamarca (FLA) // Dec 16, 2010 at 09:17
Great job …
Thanks for putting the text clearer picture of the original.
Forgot password Flickr and I can not access my web.
See the link to Nikon with the progress of my work
Greetings
Fernando_FLA
http://www.nikonistas.com/digital/foro/index.php?showtopic=38837
Robert // Feb 15, 2011 at 17:40
This is awesome. Gonna have to give this a go if my Garmin Edge 705 doesn’t work.
Great write up!
Rafal // Feb 21, 2011 at 08:51
Hi!
On my D90 on pin as you describe +5V I have 6,5V. Is this pin connected directly to battery?
Is in D90 another pin with exactly +5V?
I am going to connect this GPS to camera.
http://www.propox.com/download/docs/GPS_FGPMMOPA6.pdf
Do you have idea how to connect it to D90? How make DC stabilizer and converter for different voltage level between GPS and camera?
Could you help me and give some advices.
Best regards,
dan // Feb 22, 2011 at 09:49
The +5V pin is +5V on my camera, the pin is powered even when the camera is turned off. You can buy a 3.3V regulator off the shelf and drop the voltage. I used a Sparkfun level converter (http://www.sparkfun.com/products/8745).
Rafal // Feb 22, 2011 at 11:21
Thanks for link to Sparkfun.
Maybe my multimeter is damaged and show wrong voltage on pin. I will check it.
BR.
DOUCET // Feb 22, 2011 at 09:33
Great job !
I would like to do the same, but I don’t understand why do you not use directly the +5V of the camera to power the GPS ? Why using a converter in 3,3v ?
Thanks
dan // Feb 22, 2011 at 09:44
I am using the 5V to power the GPS. The GPS chip outputs 3.3V TTL and the D90 expects 5V TTL, so that is why I used the logic level converter.
DOUCET // Feb 22, 2011 at 12:15
Okay, but I still don’t understand the use of the 3,3V output’s
Maybe it’s the connections that I’m not sure..
It’s not enough to connect the 5V power and the ground to the GPS and the GPS data to the camera ?
dan // Feb 22, 2011 at 12:18
The GPS I used was a USB GPS and I had to find the data out from the actual GPS chip which is 3.3V. The output from the GPS chip is connected to a PL2023 serial to usb converter that is at 5V, but you can’t use USB signals for the D90.
DOUCET // Mar 11, 2011 at 15:11
Okay, so if I well understand, you need to convert the GPS data in a 5V signal in order to be accepted by the camera ?
dan // Mar 15, 2011 at 07:22
Correct, the D90 expects 5V logic, even though most 5V logic devices can accept 3.3V logic, but the D90′s thresholds must be higher.
LouiZo // Apr 3, 2011 at 11:31
Thanks for your article that describe the pinouts! I’ve just done a test with a Pharos GPS-500 and the same connector you have (with a shutter cord). The power on my side is 6v and Pharos output is 3.3V, but plug directly, it works fine! no need to have a level shifter, at least on my D3100
Thanks again !
LouiZo
Wells // May 13, 2011 at 08:49
Hi,
I got a GPS module, it output 4800 baud serial signal, and I found it has a ST232B ic to transform TTL signal to RS232 signal, so I line out the ttl signal from PIN12 of ST232B, the TTL signal is 5V, but D90 could not find the GPS device.
I connected Vcc to GPS module +5v
GND to GPS module GND
GPS Data to GPS module ST232B pin 11 (TTL output).
what’s wrong with my device?
my arduino can use TinyGPS library to got GPS data from my GPS module.
Can you provide the arduino test sketch for refference.
Thanks.
BR,
Wells.
Wells // May 13, 2011 at 09:07
Sorry,
Thanks,
I found my problem~
I connected the gps data pin to the ST232B pin 12.
I confirmed with the ST232B datasheet, found that it’s the ttl input pin. so it’s my mistake, now my GPS module works!
Thanks!
Dave // Jul 2, 2011 at 11:21
Here’s a suppier for the connector on a basic lead.
http://www.gadgetinfinity.com/product.php?productid=17586.
dan // Jul 2, 2011 at 11:38
Dave,
That looks like it just has pinouts for the shutter and focus, you need other pins for the GPS to work.
Bernd // Jul 3, 2011 at 15:50
Hi nice job!
Anyone having some info on how to make a bluetooth module for the nikon D90 to connect to various external gps loggers , like the I-blue , qstarz and so on.
Thank You
Luc // Aug 6, 2011 at 09:45
Hi, nice job, very usefull !
Tested on a Nikon D5100 , just work fine !
If this can Help for D5100 users :
- Vcc is 6V an permanent
- Gps data in is internally pulled up to 3V, so you can use a simple NPN transistor to translate signal from RS232.
( for example a 2N2222 with a 10K resistor on base, emitter to gnd an collector directly tied to Gps input : tested OK with a Garmin GPS )
DIY Nikon D5100 GPS | Cyrozap's Tech Projects // Aug 13, 2011 at 20:44
[...] the GPS from here and the pinout data for the camera connector (with a lot of other useful info) here. Note: on the Flickr photo, read my comment for clarifying info and [...]
zequ // Sep 9, 2011 at 22:36
hello i need one gps for my nikon D80 you can help me??
Josh // Sep 19, 2011 at 11:43
Hi Dan,
I’ve re-wired up a shutter-release cable, and I’d just like to emulate some GPS positions for my research. Can you give me an idea of the NMEA sentences you used?
I’ve been using Serial.begin(4800); and Serial.println(); with some of the examples at http://home.mira.net/~gnb/gps/nmea.html#gpgga but while the camera seems to detect the GPS messages – it allows me to go into “position”, which it didn’t before I debugged my code – it is set to “—, —” for everything.
Kind Regards,
Josh
dan // Sep 19, 2011 at 11:49
The minimum sentences you need is GPRMC and GPGGA. I used output from here: http://www.gpsinformation.org/dale/nmea.htm. There is a checksum at the end of the string, so an invalid checksum will void the data.
Hope this helps.
Jeffrey // Dec 5, 2011 at 11:19
This is excellent!
I wonder, would it be possible to log the position of the camera in space and write that into the exif data?
http://www.x-io.co.uk/node/9
that would be great. Do you know if it would be possible, or will only GPS info work?
dan // Dec 6, 2011 at 11:51
The camera only accept NMEA sentences. If you formulated the proper GPRMC and GPGGA sentences it would accept them.
Jacob // Dec 12, 2011 at 05:30
I have been looking for something like this on and off for nearly two years, I sold my D90 some time ago, and I am now going to get a D7000. I am a tinkerer of sorts, and I do enjoy building things myself, however, with regards to GPS and the construction done here, it seems I am a bit in the dark.
I am wondering if you could possibly give me a bit more detail than what you have on your site. i.e. I am a bit confused about the USB to serial adapter, what is the purpose, from what I can see, the navibe GPS unit uses USB, and should not require any sort of adapter. So a bit more detail would be greatly appreciated… If you would like, I have submitted my email and would thoroughly enjoy learning a bit more from you if you have the time.
~Jacob
dan // Dec 12, 2011 at 07:08
The cameras accept TTL level logic from the GPS. You can’t hook up a USB GPS directly to the camera. The adapter you see is a logic level converter that brings the 3V logic to 5V logic so the camera can use the data. Some people have been able to directly hook the GPS up without the logic level converter.
Emppu // Jan 9, 2012 at 09:18
Jacob, you just have to bypass the USB converter, since the camera accepts rs-232 serial data at TTL (5V/0V) levels, so you cannot hook the USB cable directly to the camera. Or you could use a GPS module that outputs TTL level signal natively.
Accessory for Nikon D7000 – Part 1 – GPS receiver // Jan 23, 2012 at 16:04
[...] pins. You need just three of them: VCC, Ground and Data In (RX). Therefor I used the pinouts from dan’s blog: Nikon connector from top (taken from grink.com) Nikon connector from bottom (taken from [...]