usb to db15

for the off season, my team was looking at converting an xbox controller to fit the operator interface. so far we have been unable to find a USB female to db15 male converter (we have found an adapter to get the xbox controller to work on USB). Is there any way to accomplish this?

Truth be told, you’re going to have a hard time finding a converter to DB15. They (being the DB15 connectors) just aren’t that common anymore.

However, the way that an XBox controller is designed, you are definitely looking at two of the gameports on the OI for the one controller (because of the two thumbsticks).

Perhaps it would be a better bet to gut the innards of the controller, and rewire it yourself.

It wouldn’t be possible to directly use the Xbox controller without some sort of digital to analog converter. I believe a USB connection is a digital signal (4 conductors- +5v, signal+, signal-, ground), while the OI’s 15 pin inputs are analog. There has been a bit of discussion around here about using USB joysticks with the OI, and the general consensus seems to be it can’t be done using simple connectors, but you can potentially crack open the controller and manually wire the potentiometers and buttons to associated db15 pinouts (as per IFI documentation).

Team 38 did something similar this past season, with a playstation controller. We ended up ripping out the entire thing, building our own board with our own buttons and controls in the PSX controller’s shell. It had a few bugs at first, but once everything was securely soldered together, it worked out pretty well.

I had an idea as to how this could be done with USB. It involves writing a driver for a laptop.

You need the laptop to interpret the USB signals from the gamepad and run the driver for the gamepad. Then you send a data stream to a microcontroller. The microcontroller uses it’s digital and analog outputs to output to the joystick inputs on the Operator Interface.

Very complicated. You would definitely get major props for creating this and bonus points for a white paper.

I have seen controllers like this but involved cutting off the connecter at the end and doing some weird wire mapping. But I am guessing that you don’t want to do that. There is a possibility of building your own converter, but you would have to know the pin-out of the x-box controller.

You may be interested in this thread here:
http://www.chiefdelphi.com/forums/showthread.php?t=22845&highlight=sega+genesis+controller

And this photo: http://www.chiefdelphi.com/forums/pictures.php?s=&action=single&picid=5818&direction=DESC&sort=date&perrow=5&trows=5&quiet=Verbose

And the accompanying discussion about that photo here:
http://www.chiefdelphi.com/forums/showthread.php?threadid=22852

There was an article on the Parallax website on how to use a playstation controller to control a basic stamp robot. I have a modified version of the basic code that i found online for the project somewhere. It might be easier to use a playstation controller as there is a ton of information available on them and there is already pbasic code written for it. I found out about this in a Nuts and Volts article and was planning on doing a project with it my senior year in high school but ended up working on FIRST stuff the entire time.
-Aaron

What everyone else said is correct. USB consists of GND, +5v-ish, Tx, and Rx. I’m pretty sure that most modern game controlers use serial in some way (and seeing the size of the Xbox to USB converters, I’m sure it’s just wiring).

However, the DB15 Gameport (which the OI ports are based on) has 4 analog channels, 4 digital ones, 2 +5v and 2 Gnd (or +5v, gnd, MIDI Tx, and MIDI Rx). It was originally based on a 2 stick design (XY and 2 buttons each).

Of course, the IFI has modified this a little for the purposes of the OI.

It isn’t impossible, but it does make it more difficult.

I would like to remind everyone that USB requires two way communication. The device needs to exhibit a serial name in addition to the serial data so it can be identified by the host and know when it is sending (or ready to send) data. There is also a requirement to have some interpretor in the host device that will issue and receive data packets from the USB device. That is a lot of work just to use a USB joystick. I know that Innonvation First is working on the problem of fewer gameport joysticks being available but when we first asked the question, they thought that the USB took too much to implement. They were continuing to watch the problem

I suppose the easiest (cheapest) implementation might be a variation of Mike’s solution above. Use that USB-to-serial converter more and more team have to buy for their new laptops, and couple it to the serial port on an old EDU controller (or for example a PIC) with a program to interpret the XBox control commands and output via the analog and digital outputs on the EDU to the db15 gameport on the OI.

The use of a microprocessor driving the gameport will probably be against the rules though, but it would open up a lot of interesting control possibilities!

Unfortunately even that won’t work. USB devices (such as USB-to-serial converter as well as the Xbox controller) need a USB host to communicate with - it is not possible for two USB client devices to communicate directly with each other. You’d need a microprocessor of some kind (one capable of acting as a host, which most smaller microcontrollers aren’t) sitting in between the USB-to-serial and the Xbox controller.

So it sounds like a laptop has to get thrown into that mix anyway.

And going by the rules FIRST has set for as long as I can remember, this is effectively illegal, because you have some sort of computer controlling the robot, besides the RC. This idea, while neat, is overly complicated and completely illegal for use during a FIRST competition, and honestly, I think it’s a lot easier to rewire a joystick if that’s the only joystick you can use.

This was my assumption as well. We were considering creating a Playstation controller drive system (just for fun) but decided that, even if we did (which I believe we probably will in the upcoming month or two), it would be illegal if it went through a PC.

The alternative to PC control, which I do believe is allowed, would be to create the interpreter using digital circuitry, transistors, and/or logic gates. For the most part, the circuit can be done simply through basic logic although a microcontroller may be necessary to communicate with certain serial-type controllers (PSX included). For more info on how console controllers communicate (systems from NES to N64 - not only Nintendo! :wink: ) check out http://www.arcadecontrols.com/Mirrors/www.ziplabel.com/dpadpro/index.html and http://www.gamesx.com/controldata/psxcont/psxcont.htm. Following instructions on their site, and one other, I was able to create a PSX->Parallel interface and simple driver which could be easily converted to work with separate circuitry rather than a computer.

Feel free to PM me if you have any more questions. I’ll be sure to post a thread and pictures as soon as our team gets working on the controller project in the next weeks.

**EDIT
Now that I think about it, I seem to be having a Déja-vu about this topic. I think I may have posted this same information last year (or possibly the year before). I’m too lazy to search right now but if anyone wants to, feel free.

In any case, be VERY careful about using anything that could be considered a computer in your controls. Unless you can hook everything up with wires, resistors, capacitors, etc, anything simple and that doesn’t have logic in it, you’ll almost definitely be safe, because it’s not a computer. But if you’re doing any sort of programming, don’t count on that control system being legal in FIRST.

As always, don’t take anything said here for 100% truth, you’ll all have to do your own research, but that won’t happen tilll January. If you want to prototype now, great, but just don’t put all your eggs in one basket.

I was wondering about using an xbox controller, and I know where I can get my hands on some xbox controller ports. Is there any way that someone can think of that I can use the wiring from the controller to connect to the D-15 port?

With a simple google search I found a SmartJoy X USB Adapter I think it is what you are looking for. As for the programming side of things I don’t have the slightest clue, but this will adapt an XBOX Controller to USB.

Good luck

From what I’ve seen about it, xbox controllers are usb controllers. Their pinout is a bit weird, but there’s definitely usb in the xbox (For more info about that, look up modding your xbox to include a usb hub, its a simple hardware mod)

Our team is intrested in using an XBOX controler.

I’ll see what I can find on these sites.

Here’s how this would have to work:
(I’m working with USB for a senior project.)
USB is a serial bus. This means that it has 2-way data communication over a balanced signal. The usb connector also happens to have +5 and GND.

I’m assuming that the XBox controllers have some kind of ‘smarts’ in them to multiplex (that’s assemble) the button pushes into a serial data stream for the USB. So, first off… they require power. I wouldn’t recommend trying to draw power off of the OI joystick ports without talking to IFI about current limits, which I don’t think are published as such. Secondly, since you aren’t allowed a ‘computer’ at the player station … well, you can see where I’m going with that.

Now other issues aside the techy details…
A PIC18F4550 appears to have USB support and is in a PDIP package, which means you could actually solder to a IC socket. (It’s not a surface mount)
Then you need to write the pic code to decode the probably custom data stream from the XBOX controller and demultiplex it into a set of digital outputs. Then you need to D to A the outputs for the analog sticks because the pic doesn’t have built in D to As.

Now how I would do it:
I’d disassemble the xbox controller and see what’s inside… I’d try to re-wire it so that each of the buttons has a direct output line to a DB-15 connector.
I’m rusty on my rules, but I don’t think you are allowed to do this. (Check)