In this instructable, we will show you how to make a small and inexpensive Arduino based GPS data logger, with wireless capability!
Using telemetry to study the movement of wildlife can be a very important tool for biologists. It can tell you where animals live, where they feed and how far they travel each day. Biologists then use this information to help conserve animals and their environment.
We used this data logger on flying-foxes (also called fruit bats) and together with others, discovered that flying-foxes fly over 40 km each night, returning to feed in the same tree.
This data logger:
- has a wireless range of over 2 km
- a battery life of over 2 weeks (using the battery described in Materials and Tools)
- transmits its current location in a 'heart beat' every 5 minutes
- can store 100 locations in its EEPROM
- and can transmit or 'dump' this data to your receiver daily or when commanded
By developing a small and inexpensive Arduino based GPS data logger, with wireless capability, we have provided students, citizen scientists and community groups with the equipment necessary to study the movement of their local wildlife.
Step 1: Materials and Tools
To build this instructable you will need to tidy your makers space, gather the materials (below) and plug in your soldering iron! If you don't know which end of the iron gets hot (hint: it's the pointy end) then you should probably find a friend who does to help you!
Here in Australia we use 433Mhz, it is made available to amateurs under the Radiocommunications (Low Interference Potential Devices) Class Licence 2015. Depending on your location you may need to use a transceiver operating on another frequency! Try the HM-TRP 868Mhz RF FSK Transceiver or the HM-TRP 915Mhz RF FSK Transceiver.
Step 2: Start With an Arduino Pro Mini
- Solder the header pins to the board
- Remove the reset button
See the image above for some tips!
Step 3: Wiring Up the GPS Module to the Arduino Board
Follow along with the images above!
Familiarise yourself with the GPS data sheet, or you can just wing it!
- Solder a length of red wire onto pin 4 of the GPS module (VBACKUP)
- Solder a length of black wire onto pin 12 of the GPS module (GND)
- Using double sided tape, attach the GPS to the bottom of the Arduino board
- Fold the black wire along the bottom of the Arduino board and solder to GND (next to RAW!)
- Push a resistor leg through pin 9 of the Arduino board and solder onto pin 1 of the GPS module
- Cut and fold the resistor leg down onto pins 9, 8, 7 and 6 and solder
- Fold the red wire over the top of the Arduino board and solder onto VCC
- Push a resistor leg through pins 5 and 4 of the Arduino board and solder onto pins 9 and 10 of the GPS module
- Cut the resistor legs level with the Arduino board and solder
Your GPS module is now ready for testing!
Step 4: Testing the GPS Module
It's always a good idea to test your GPS module before you continue.
- Install Arduino IDE on your computer
- Upload the code below to the data logger using a FTDI breakout - 3.3V
- Open Serial Monitor on Arduino IDE, you should now be able to see data being transmitted from your GPS module to the Arduino board
- You can also use other software like u-center to read the GPS data and give you other information, like how many satellites are in view and the accuracy of your location data!
Don't forget, you might need to go outside so the GPS module can pick up signals from the satellites!
Step 5: Going Wireless!
Have a look at the data sheet for this transceiver. What a clever little board, transmits just as far as a 60 mW Xbee Pro with a wire antenna but uses much less current so our battery will last longer!
- Solder a 10K resistor on top of the transceiver board between VCC and ENABLE, this will pull ENABLE high for sleeping, yawn!!!
- Solder a length of wire on the bottom of the transceiver board between VCC and CONFIG, this will pull CONFIG high for communicating
- Put some insulation tape on the side of the GPS module, this will prevent the transceiver board from shorting on the side of the GPS module case
- Solder another length of red wire to VCC, yellow to TX, black to GND, white to RX and blue to ENABLE
- Place the transceiver board on the remaining piece of double sided tape
- Pull the red wire underneath the Arduino board and solder onto VCC
- First pull the black wire over the resistor then down underneath the Arduino board, solder to GND
- Then yellow to pin 2, white to pin 3 and blue to pin A2
What an effort. Well done, your getting there!
Step 6: You'll Need a Receiver!
There's not much point in having a wireless GPS data logger if you don't have a receiver, and it couldn't get easier than this setup!
- Grab your second transceiver, you did get two, right!
- Solder a length of red wire between VCC and CONFIG
- Solder a length of black wire between GND and ENABLE
- Solder another length of red wire to VCC, black to GND, yellow to TX and white to RX
- Now place some header pins in the FTDI breakout
- Solder the red wire to VCC, black wire to GND, yellow to RX and white to TX (see how we reversed the wires connecting TX and RX, tricky, tricky, right!)
Now we're ready for some wireless communication!
Step 7: A Note on Antennas
Antennas make all the difference, but with wildlife, some times we have to keep them small.
The best antenna for your data logger and receiver is a dipole antenna, simply, you solder a 173 mm length of wire to the ANT pin on the transceiver and a seperate 173 mm length of wire to the GND pin. This combination will give us a line of sight range of over 2 km.
Sometimes you just can't have wires hanging out, wildlife generally have big teeth and will bite and chew and destroy antennas or even data loggers! To hide your antennas you can roll them up, this is called a helical or spring antenna. Simple wrap your wire around a small screwdriver, start at the end and roll it towards your transceiver.
P.S. do you know what else makes a great antenna, a fishing wire leader. They're generally made of braided steel wire with a plastic coating, extremely strong and very flexible. Excellent for use on wildlife who may be crawling underneath or around vegetation.
Step 8: Testing the Radios
- Upload the code below to the data logger using a FTDI breakout - 3.3V
- Remove the data logger from the FTDI breakout and power up the data logger using your battery or any other 3.3 v power supply, + to VCC and - to GND
- Insert your receiver into the FTDI breakout (usually you should remove the FTDI breakout from your computers USB port before changing peripherals)
- Start Arduino IDE and open your Serial Monitor
- Set Serial Monitor to 9600 bps and 'No line ending'
- Type 'tx' and click on Send
- You should receive a message from the GPS data logger saying 'TEST OK!"
Step 9: Deploying Your Wireless GPS Data Logger
That's it, testing complete, now upload the code below using Arduino IDE and your FTDI breakout and your done! You now have a wireless GPS data logger for use on wildlife.
Get to know your data logger before you deploy it, learn to listen for the heart beat using your receiver and Serial Monitor (there will be one every 5 minutes and don't forget the data logger needs to be outside). Once you receive the heart beat you have 5 seconds to type 'tx' and click on Send, then all the data will be 'dumped' to your screen, just copy and paste into the mapping software of your choice.
Get familiar with the code, you can change it to do whatever you want. Tracking a bear, well why not use a larger battery and receive a heart beat every minute!
I won't tell you how to pack your data logger or how to attach it to your wildlife, that's for you and your ethics committee to decide! I will tell you that we simply encased our data loggers with heat shrink, you could 'pot' them in epoxy if you wanted something more sturdy!
A huge shout out to all the people that helped me with this over the years and best of luck with your wireless GPS data logger!