Usb host shield and active usb repeater cable

Hi All,

My first post so bear with me.

I’m a teacher from CT and my students and I are designign an underwater robot for competition. We are trying to run the robot off of an xbox 360 controller, usb host shield, and arduino mega. We have successfully programmed the robot with the controller, shield and mega, but we need to run the controller through 100ft (3-33ft) active repeater cable for our robot tether. Here’s the link to the cables we have http://www.amazon.com/PTC-Premium-Active-Repeater-Extension/dp/B003NUIK4M/ref=sr_1_5?ie=UTF8&qid=1430490857&sr=8-5&keywords=usb+repeater+cable

Unfortunately when we add the repeater cable into the loop we loose the controller signal to the shield/mega. We’ve done some troubleshooting: We were able to flash our mega from our computer through the repeater cable, we were also able to play xbox with the controller running through the repeater cable to the xbox console. So it seems that the limiting factor is the Shield.

Here’s my questions:

  1. Any idea why the shield would limit the signal, but not the mega? Power issue? protocol issue? buad rate?

  2. I read that the host shield runs to the mega via the SPI pins but i’m not familiar with those. Do they work like regular tx/rx seriel lines? We pulled an old female usb harware out of an old computer and I feel like we should just be able to run those rx/tx lines strait to the mega (without the host shield), but I don’t want to mess with the current programming too much if possible.

Here’s the code: Let me know what you think. Appreciate any help

ROV10.ino (22.9 KB)

It might have to do with the current delivering capability of the shield. When you program the Arduino through the extension cable, you are using the computer to deliver current to the Arduino. When you play the 360 over the extender, you're 360 is delivering the current to the controller. When you hook up the controller to the shield over the extender, the shield is trying to power both the extender cable and the controller, which it might not have enough current to do.

How was the robot powered when you ran this experiment? It's possible that your robot power supply is not beefy enough to power the extender and controller.

Regarding your 2nd question, the short answer is: No, it probably doesn't work like that. The longer answer is: SPI stands for Serial Peripheral Interface, which is a completely different protocol than Universal Serial Bus (how's that for a misnomer?). The magic that happens on the USB Host Shield is the translation between the incoming USB protocol and the SPI protocol that your Arduino understands. Connecting a female USB port directly to the Arduino won't allow the Arduino to communicate over USB - if it did, then that USB Host Shield wouldn't serve much of a purpose!

Does it have to be controlled via the 360 controller? Using multiple USB extenders might be problematic once submerged... Especially once movement is introduced. A single cable that spans the entire distance would likely be a bit more reliable. Using a protocol that is intended to run that type of distance is an even better idea. Cat5e Ethernet is specced to 100 meters. I would either start there, or with a custom controller "box" with a cable run to the individual inputs on the Arduino.

Since you've already used some of your budget on the USB host shield and extender cables, you're likely succumbing to the Sunk Cost Fallacy. I'm not saying it's impossible to do what you're trying to do, I'm just saying there might be better solutions available.