This project is not finished and is also not actively developed right now. We may return to this project at some later time.
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 that I'm writing 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.
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.
And android phone receives location information from its GPS receiver, cell tower information or nearby wifi networks. A custom android app combines the data and generates standard NMEA RMC and GGA sentences and sends this via bluetooth to a paired bluetooth UART. The UART is connected to the camera, feeding the NMEA sentences via the gps/shutter connector.
The bluetooth UART is an inexpensive (€8,-) Bolutek module, connected to the gps/shutter connector on the camera. It is powered through the 5V pin of the camera connector. The plug for this connector was "engineered" from a cheap remote shutter release cord, bought for $2.89 via Ebay.
Pinout of the D90/D7000 plug is described at pinoutsguide.com. For this project it is relevant to know that this connector has one input pin that accepts a 4800 bps serial datastream of standard NMEA gps sentences (pin 7).
Pinout of the plug is as follows (as seen "from the camera" with the notch at the top left).
|1 - NC||2 - NC||3 - GND||4 - +5V|
|5 - Focus||6 - Shutter||7 - GPS||8 - NC|
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.