What is a HID? HID stands for Human Interface Device. This is a term used to describe certain types of PC peripheral, usually connected via USB. Windows and Mac OS support a number of "native" HID devices using in-built drivers.
The U-HID board appears as the following HID devices on the PC: Keyboard Gamepad (including analog and digital controls) Mouse LED outputs
The way in which the board emulates natively-supported devices means it requires no special drivers or host software, with the exception of LED output control.
The board has 50 connections which can be configured to any of these HID device types providing a truly universal interface. For example, you can connect pushbuttons to generate keyboard keystrokes, trackballs to act as a mouse, pedals to act as analog game controller joysticks, or hundreds of other device types.
The PC will see all the devices as something it recognises, so all standard applications will work.
Harness Options: Modular 8-Way Harness This consists of 9 wires, (8 inputs plus ground) and plugs onto any of the sections of the U-HID connector. It is keyed to avoid incorrect connection. The harness is 900mm long (39 in) and has connectors at both ends. It can be cut in half to give two open-ended wiring harnesses, then the appropriate connector fitted for the switch or other device.
U-HID FEATURES: USB 2.0 interface 50 connections arranged in an open pin-header format allowing multiple varieties of standard connector to be used.
Connections can be assigned as: Keyboard key Gamepad Button Gamepad analog axis with or without auto-calibration and center dead-zone. Mouse button (including double-click) Quadrature Mouse Pair. X or Y axis. Normal or reverse direction. Quadrature left/right button presses. PC-controlled LED output using special software PC Num/Scroll/Caps lock LEDs U-HID locally-controlled LED output based on the state of any switch. 5 Volt output (30ma max) Ground
No special drivers or application changes needed except for PC-controlled LEDs which has an API with code examples. Simple open pin-header connectors allow use of separate or composite modular wiring harnesses. U-Config configuration utility allows the connections to be configured for each device type, and keycodes and other attributes set. Switches handled by super-fast logic using an individual de-bounce state counter for each input giving ultimate performance for gaming applications. No key ghosting or blocking ever. Advanced keycode/button programming with in-built shift feature. Includes macro capability 12-bit analog axis support Configuration utiity interacts real-time with the board and all settings stored instantly in Flash ROM on the board. Single Mini-USB connector for PC (or MAC) connection. No separate power needed 50 Truly independent inputs allow all switches to be commoned to ground. No matrix or diodes Modular 8-way + ground harnesses available. Extended switch harnesses available. ESD protected inputs. Vital for high-footfall public applications. All settings stored in Flash ROM and retained after power-off. Configuration can be changed on-the-fly using a command-line. The board can assume a completely different layout instantly. Simple-to-use PC Configuration application. Up to 8 boards can be connected. All are configured using the same U-Config utility.
Advanced Features: Key and Button functions can have one primary and one secondary code assignment. Secondary assignments are invoked by first activating a “U-HID Shift” connection. Any connection can be assigned as a shift. Unique separately-programmable “button down” and “button up” events allow use of all types of normally-closed, normally-open, or active high/low controls. “Button down” and “button up” can be separately assigned as primary or secondary codes. Controls can be assigned as “normal” or “pulse”. Toggle (push on-push off) and flip-flop modes available. Programmable analog offset and scale factor for all analog axes. X and Y axes can be configured with adjustable center dead-zone and auto-calibration. Extended macro capability. User-upgradeable firmware for future enhancements and customizations.
Examples of control types which can be connected: Pushbuttons Switch-type joysticks Toggle switches Toggle switches with integral LED (does not require a second connection for the LED) Momentary pushbuttons with integral LED (LED can be controlled without any host application, or can be host-controlled) LEDs associated with a switch. (LED can be controlled without any host application) LED indicators driven by a PC application. Other devices can be controlled either directly or via an external high-current driver Analog joysticks Incremental Rotary encoders (Spinners). Low-resolution rotary encoders (360 degree volume control type) 12-way or N-way rotary switches used as encoders (requires simple diode circuit) Trackballs Pots Optical steering wheels Pot-type steering wheels Pot-type throttle pedals Analog Voltage sources (0-5 volts). TTL logic signals.
Control counts which can be configured: Total 50 connection pins. Max 8 analog axes on 50 possible pins (Windows limitation) Max 32 Gamepad buttons on 50 possible pins (Windows limitation) Max 8 Quadrature mouse devices on 16 possible pins out of the 50. Max 3 Quadrature mouse axes (X, Y and Z, Windows limitation) Max 50 keyboard keys on 50 possible pins. Max 16 LEDs in any combination of PC or U-HID controlled. (USB 500 mA current limitation). Max 50 low-current output drivers.
Game pad/Mouse/Keyboard Buttons Any pin can be defined as a switch.
You can define a switch as: * Mouse button (including double-click) * Game pad button * Keyboard key.
Each switch input has a primary assignment and a secondary assignment (optional).
Both the primary and secondary assignments can be used in key action settings and the secondary assignment is also activated in place of primary when a "U-HID Shift" key is held down.
You can assign a different action for the event when the switch is closed (i.e. grounded) and for when the switch is opened. The two possible key codes (or buttons) coupled with the way in which you define closed/open events gives a mass of flexibility in the types of control you can connect without using any external circuitry.
The key code which is sent when you activate the switch is defined using the U-Config utility. You can assign any connection to send any key press. Switches can also be assigned as game controller buttons, which are numbered 0-32 (32 is a Windows limitation). Mouse button selections available are left, right, middle or left double-click.
Example 1 Simple keyboard-type button (Normally Open):For this you would set the “down” action to be the required key code and “up” action to be “Clear”.
Example 2 Simple keyboard-type button (Normally Closed):Set “down” action to be “clear” and Up action to be the required key code.
Example 3 Toggle switch with integral LED: This type of switch sends a 5 volt signal when closed, and ground when open. Let’s say you want to turn on a control when you switch “on” the toggle but you don’t want to generate masses of key-presses which the toggle is still down. You can send one key-press only, by configuring:“down” action to be “clear” and “up” action to be “pulse” and the required key code. Setting it up this way means the internal LED in the switch will function properly with no external circuitry to control it.
Connecting Switches Usually you would use normally-open switches or push-buttons (although the U-HID does support normally-closed) One connection of each switch would be connected to the required U-HID input pin. The other to any ground pin. So, if many switches are used on a control panel, all of them have one connection which is "daisy-chained" to each other and routed back to a ground pin. We supply a pre-made "daisy-chain" wiring harness which can be used for this purpose.
ESD Protection Connectors J1, J2 and J3 have ESD static discharge protection. These 24 pins should be used in preference over the others when connecting switches. ESD can be a problem in warm dry environments and can cause false triggering or even damage.
Special-Purpose Switches Some switches have special connectivity or an in-built LED which mean you need to connect in a different way to the U-HID. The principle is always that the U-HID pin is assumed to be sitting at a voltage of 5 volts when not activated and zero when activated (but note that you can reverse the behaviour the PC sees using the config utility). If the circuit is "open" (ie a normally-closed switch is not activated) then it will sit at 5 volts.
Switches which have in-built self-powered LEDs will have a connection which sits either at zero or supply voltage. These switches would require a constant 5 volt supply to one terminal, a ground on another terminal, and the switched voltage appears on a third. The switched voltage is connected to the U-HID input pin. These switches actively tie the pin to 5 volts (supply) or ground. This is fine for the U-HID.
Important! Never connect any device to the U-HID which sends more than 5 volts otherwise damage could occur!
Testing Switches Switches defined as keyboard keys can be tested using Notepad or any program which displays text. Game pad buttons can be tested using Control Panel, Game Controllers. The display is shown below:
Device Type: Analog Input A pin assigned to Analog senses a voltage on the pin and controls a gamepad X, Y, or other axis on the PC. Analog resolution is 12 bit. The voltage can vary between 0 and 5 volts. Usually this voltage will come from a potentiometer (pot) which is part of a steering wheel, handwheel, throttle pedal, or other type of analog control. You can assign any pin to one of 8 possible analog axes. (8 is a Windows limitation). To test, go into “Control Panel”, “Game Controllers”. Then select the board number (if you have more than one board).You will see the X, Y crosshair (axes 1 and 2 on the U-HID board) and also the other 6 axes as red bars.
Offset and Scale In the U-Config program, on the second page of the GUI, you can select an offset. This is a fixed displacement of the control. Usually this is set in the center, giving a conventional joystick type of control. Also, you can set a scale factor, which defines the sensitivity of the control.
Encoder Devices Device Type: Optical or Mechanical Encoders
High-resolution Quadrature devices usually consist of a pair of optical sensors and an encoder wheel.
Quadrature devices can be used in two ways. They can be used to control the mouse pointer in an X, Y or Z direction, or they can be used to repeatedly pulse gamepad buttons. In general, mouse mode is used for high-resolution optical encoders and button mode for low-res mechanical but there may be applications where the opposite mode is useful.
Quadrature devices use two input pins per device, and optical devices will require GND and 5V pins. Mechanical encoders require GND only, and this is the centre pin on 3-pin devices.
Windows allows one instance of each axis when defined as Mouse (ie X, Y, Z) but if you are using multiple U-HID boards, Windows can recognise each board as a different mouse, using Direct Input.
Devices should be capable of operating with a 5 volt supply (not required for mechanical encoders). This can be obtained either by configuring a pin as 5V or using one of the fixed 5V sources on connector J7 (Full U-HID Board Only) They also require ground, which can be connected to a configured pin or one of the ground pins on each modular connector.
Note that only certain pins can be configured for quadrature devices. These can be seen in U-Config by clicking on the "Quadrature" line in the PCB image. Appropriate pins will be highlighted. Two pins are used per device. An X-Y device such as a trackball counts as two devices and therefore uses 4 pins.
Mouse Mode Encoders configured in this more simply move the mouse pointer in the X, Y or Z direction. Note the Z axis in Windows performs differently to X and Y. It accepts a fixed displacement per data packet rather than a variable one. This means the Z axis might not be suitable for many applications as it is very sensitive when using a high-res encoder.
Button Pulse Mode. In this mode, the quadrature device is assigned to a pair of Game Controller buttons. The pairs are buttons 1,2, buttons 3,4 etc... up to 15,16. (Full U-HID Board Only) When the encoder is turned in one direction, the first button will be repeatedly "pressed". When turned in the other direction, the other button of the pair will be repeatedly "pressed". The press time is configurable. This is a global setting on the "Calibration" page of U-Config. The setting here can be set from 2 to 32. The figure is actually the number of USB data packets sent for each press.
Between each press, there must of course be a "release" period and this is the same time as the press.
It might be necessary to experiment with this setting as there is a trade-off. Too fast a setting will cause presses to be missed by the application, and too slow will cause slow response of the control. When this mode is used for high-resolution encoders, the buttons will be pulsed at the maximum configured speed which is much higher than the real pulse-rate from the encoder.
U-HID Controlled LED U-HID Controlled LEDs are LEDs which are turned on or off by switches which are connected to other pins on the board.
Example 1 Assume you have a push-button which has an internal LED. It is a momentary button so cannot be used to directly switch the LED since it would only light while the button is pressed. You have this button configured as a toggle (push on, push off). You can assign the LED to this button, and it will light when the button is pressed and go dark when it is pushed again, in sync with the buttons action in the application.
Example 2 Assume you have a toggle switch which grounds one connection when closed. This could not be used on its own to also control a LED.You could link a U-HID controlled LED to this connection and it would light while the switch s closed.
Up to 16 connections can be assigned as U-HID-controlled LEDs. When you assign these LEDs, you link it to any other connection. The other connection must be defined as a switch. This other connection will control the state of the LED. Its important to realize that the LED state is not actually controlled by the other switch connection pin directly, but by the boards stored internal state of the control connected to that pin. This means the control of the LED is affected by how the switch is defined as well as its actual open/closed state.
The limit of 16 LEDs applies to the board to stay within USB specifications on current draw (500mA). The U-Config utility will allow you to configure more than this but a LED count on the status line will show red as a warning. You can configure more than 16 if you are using the outputs as low-current drivers, eg for TTL signals.
The U-HID will drive standard LEDs only.
Pins on J1, J2 and J3 have integral resistors so you can directly connect standard LEDs to these. Other pins will need a series 220R resistor, or use 5 volt LEDs with an in-built resistor. (Full U-HID Board Only)
LEDs are connected between the U-HID pin and ground.
The pre-made modular harness can be used to connect LEDs.
PC Controlled LED Up to 16 connections can be defined as PC-Controlled LEDs. You can also use these for other output functions.
These LEDs are controlled by a software application on the PC. There are sample APIs for developing your own applications to add LED control.
You can also assign LEDs to behave as keyboard CAPS, NUM and SCROLL lock LEDs. They will be turned off or on in the same way as your regular keyboard LEDs.
Maximum current draw is 30mA per pin.
The limit of 16 LEDs applies to the board to stay within USB specifications on current draw (500mA). The U-Config utility will allow you to configure more than this but a LED count on the status line will show red as a warning. You can configure more than 16 if you are using the outputs as low-current drivers, eg for TTL signals. (Full U-HID Board Only)
The U-HID will drive standard LEDs only.
Pins on J1, J2 and J3 have integral resistors so you can directly connect standard LEDs to these. Other pins will need a series 220R resistor, or use 5 volt LEDs with an in-built resistor.(Full U-HID Board Only)
LEDs are connected between the U-HID pin and ground.
The pre-made modular harness can be used to connect LEDs.
Power And Ground You can assign any connection as power output (+5V) or ground.
You need to be aware of the following limitations: * Power and ground pins can only source/sink 30mA max current per pin. * Total current draw must not exceed 500mA
If you need more current than 30mA then you can use one of the fixed power pins on connector J7. See the U-Config program board image for details of which pins these are. In fact it is good practice to use these pins whenever possible for a 5 volt source as they are powered directly from the USB supply.
Using assigned pins instead offers advantages of modular connectors and is particularly useful for optical devices which always need a supply for the optical switches and dont have a large current requirement. As each modular plug has one fixed ground connection you would rarely need to assign a ground pin.
U-HID Shift Feature The internal shift feature allows you to define a connection (or connections) which when activated, cause all other switch connections to send an alternate command.
This is rather like a keyboard shift key which, when held, causes the keyboard keys to send different characters. When the internal shift connection is activated and held, the Secondary function of all other keys is sent instead of the Primary.
EXAMPLE 1: In a gaming controller you might wish to assign an admin function such as COIN INSERT and you don’t wish to have a dedicated button on the panel for this. You could make PLAYER1 START an internal shift connection. Then assign a secondary COIN INSERT function to the switch which is normally “PLAYER 1 FIRE”. So to insert a coin, hold PLAYER1 START and press PLAYER1 FIRE.
EXAMPLE 2: You have a control panel which is used for two completely different functions and you wish these functions to be selectable using a toggle switch. You could assign a spare connection as an internal shift connection, and then connect a toggle switch to it. Then assign all Primary functions to your first control panel type and all Secondary functions to the second type. Switching the toggle would flip the panel from one mode to the other. (Be aware you can also achieve this by re-programming the board on-the-fly though!).
Defining Internal Shift Connections Normally you would perform this on only one connection, which will act as the shift key.
Most users would only require to define this function once, so to avoid clutter on the display, it is hidden unless the connection is completely un-assigned. This means with the default configuration, which has all connections assigned, you won’t see this option.
To assign a connection as an internal shift:
Click on the connection and select “not used”. A check box will appear with the option “This is an Internal Shift Switch”.
Enable the check box. This will be highlighted in red and will remain visible while this connection is selected.
Checking this box limits what you can do with the other selections for this switch. You are limited to assigning a “Pulse action on Open” , or no action at all. Any other type of assignment is invalid for an internal shift connection.
You cannot assign this connection as an LED, Analog or Quadrature input.The ability to assign a “pulse on open” action means you can also have this connection perform its own function as well as being a shift key.
If the key is pressed and released, it will send its own function as a pulse, provided no other connection has been activated in the meantime. This is how Example 1 works, above. The Player 1 Start function of this key still works even though it’s a shift key as well. You can assign any number of the connections to be internal shift, but they all will enable the same shift functionality in addition to their own individual assigned code (if any).
Self-Test LED The On-board Self-Test LED is connected to J6 pin 5.
In normal operation, the LED will illuminate when: The device is in the process of enumerating with the USB host controller during boot or plugin The device is receiving configuration data from the host A switch connected to this pin is closed.
In addition, you can use this LED for test purposes by defining J6 pin 5 as a LED. NOTE: The LED is connected between the pin and 5V power on the PCB. This means it will behave in an opposite way to other connected LEDs which are connected between the pins and Ground. Connecting analog devices such as pots to this pin wil give strange results but you can use the LED for a basic pot test (brightness will vary).