Need Help with Arduino for Driver Station

Hey guys,
My team has recently been working on a new driver station, and we wanted to implement an Arduino UNO to read signals from button, sliders, potentiometers, etc. in addition to our standard xBox 360 controller. How do I receive and interpret these signals from the Arduino using Java? Is it even possible? Any help is appreciated.

Have you considered a serial port?

The Cypress Board was designed for this, but the USB driver for it is a little iffy with some laptops.

You could also use this, which is new for this year.

The simplest solution is to take apart a joystick and connect your own buttons/pots instead of the ones in the joystick. We did this last year for testing, and it worked really well.

The arduino is a little tricky to do, because the driver station will only transmit data from a cypress board or a USB HID joystick, so you could write your own program that reads from the arduino (through serial over USB) and transmits the data to the robot on one of the unblocked ports. If you wanted to write a separate program that runs on the driver station laptop to transmit the data in java, you’d use the RxTx java library.

Or you could use this to make the arduino act as a USB HID device which can be recognized by the driver station. This is weird because you first load a sketch as normal, then you have to put the controller in DFU mode and reimage the communication chip to act as an HID device. This is the sort of stuff that can really mess up the arduino, so be careful.

Why not just the serial over USB, like normal? Chances are, he doesn’t have a laptop with a serial port, cables to chop up to make the serial cable needed, and an MAX232 level converter.

Taking apart a joystick seems like a pretty good idea. I’ll make a weekend project of it sometime soon. Many thanks.

Sorry if someone posted this already, but E-Stop robotic’s CCI is probably the best/easiest method to wire in custom controls and have them work without any complicated programming or external controllers.

We looked in to using the Arduino Leonardo last year since you can use USB-HID libraries to use it as a HID device. You need to create your own HID descriptor file, but it’s possible.

In the end we didn’t use it, as we wanted to read switch and pot values in software, but not as a joystick, due to time. It was easier to switch back to the cypress board in the time we had. We might take another look this year though.

For 4004, we have our arduino-based control board (this year it had 7 buttons) being read via a USB and then being read as a joystick into LabView.

Sounds good to me.

Serial over USB to a Parallax Propeller, PIC4550 or AT90USB162:

The I/Os are TTL level so no converter needed.
There’s already prototyping space on the Olimex PCB linked above.
There are American distributors for Olimex.
Propeller’s use serial over USB for debugging and bootloading.

Emulated serial over USB is by far the most compatible mode of operation.
I’ve used it in Windows, Mac OSX, Linux, BSD, Android just to name a few.

Avoiding the HID layer you can program in a wider range of languages and avoid some interesting issues.
I’ve even got shell scripts that can take input from serial ports that are really USB connected.

Not sure how you would do this on an Uno, but the Leonardo has USB joystick libraries you can use. You could also use a USB teensy with the arduino IDE as it supports those libraries as well. I’ve done this on the teensy and it’s very easy.