USB HID Shield

Hello everyone. I thought I would share the next shield that I am working on after the Mux Shield.

It is a HID shield that will allow the Arduino to show up on a computer as a number of HID devices. HID devices are those devices that you plug into your computer and they magically work without drivers (like a mouse).

The HID Shield shows up on a computer as a composite device with the following connections:

  • Mouse
  • Keyboard
  • Game pad
  • Joystick
  • Vendor Specific (8 channels of input that can be used how you desire)

The Arduino talks to the HID Shield over serial and the shield's on-board microcontroller parses the data into USB HID data for the PC.

The shield is based around an AT90USB microcontroller that can be programmed via its own USB connection, so if you need some other HID device (like a media controller), it is possible to reprogram the HID Descriptors.

Right now components and the pcb are en route for the prototype shown below. I am working on some demos and example code for the unit also. Here is the project website where I will be updating:
http://mayhewlabs.com/hid-shield

I would really appreciate any comments, ideas, or suggestions at this point!

Thanks,
Mark

Neat product.

To clarify, will there be two USB cables: one for the Arduino and one for the HID shield? Will both need to be connected for normal operation? Or can the HID shield power the Arduino once a program is installed?

--
Check out our new shield: http://www.ruggedcircuits.com/html/gadget_shield.html

To clarify, will there be two USB cables: one for the Arduino and one for the HID shield? Will both need to be connected for normal operation? Or can the HID shield power the Arduino once a program is installed?

The HID Shield USB cable will not replace the Arduino's USB for Arduino programming, but the HID Shield will power the Arduino platform. Beyond programming the Arduino, there is no need for two cables.

Looks like a good idea. I imagine it will trigger a lot of new ideas for computer interaction.

I would have avoided the serial port. sharing this with the FTDI and existing hw serial library is a pain in my experience

Better to have an SPI interface between arduino and AT90USB, and preserve the existing serial connection, even if only for loading and debug.

The SPI can be front ended by a library to support your HID functions.

Better to have an SPI interface between arduino and AT90USB, and preserve the existing serial connection, even if only for loading and debug.

Having the SPI is a good idea. I'll have a look at implementing it. I do like the idea of having a library to encapsulate everything. The shield does have 3 different serial options from the arduino so a software serial port can be used (on pin 7 or 12) or the hardware serial port.

The design choice for using serial was that it is very simple for the user and only requires one line since the arduino is the only one talking.

I will be following your progress, it sounds like a very useful addition for a Arduino. I suspect a good path to success with this project is to be able to supply simple to understand, real world example sketches using the interface. Say using a mouse to to control things inside an arduino sketch to control a motor's speed via the mouse scroll wheel, etc.

Just like in school, examples, examples & examples. :wink:

Lefty

Very nice idea. Will someone be able to use arduino to send key strokes and mouse movement to a PC? This could couple with video game controls and virtual reality stuff.

Will someone be able to use arduino to send key strokes and mouse movement to a PC?

Yes, this is the main feature of the HID Shield. The Arduino will be able to send keystrokes, mouse movements, gamepad and joystick controls.

I'll get a demo together showing some ways I am using the shield and how it shows up on the computer.

Will someone be able to use arduino to send key strokes and mouse movement to a PC? This could couple with video game controls and virtual reality stuff.

You can do this already by sending serial commands and using some software to turn it into keypresses of mouse movements.

Windows has serialkeys built in that will allow you to do it and I presume you can get software for other operating systems to allow you to do it.

I have tested it but not used it really so don't ask me about this :stuck_out_tongue:

Looks like a nice prod. I'm thinking possibly it would be good as a breakout board such as the FTDI breakout, could be made much smaller (therefore cheaper as board cost is often a major part of a product such as this) and could be used with a pro mini board or other small board for inside a smaller homemade HID device.

If it just requires serial then I think it would be very nice as a breakout. Any chance of this?

Mowcius

Mowcius

I have googled nearly all day searching for how to make the Arduino appear as a "game controller" so I can use it with MS FS9 and FSUIPC The Official Peter Dowson Page.
.
Can't offer anything as a rookie but I am going to watch and no longer google.

I have googled nearly all day searching for how to make the Arduino appear as q "game controller" so I can use it with MS FS9 and FSUIPC The Official Peter Dowson Page.

If you're in a hurry you could try using a teensy (or teensy++) (Teensy USB Development Board)

Specifically Teensyduino: Using USB Keyboard with Teensy on the Arduino IDE

Wouldn't this work?

Brad.

Currently I made a system of USB HID using a USB to PS/2 converter that costs only 3 bucks off the shelf. This is a link to my latest blog-post about it:

I will be putting up my code and posting a video soon :slight_smile:

Not as nice and advanced as the above shield, but here's a quick cheap way to enable hid on the arduino.