I am working on a project through my school. We are going to be shooting cameras on spikes into the ground beside grid roads for tornado tracking. The spikes will be equipped with two cameras. My job is to design a system to track the spikes. I need to get GPS location and send it to a computer in the truck. I was thinking of using an Arduino. I need to send the GPS info (and possibly temp./air pressure) to the truck. I need as much range as possible as one of the spikes might be thrown by wind. We are hoping to keep the cost under $250 per spike.
I recently bought two XBee-PRO 900HP's ($40 each) and I think they'll do nicely for your purpose. Great range (although I haven't tested anywhere close to the range you need). The spec claims up to 28 outdoor line-of-sight miles. Setting them up was really easy. These are new modules so you might have trouble finding decent tutorials on the "API mode" but you can probably get away with the default serial mode. These can be powered directly from the Arduino's 3.3V pinout. I can't stress enough how easy I was able to go from zero to sixty with 'em. The DigiMesh technology may be incredibly useful given you'll have an array of these spread out geographically. Since you'll be transmitting binary data (the images) I guess you'll have to base64 them. In API mode (aka not basic serial) I'm fairly certain you could transmit the raw binary data without any conversions other than having to split it across multiple packets. You'll have to fiddle with the baud rate based on your range, how much data your transmitting, and how fast you're doing it.
Another option, and I'm not sure how expensive this would be, is to give them all cellular data connections. You'd just have to setup a web server somewhere with a simple API. This would probably end up being easier to get working assuming you're in an area that has decent cell coverage and you know how to setup a web server (or know someone who does that's willing to work with you).
I think an Arduino Uno (or similar) would be enough but that would depend on the size of your imagery. You'd most likely have to have another chip buffer the image and then pass it through to your own buffer on the Arduino. An Arduino Pro would also work but would take considerably more effort to get up and running. It also doesn't have a 3.3V regulator built in. The new Arduino Due might be worth a look too.
In the same project (and device, for that matter) that I'm using the XBees, I'm using a GPS. Specifically the Fastrax UP501. Most of the GPS modules that I looked at are 3.3V so this is another reason to use an Arduino that has an onboard 3.3V regulator. Sparkfun has an epic GPS buying guide I'd highly recommend you take a look at. A 1Hz update speed should be more than enough unless you're trying to track these things as they fly through the air. Feel free to take a look at how I implemented GPS (using the TinyGPS library) in the CaptainShip module.
Sparkfun has a good selection of weather sensors but you may have a place already in mind that has more accurate and precise instruments.
As far as durability goes that'll be up to the design of the spike itself.
EDIT: A few other things for you to consider in a project like this. Granted, I've never done something quite like this myself, but this is how I'd probably end up going about it.
- What's the power source? Solar? Battery?
- How long can I make this power source last? The XBee and GPS that I mentioned both have low power modes.
- How can I monitor the power source? Alert the server/coordinator of the issue.
- With a properly configured XBee you can remotely upload sketches to your Arduino array without the need for direct access. This could save you a hell of a lot of time, or may not be important at all.
- How many IO pins do I need? This will play a huge role in determining what Arduino you'd choose.
- RAM is something incredibly limited on these devices too. As I hinted above, I doubt you'll be able to fit the entire image into the Arduino's memory. You'll need not only a way of interfacing with a camera from the Arduino but a way to store the image elsewhere.
- Sparkfun has a few CMOS cameras to choose from but the documentation is severely lacking.
Under $250 per spike with twin camera & GPS? Use a mobile phone. Find a make/model of phone that has the features and that you can create software for (either by jailbreaking it or writing an app) and use that. $250 puts you squarely in the territory of being able to walk into a phone shop, find a decent (if unfashionable) phone with pre-paid SIM / internet etc. and then do a deal for a big stack of 'em.
At the cheap end, find something common but worthless that you can get in bulk from recyclers / ebay / the bins at the local phone shop. There's some very hackable Nokias out there (N900 and its predecessors) which plenty of people are running Linux on.
Another alternative - there are GPS-GSM trackers all over eBay for less than the price of an arduino. Slot in a SIM card and a pair of AA batteries, push the button and nail it to the ground.
Both cases, range is just about infinite. Also, (re)programming a phone will be far more useful to your career than programming an arduino.
Third option: Take a GPS with you and tag where you put the spikes...