07/07/2015 at 06:10 •
A few days ago I was thinking about the 2.5m accuracy of the GPS data when it occurred to me that I might be able to increase the accuracy of the position data. I can take advantage of the AVR micro-controller to calculate a moving average of the GPS position data. I will need to log a lot of GPS data when the receiver is in a fixed location, and also when it is being carried around by a person taking a walk, to get a true sense of how much the position information can vary and to establish limits when the location data can be averaged. If the camera is being used from a vehicle in motion it would not make sense to average the location data. The speed information in the GPS data can be used to determine when to stop averaging position data.
07/14/2015 at 23:02 •
I added two photographs to the gallery which show the portion of my workbench where I am working on the hardware for this project. The second picture with just two small boxes in it show the GPS receiver package. The square object near the top right of the picture is the heart of the GPS receiver package with its NEO-6M module in the center of the PCB. Towards the bottom left is the antenna with the black cable attached which connects it to the PCB.
The first picture is the main shows a solderless breadboard that has items on it for three different projects I have in progress. The parts relevant to this project start are the Raspberry Pi (at the top of the picture) with the black cable coming from it to a T-cobbler breakout board. Below the T-cobbler is a 74LVC245 IC which is used as a buffer between the 3.3 volt signals of the Pi and the 5V signals on the breadboard. The large IC below the buffer chip is an ATmega644 AVR microprocessor from Atmel. The blue device at the top of the picture, to the right of the Raspberry Pi, is a vacuum florescent display (VFD).
The Raspberry Pi is the software development platform for this project. I installed a GCC based cross-compiler toolchain on it that allows me to write and compile software to be run on the AVR microcontroller. I use avrdude to program the AVR microcontroller using the SPI interface of the Raspberry Pi. The VFD is serial based so it will act as the camera during early testing. I will use it to display GPS data allowing me to verify that the AVR is receiving and decoding the GPS messages from the NEO-6M.
The other items on the breaboard, not relevant to this project, are a capacitor ESR meter (down the left side) and a graphical LCD module (seen on the right side of the picture and connected to the AVR microcontroller via a multi-coloured ribbon cable).
07/15/2015 at 18:08 •
I keep in touch with other people interested in microcontrollers via an IRC channel dedicated to the topic. A few days ago someone asked for help with a GPS related project. In talking with them I learned of the NEO-7M from Ublox. It is a fully compatible successor to the NEO-6M, uses a lot less power, and only costs a few dollars more. The typical power consumption of the 7M is about half that of the 6M. I will use the NEO-6M in the initial prototype as it is on the board I already have. I will take a closer look at the 7M for a later version of this project.
Using the NEO-7M will allow me to reduce the amount of current I need from the camera battery and offset the additional current required to power the microcontroller. I will also reduce the average amount of power used by putting the microcontroller to sleep when it isn't receiving, processing, or sending GPS data.
I will be using a µCurrent™ GOLD (created by Dave Jones of EEVblog fame) along with an oscilloscope to determine the current requirements of this project during various stages of its operation: initial satellite acquisition (after power on), satellite tracking, and when the AVR is in sleep mode.
07/30/2015 at 14:47 •
A while ago I ordered a pair of cables for this project. They have the proprietary connector on one end which will plug in to the accessory port on the camera. The other end is a standard USB connector that will plug in to my interface PCB. I bought two cable with the plans to chop the USB end off one of them so I could wire it in to my prototype. I recently discovered some USB breakout boards on eBay. I will be able to use the cables as is so I can keep both cables intact.
The breakout boards, and some USB connectors, have been ordered and have already been shipped as of this morning. Once the items arrive I will have all the parts I need to make a prototype of this project.
08/11/2015 at 21:44 •
Yesterday I received the USB breakout boards I had ordered. The end of last month I received the two cables I had ordered which will provide the connection between the GPS receiver and the camera. I now have all the components required to build a prototype. At this point the focus shifts mainly to the software.
08/12/2015 at 16:01 •
I have finally updated the project details section of this project with more information and a detailed background. When I originally added this project to Hack A Day I put it up quickly so the project could be considered for a 3 week long mini-contest whose entry deadline was only a few days away.
08/16/2015 at 16:41 •
I used Kicad to draw up a preliminary schematic for the interface board. When I started work on the PCB layout I soon realized my original thought to use a 1" x 0.5" board was unrealistic. I am now working with a PCB board that will be the same size as the GPS receiver module (1.4" x 1"). The larger sized board has the room needed for all the parts but it is still going to be a challenge to run all the traces. I've already made some adjustments to the schematic to accommodate the initial work on the PCB layout.
It was not unexpected that the schematic diagram, the PCB, and the final packaging for the project are interrelated. Changes in one of these areas can impact the other areas. As I started the board layout I had to back port some changes to the schematic diagram. I have an idea on the final packaging for the project. The placement of the USB connectors, switch, button, and LED in the project enclosure will impact the PCB layout and that may require additional minor changes to the schematic to keep everything in sync.
The completion of the PCB layout is currently held as I have not made a final selection of the USB connectors I will use. I also need to do some 3D modelling to check clearances between the project enclosure and the cameras built-in flash unit when the flash unit is in use. The 3D model may reveal the need for additional changes in parts placement on the PCB.
08/17/2015 at 16:48 •
Yesterday I needed to determine the pin out of the cable that will connect my device to the camera in order to finish the schematic for my interface board. The cable has a Nikon proprietary connector on one end and a mini USB connector on the other. Using a multimeter, the cable, a USB breakout board and a thin probe it didn't take long to determine the pin out of the cable. I used the information to complete the preliminary version of the schematic diagram (now available here in the gallery).
While I had the cable connected to the breakout board I decided to check if the camera feeds power to the accessory port even when the power switch on the camera is set to the off position. I found out that is the case and that is when I realized I have a minor problem to solve.
The other DIY GPS project for a Nikon camera made me think I would see 5 volts on the accessory connector. When I measured the voltage supplied by my camera I obtained a reading of 5.94 volts. The AVR microcontroller has a maximum supply voltage rating of 5.5V. I am still looking for a datasheet for the voltage regulator used on the GPS receiver module. It might have a maximum supply voltage rating of 5V. I need to knock at least 0.5V off the voltage supplied by the camera to avoid damaging any of the components I'm using in my project. I also need to do so while drawing the least amount of additional current from the camera battery.
I could use a simple resistor to drop the supply voltage but the varying current drawn by the GPS module would result in varying voltage to the AVR microcontroller. A resistor and zener is the next option but that means two more components to add to an already crowded board. The last option is adding a voltage regulator. The regulator must provide an output voltage high enough to satisfy the regulator on the GPS module. I will conduct some tests with a variable power supply to see if a 3.6V output will work.
08/17/2015 at 20:13 •
This project is something I will finish as I have a real need for it. I submitted it to Hack A Day around the time I started work on the project so it would be considered as an entrant in a 3 week mini contest was being run. To enter the three week mini contest I had to mark the project as one to be considered for a price in the HackADayPrize 2015 contest.
I've been making good progress on the project in the limited time I have available to work on it. This past couple of weeks I was dealing with some computer system upgrades and administration tasks. Now it is less than an hour in which to submit a video as part of the HAD contest requirements.
I'm a maker, not a videographer.
I have one very basic video camera but there isn't enough light at my workbench for it to get a picture where you would be able to see what you are looking at. My SLR camera can record video for up to 30 seconds but there isn't enough light at the bench for it either. It was suggested to make a slideshow video with voice over. I have recently installed Lightworks on my computer but I've never used it to create or edit video. No time to figure it out in time to make a video with it.
Based on the published rules, not having a video probably puts me out of contention for this years Hack A Day Prize. In the end it doesn't really matter to me. I will be continuing work on this project prize or no prize.
08/17/2015 at 20:38 •
I thought it is time to summarize where the project stands and to state what I will be doing next towards having a working prototype.
I have a preliminary schematic for the interface board that sits between the camera and the GPS receiver package and I have started work on a PCB for it. I included an optional programming header for the AVR microcontroller to aid in development of the prototype. Once the software is finalize for the AVR microcontroller I won't need to install the header on any later copies of the project that I might make.
I need to locate and order a mini and micro USB connect that I will use for the project. I've been thinking I would prefer to use a through hole part for the main mini USB connector rather than a surface mount part. It would give me more mechanical strength and stability than a surface mount part. It could increase time between failures as the connector might be subject to a certain amount of stress from the cable that will be connected to it during use.
I hit a minor problem that will require adding some extra parts to the PCB. I need a voltage regulator to drop the camera battery voltage down to a safe level for the interface board and GPS package. I also may need to add a transistor and resistor to buffer the GPS data output from the AVR microcontroller that feeds the camera to make sure the signal level is high enough for the camera to recognize the data.
My next step is to put together a proof of concept that will let me see GPS data on the camera. To do this I will send a command to the GPS package to drop the baud rate to 4800. If I can't do that I will have to write a program for the
AVR microcontroller to receive GPS data at 9600 baud and feed the GPSGGA data at 4800 baud to the camera. I will wire up a simple buffer where I can alter the signal levels that will feed the camera. I don't know if the input to the camera is only good for TTL levels or not so I will start by being conservative and increase the output level slowly until I see an indicate the camera is receiving GPS data. To be safe, I will not exceed 5V on the input to the camera.
Once the camera shows it is receiving GPS data it will confirm I'm on the right track and the rest is down to finalizing the interface board design and packaging.
I'm close to a working proof of concept. Seeing GPS data appearing on the camera will be an exciting moment.