Go Down

Topic: XBee Shield to make slow universal USB Extender (Read 5418 times) previous topic - next topic

sbright33

Can I use an XBee shield to make an extender for USB 1.1?  It doesn't matter to me if it's only 100kbps like my existing CAT5.  It could be between a PC and camera for example.  I'd prefer if it was universal.  I'd like to use it with existing software (on PC) and firmware (on camera), so it just needs to pass the data wirelessly.  Let's assume timing is not as issue because I already tested it with a 300m CAT5 cable and my software.  Is this possible?  I want to experiment with the XBee Shield, AND use it for this practical purpose.  Is there a better solution?  I hope not, because I want to purchase one for fun anyway!  Thanks in advance for your help.  My level of expertise is beginner for Arduino, but I have my MSEE so we can talk on that level if you prefer.  Steve
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

sbright33

Is it possible to use an XBee shield to make extender for USB 1.1?  It doesn't matter if it's only 100kbps like my existing CAT5.  It could be between a PC and camera for example.  I'd prefer if it was universal.  I'd like to use it with existing software (on PC) and firmware (on camera), so it just needs to pass the data without wires.  Let's assume timing is not as issue because I already tested it with a 300m CAT5 cable and my software.  Is this feasible?  I want to experiment with the XBee Shield, AND use it for this practical purpose.  Is there a better solution?  I hope not, because I want to purchase one for fun anyway!  Thanks in advance for your help.  My level of expertise is beginner for Arduino, but I have my MSEE so we can talk on that level if you prefer.  Steve
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

PaulS

Quote
Is it possible to use an XBee shield to make extender for USB 1.1?  It doesn't matter if it's only 100kbps like my existing CAT5.  It could be between a PC and camera for example.  I'd prefer if it was universal.

Anything's possible. Some things are simply a little bit harder.

You're aware, being a EE, that the Arduino is a USB slave device, so it can't make the USB port DO anything. It doesn't even have direct access to it.

sbright33

I'm new to the world of Arduno.  I can't even spell it yet!  Is there a board or shield to make it a USB master?  Surely you can write a bit of data to the USB port...  As a slave?
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

PaulS

Quote
Is there a board or shield to make it a USB master? 

Yes. But, in general, you need to write drivers for whatever you want to master with it.

Quote
Surely you can write a bit of data to the USB port...  As a slave?

No. You can write stuff to the serial port, which is connected to the USB controller chip on the Ardiuno and which can communicate with a PC via a USB cable.

sbright33

Instead of writing a driver...  There's not an easier way to just repeat everything slower?  Like a piece of wire kinda?  My CAT5 converter isn't that smart and it works perfectly.

Can I just receive the data, store them in a buffer, then send them out slower on the other end?  All I have to do is make the sender slow down or pause.  I can resend them blindly.  It's serial only one bit of data at a time...

One end is already finished?  The Slave side?  I just have to pretend to be a Master on the camera side using a serial pin on the Arduino?  Pardon my ignorance this is new to me.  I guess this is harder than I thought.
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

sbright33

Using this to be a Host on the camera side?
http://www.sparkfun.com/products/9947
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

bilbo

It might be possible with a lot of programming and heavy use of a USB host library on one end and a USB device library like LUFA on the other end, but it would be incredibly slow, difficult to program, and would not be universal for all USB devices. There are many other ways of accomplishing this that would work much better...
Alice asked the Chesire Cat, who was sitting in a tree, "What road do I take?"
The cat asked, "Where do you want to go?"
"I don't know," Ali

sbright33

OK forget Universal.  Can you tell me a better option so that I can use the EOS utility software on a PC without wires to the camera?  I have a Canon 500D running Magic Lantern firmware.

This would work great without a PC:
http://www.circuitsathome.com/canon-eos-cameras-principles-of-interfacing-and-library-description

But that is not my goal.
Thanks for your time!
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

PaulS

Quote
Instead of writing a driver...  There's not an easier way to just repeat everything slower?

If you aren't a USB Master, the camera you want to talk to won't tell you squat. So, I guess you could repeat that slower. Or faster. Doesn't really matter.

Quote
Using this to be a Host on the camera side?

That's the hardware part of being a USB Host/Master. Now, all you need to do is write the software (the driver) to make that hardware work.

sbright33

That's already been done!
http://www.circuitsathome.com/canon-eos-cameras-principles-of-interfacing-and-library-description

Next step is to tell the EOS software on the PC what it needs to hear in response...
I think this will be very difficult.  Ideas anyone?  Back to the drawing board?

Why can't I just resend the data from the PC on the other side to the camera?
Ignoring timing and bandwidth, blindly. That's what my CAT5 converter does?
Can I test this theory using the Master hardware above?  If I buy it...
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

sbright33

Anyone else?  Familiar with PTP and Arduino?
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

Aeturnalus

I don't know about yours, but most "CAT5 USB extenders" are really just sockets with (maybe) a charge pump on the IO lines to extend the usable length of wire that can be run in between - they don't actually do any processing.

WRT your original question, XBee will probably not run fast enough to suffice for a passthrough USB port via software, seeing  as the maximum speed is ~115200 baud, which is ~11.52 kilobytes per second - a far cry from USB 1.1, which (at its lowest speed) is 187.5 kilobytes per second or so.

sbright33

I agree about CAT5 and your math.  But it works for 200-300m.  This comes with 100x the allowed delay for USB.  The PC and camera are smart enough to slow down on their own to about 20KB/s in my test.  Normally they run at USB 2.0 speed.  So I'm thinking they would also do it in my case.  Do you think it's worth a quick try?  How long would it take me to write the code to repeat data from USB slave to USB host and back?  I could skip the Xbee part for v1.  I'm new to this microcontroller, but experienced in C.  Easy to test?
If you fall... I'll be there for you!
-Floor

Skype Brighteyes3333
(262) 696-9619

daveg360

What do you need to control on the camera?  If you could do it using the IR remote then you could easily make a IR sender (or buy a commercial device).
If your system involves lethal voltages/life critical/flamable elements - you probably shouldn't need to ask.
The Arduino != PC.

Go Up