DIY field controller

This is Part 1 of a DIY field control project, not sure if there will ever be a Part 2, we will see.

There was a thread on the forums a few weeks ago that discussed the tournament manager software. I had often wondered what was used at competitions so decided to download and try it out. The tournament manager is in fact a suite of several programs. A database server running in the background communicates with applications for tournament control, audience and pit displays. Multiple instances of the display software can run on a network of computers allowing remote display at a large venue. One operator can control all this from a single location.

Having installed the tournament manager and setup a simple test competition the one thing I noticed was that the match timer does not run. Reading the manual confirms this; the match timer will only run if field control hardware is connected. I’m not sure why this is the case, presumably the PC is used for timing, I can only assume that it is to ensure that all electrical connections are sound before a match can be started. VEX sells the field control system for $200, hard to justify just to be able to play with the application and use when teams are practicing. So to the point of this post, is there a low cost way to enable the match timer. I’m sure the developers would say “just run the application with the –d or whatever flag set”, but that would be no fun whereas reverse engineering the hardware is.

The tournament manager installed a driver for the field control system. The driver is at the path C:\Program Files\VEX\Tournament Manager\Drivers\cp210x in the form of an installation utility CP210xVCPInstaller.exe which windows reports as “Driver Installation utility. Silicon Laboratories Inc.” Looking at the setup.ini file confirms that this is the correct driver for the field control, a USB device with vendor ID of 0x10C4 and product ID of 0xEA60.

[Driver Type]
VCP CP210x
[Driver Version]
[Product Name]
VEX Competition Field Controller
[Company Name]
VEX Robotics, Inc.

A quick aside, every manufacturer using USB in their products should have their own vendor ID assigned by the USB Implementers forum either by becoming a member or purchasing a vendor ID for around $2000. I don’t know why VEX has not done this and continues to have products with vendor and product ID’s which are technically in conflict with others on the market. They had a great opportunity to address this when the latest firmware for the cortex was released, but it still has a vendor ID owned by Microchip Technology and a product ID that should be a 10 channel A-D converter. End Rant

So the first place to visit is the Silicon Laboratories web site, searching on CP210x reveals they have a series of USB to RS232 bridge circuits starting with a product designation of CP210, so how to decide which one.

The tournament manager manual has some good close up photos of the field control hardware.

The silabs chip can be seen so we are on the right track. The first thing to notice is that the IC is in a 28pin package, this narrows down the possible products to three, the CP2101, CP2102 and CP2103. Zooming in on the photo suggests the device is the CP2103, the product datasheets confirm this is the most likely as, in addition to the normal serial port emulation, it has four GPIO pins that may be used as digital inputs or outputs. Silabs have an evaluation kit available for $29 so an order was placed. The evalution kit is also available from digikey for the same price.

The evaluation kit consists of a small board with the CP2103 along with cables and software. The board provides jumpers on all signals for test purposes and LED’s on the four GPIO lines.

I had fully expected that some reconfiguration of the evaluation board would be necessary, perhaps changing the USB product string to “VEX Competition Field Controller” or something like that. However, after connecting the evaluation board to the PC, allowing the drivers to load and starting the tournament manager software, I was given the option of assigning this new “Field Controller” to a match field.

Testing driver and autonomous control suggests that GPIO_1 is used as the enable/disable signal and GPIO_0 is used as driver/autonomous selection. I’m only interested in operation with VEXnet but assume one of the other GPIO signals would perhaps be transmitter enable/disable for the 75MHz systems. The match timer now operates correctly with the large timer numbers visible on the audience display.

I have no plans to connect this board to the joysticks and allow full field control. This would not be difficult but would require another small buffering and distribution board to be made. Those with some electronics experience would not find this hard but I don’t want to be liable for any damage you may cause :slight_smile: For the practice matches we will use the timing function but will continue to use the simple competition switch to enable and disable the robots.

Hopefully this helps other teams who may wish to use the tournament manager application as an alternative to using a stopwatch.


1 Like

That looks really cool would I be correct to assume that the four jumpers aligned with the LED’s control the LED’s and could be used to get the activate/disable, auton/driver signals off the board easily?

1 Like

Yes, they are inline with the LEDs. Removing the jumper would disable the LED but allow another board to be piggybacked with this one. 3.3V and GND are also available. The enable/disable and driver/auto signals are inverted I think so an inverting buffer would be needed, probably use some type of open collector buffer. I may also opto isolate the signals if building a field controller as power is also available on the competition connector of the joystick. I’m pretty sure RTS was also toggling with the enable/disable so this could also be used (again indirectly, wrong levels for the joystick input).

Again, if anyone want to extend this to be connected to a joystick, don’t try unless you know what you are doing as you may damage the joystick if done incorrectly.

1 Like

The group that publishes the Tournament Manager software is planning a new release that will allow users to run the timer without having to have the field controller plugged in. There is no date for this release, as it is lower priority than some other functionality that is more central to game play and managing a tournament. This is something to think about before buying hardware to enable the timer.

I’m somewhat familiar with product IDs like MacID, DHCP, JTAG;
In these cases, it is the CHIP mfg that is reponsible encoding the ID into the CHIP they make, not every end-equipment maker that uses the CHIP.
What kind of USB ID does your SiLabs board put out?

Generally with USB the VID and PID are programmed into the EEPROM of whatever bridge or embedded cpu the developer is using. For example, one of my current developments is using an Atmel AT32UC3 microcontroller. The Atmel USB example projects all use the Atmel vendor ID but it is up to me to modify the production code to have my companies vendor ID. Each product we create needs to have it’s own PID, the management of these is up to us and is used to differentiate between the different products. In the case of the silicon labs bridge, they provide a configuration utility to change the VID and PID (and also manufacturer and product strings).

The SiLabs board uses the Silicon Lans VID, this is not so much of a problem as VEX is using the standard SiLabs com port driver. The cortex, however, should have identified itself as something other than a Microchip device as VEX provides a custom driver.

I was just ranting as this caused a bunch of problems when I wrote my own Mac OSX driver for the cortex. It pretends to be a communications class device but does not conform the the CDC spec as far as I can tell. The fact that it was then being reported as a Microchip Tech device was just one more annoyance. Anyway, it’s a done deal at this point, too late to change everything in the field.

1 Like