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.
VEX Competition Field Controller
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 :) 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.