Saturday, January 3, 2015

V-USB

V-USB is some very interesting software by Objective Development that allows many AVR microcontrollers to emulate a USB 1.1 port with only two data lines and 3 resistors.  V-USB can be licensed freely under the GNU General Public License or alternatively under a commercial license.


There's good documentation on their wiki and they link to a number of projects which demonstrate using the software.  Many of the listed projects are using the ATmega8, as the software has been around a number of years.

The Adafruit Trinket and Pro Trinket Arduino compatible boards use V-USB as firmware to download user programs from the Arduino Integrated Development Environment (IDE).  Adafruit has long-standing code in the Arduino IDE to program AVRs using the USBtiny protocol.

Adafruit has also published open source code which demonstrates use of the Trinket as a USB 1.1 human interface device (HID) including mouse and keyboard emulation.  Soon they will publish the same for Pro Trinket.  This is done, again leveraging V-USB code and Adafruit's USB identifiers, to 'bitbang' USB protocols through the data lines connected to the USB connections on the boards (the Trinkets do not have dedicated USB hardware on-board).


Even though the code has been around for awhile, it is still very pertinent for building inexpensive USB interface devices for today's computers. Much of the promise of computer interaction has yet to be realized but is now coming about through the Maker movement and the Internet of Things (IoT).  A large part of achieving this acceleration is low device cost and mass availability.  The Objective Development license scheme and inexpensive AVR processors meet the growing need.

Until such time as anyone can buy $1 chips with a good size ARM core and built-in peripheral functions, designers will still use smaller components and design creativity.