Sending location information from an Android phone to a Nikon camera

From Just in Time

Revision as of 22:55, 30 April 2013 by Danny (talk | contribs)

This page describes my ongoing project that offers location data from an Android phone to a Nikon D7000 camera. Using the Android location information is especially convenient, because it gracefully switches from GPS information outdoors to Wifi and GSM station information if it can't receive any GPS signal, providing the camera with best-effort location estimates.

Of course, the fact that I already own an Android phone also means that the additional hardware cost of approximately $15 sets off nicely against the $200 Nikon GP-1 GPS module.

The sources for the Android app are available on GitHub. This application will connect to a previously paired device and will send NMEA sentences to that device. The "GPS" data is retrieved from whatever location provider is available on the phone.

Nikon D7000 camera being fed GPS NMEA sentences from an Android phone. To the left is a bluetooth serial module that receives data from the phone and feeds it to the D7000


I'd like to geotag the images I take using my D7000. For a while things went just fine using my Eye-Fi SD card. The Eye-Fi software on windows uses WiFi access point IDs to determine where pictures were taken. Unfortunately, I'm on linux and the Google API that I used in my own programs to do the access-point-to-location conversion is no longer available.

It became time to do the geotagging in-camera. Fortunately, the Nikon GP-1 GPS module–at $200–costs more than I'm willing to pay for this functionality, providing me with an excellent excuse to start building my own.

The current setup is as follows: An inexpensive (€8,-) bluetooth-to-ttl module is connected to the gps/shutter connector on the camera. The plug was "engineered" from a cheap remote shutter release cord, bought for $2.89 via Ebay. My dedicated app on my Android phone asks the OS for location information and at a steady rate of 4/s creates NMEA RMC and GGA sentences and sends these to the bluetooth module. The bluetooth module is powered through the 5V pin of the camera connector.

Road Map

Since the plug also allows control of the shutter, I'd like to add an attiny to the setup that should react on non-NMEA sentences like "+f", "+s", "-f", "-s" to emulate pressing and releasing the focus and shutter buttons. This would turn my phone into a remote control. And while I've got a microcontroller attached, I might as well add a remotely controlled interval timer.

I'd really like to get both the microcontroller and the bluetooth module in low-power mode if the camera is switched off. Unfortunately, the plug has no signal indicating whether the camera is switched on or not. There may be a way: apparently the GPS input is connected to a pull-up resistor or bridge that is only powered when the camera is switched on; I'm measuring approximately 2.5V on this line when the camera is on. It should be possible to amplify this "signal" enough to wake up the attiny.

GPS bearing is typically not useful if you're standing still. Using the compass bearing would be better. Reading and interpreting the magnetometer however, is interesting.


Comments? Questions?


{{#set: |Article has average rating={{#averagerating:}} }} {{#showcommentform:}}

{{#ask: Belongs to article::Sending location information from an Android phone to a Nikon cameraModification date::+

 | ?Has comment person
 | ?Has comment date
 | ?Has comment text
 | ?Has comment rating
 | ?Belongs to comment
 | ?Comment was deleted#true,false
 | ?Has comment editor
 | ?Modification date
 | ?Has attached article
 | format=template
 | template=CommentResult
 | sort=Has comment date
 | order=asc
 | link=none
 | limit=100