XBee Shield to make slow universal USB Extender

Thanks for your ideas. You're on the right track! Except for 2 things both off by an order of magnitude. 300m not 30m would be desired. $30 not $300 would be better. I mean in addition to what I already have. Time to do some coding for my USB shield! Suggestions?

So you're hoping to achieve 10 times the range for 1/10th of the cost.......
Is there linux version of the software?

Which software?
I'm just getting started. I'm new to Uno, but good with C. Using this Library:
http://www.circuitsathome.com/mcu/usb-host-shield-library-version-2-0-released

Why not just use an EyeFi card?

The Canon PC software that you intend to run. I was thinking along the lines of a beagle board connected to the camera by USB and then just use some sort of VNC to remotely control the beagleboard over your network. Covering the 300m could then be accomplished using traditional networking technologies.

You may be on to something. Eyefi might get me 30m tops. How about the next 270m? A cheap wifi router up in a tree? I like both your ideas! Almost. It's good we're thinking.

$150 for Beagle. It only runs Linux? No Wifi for $150? 3W 500ma power becomes an issue. I'd like it to stay on for days. Although I could have it wake and boot when there's a sensor input. It's getting complicated. How do I get 300m from Wifi? More money. Than only 300m. Xbee might go nearly a mile for $35. That's 1000m. My project needs are not fixed with respect to distance. Nice try! Next?

Thanks for your efforts!

Please supply a complete list of requirements for your project instead of drip feeding in a kind of 20 questions fashion....

I strongly suspect that your budget means that this is completely and utterly hopeless btw.

I don't want to be too specific because I'd like to hear new ideas! Here it is in general:
$100 in addition to what I already own, UNO, PC, Mifi router, ham radio, Canon 500D
Eyefi doesn't count in the budget because I can make use of that in other ways too, for example.
300m for starters. I've already got that working with CAT5 and EOS utility, so 200m would be less.
I've already made a circuit to use 110v cable to trigger the shutter no limit for distance.
I'd like to see a still image thru the lense, maybe every 5 minutes?
Thumbnail is only 30K jpg.
As a bonus, slow video and complete control of the camera using v2.0 of the PTP library.
Sorry to be so vague. I don't mind spending more if I can use it for another project!

I think I've decided what to do, I'm looking for another idea to beat it.
So far I have 2 possibilities to test. Passing USB data blindly from EOS utility over Xbee.
Or writing my own Arduino code to do one simple function first as v1.0:
Get a thumbnail jpg object from the camera.
http://www.dankulp.com/ptpfs/

Again, I appreciate your effort!

They way I see it for some sort of concept whereby xbee replaces the physical cable in a dumb parrot fashion:
USB spec dictates that a response must be received in 1500ns. If a response isn't received in time it assumes that there is something wrong.
You want to send the signal 300m.
It takes a radio wave 1000ns to cover 300m at the speed of light and it needs to cover that twice! (there and back)
This leaves you with -500ns..... ermmmm Houston we have a problem
Of course this assumes that an XBee has no delay between receiving a input and transmitting and receiving a signal and outputing. So in reality it's even worse.

I think it's possible. However I think you'd need to implement a large amount of the USB protocol and more than likely have the Arduino at the PC end masquerade as the camera and implement it's comms protocols to some degree. It probably goes a long way to explaining the cost of the commercial devices.

*updated my numbers

The xbee delay is huge compared to 1500ns. But, it doesn't seem to matter for PTP to my camera. 300m already works as I mentioned. At 30KByte/sec speeds as well. I can even unplug each of the data pins and it recovers nicely when I put them back. How's that for a long delay?

I think it will be impossible for me to trick EOS utility by pretending to be a camera, unless I can blindly repeat the data to the actual camera ignoring the huge delay. 100ms? Then repeat back the correct response. It will be easy enough to test when I get the Host Shield. I will try it in the most simple way possible then give up. Anyone with this experience to help me code? I have to stop the PC from sending before the transmit buffer fills. The same on the other end.

The PTP library will work. The disadvantage is that I have to manually recode all the features of EOS utility on both ends of the link. I was hoping to avoid that. Luckily I don't need any of them. Except to take a picture and see the thumbnail from the camera. Can you foresee any problems there? It's 2 function calls to the v2.0 library!

I wonder if the device you're using to send the signal down cat5 is doing something clever to get around the maximum response time?

Nope it's really stupid. Just a charge pump. Not sure how it gets the sender to slow down. I'd like to do the same thing only smarter. We know signals travel at less than the speed of light. I have verified that it's only going about 30KB/sec. That's what gave me this idea in the first place! Ideas? How does it do it without any additional hardware? Magic?

To Clarify, here are my next 2 experiments:

  1. Blindly and stupidly repeat the USB data both ways using the Host Shield library. There will be no Xbee involved at first. I realize this will not work for most applications or hardware, because of the huge delay and slow data rate. But isn't that what my CAT5 cable is doing so well at 300m? It totally screws up the timing and the data rate, yet it works perfectly. One step at a time, first I will try it at the full shield speed, with little delay or cable length. At the best data rate. One byte in, one byte out, in both directions. Will that work?

Then comes the problems. The difficulty in my case is how to tell the sender to pause or slow down, in both directions. Otherwise I will lose data. How does the CAT5 cable do that? Ideas?

  1. Use the PTP library v2.0 to get the thumbnail object from the Canon DSLR. Send it to the PC using USB. View the data using the terminal to make sure it appears to match the image file on the camera. In the next version I will figure out how to send it wirelessly. The problem with 2) is that it will never be compatible with the existing EOS utility provided by Canon which might work in 1).

How about something like this:

http://www.kenable.co.uk/product_info.php?products_id=4307
I know, I know you need to run off batteries.... just strap a massive truck battery to it. It'll slow the thieves down if nothing else.

Great price for what it does! Your second link sounds too good to be true for $50 on Amazon. It would go inside, or just outside of the house. Powered by 110vac. I like the price compared to others. Maybe at some shorter distance I can use it to talk to Eyefi directly. What's the catch? Maybe it's a misunderstanding. Maybe it's just the antenna?

In my case, there would be no way to trigger the shutter.

Did you mean for me to use them together? Ah the plus sign. The first link requires a cat5 CABLE like mine. That cannot be plugged into a wireless router or your second link. I wish. Went back to read it again. I'm wrong! Thinking...

All I need is a cheap router and your first link in the woods. Not much power! Great idea! Only $100 for both!

Can you find a wireless router that has a sleep mode? How would it know when to wake up? The Uno could do this every 5 minutes!

You should use the USB over ip hub with a cheap n router out in the woods. Put Linux on the router and you may be able to power the radios on/off. Also , if it has GPIOs you could use those for the shutter. Otherwise, connect an arduino + Ethernet shield to the router for shutter control.

Then connect your eos software - running computer to that network, and ta da!

And they said it couldn't be done for less than $100 just a few short days ago above!

Linux on the router? GPIO? Example please. I wouldn't need to trigger the shutter if the EOS utility was working over USB. I would need to trigger it if I was using Eyefi. I'd only like to refine this idea by allowing the router to sleep to save power.

Beautiful solution. Simple.

You should probably be aware the the maximum usable range of 802.11b/g/n is in the range of ~90m, with no obstructions--getting it to 300m would require directional antennas and suchlike.

What was said to be impossible was to make a 300m transmitter/receiver for $100. You still haven't (and probably never will) accomplish this goal, but your current trend of accepting more realistic approximates is much more likely to succeed.

You would put linux on a dd-wrt compatible router, which would give you access to the hardware. You'd then need to program it to toggle the GPIO (general purpose input/output) pins available on the board. The Linksys WRT54GL is the traditional router used for this, but it's not going to come close to a 300m range. Shop around for something more likely to work.

All true! Awhile back I revised my $100 budget to include outdoor things I don't already own. So I'm excluding the directional antenna in his 2nd link which can also be used for other projects. My concern was the value outside which could be damaged or stolen. This is currently less than $100 as suggested above. My 300m requirement is not written in stone. I'd like to come close to reaching it ideally.