Open-USB-IO makes it very easy and very cheap to control hardware from your computer. You can also program the ATMEGA32 microprocessor to do anything you want.  The ATMEGA32 code can use the USB interface to the PC and you can debug the code with a  powerful built-in symbolic debugger.

The Open-USB-IO board will plug into the USB port on a Linux, Mac or Windows computer ( XP, Vista or Windows 7) and provide a variety of digital and analogue inputs and outputs including 7 motor drivers.  No special software drivers are required just a simple command line or GUI program. You can control the hardware from command line, script, or your own programs on the PC.  You can also program in assembler or C the ATMEGA32 microprocessor that is the heart of the board.

New Features!

  • Open-USB-IO now has a USB bootloader so the ATMEGA32 can be programmed  using just the USB cable.
  • The Co-USB concept allows you to add the USB interface code to your own ATMEGA32 code so your application can easily  communicate with a PC.  Co-USB includes a powerful symbolic debugger that you can use to debug your own code,  and again it only needs the USB cable.
  • We have the first Mac version of the interface program.

Free! The project is Open Source and GPL for both the circuit diagram and the software,  that means its free for you to download and use.

Where can you buy it? See to purchase the Open-USB-IO board plus an excellent live-DVD of development tools, example projects, and other resources.

Download:  see the Open-USB-IO resources page for all the circuits, software, and a complete reference manual.

Features: the Open-USB-IO board  provides-

  • 8 input switches ( these ports can alternatively be used as general purpose digital IO).

  • 8 LEDs ( can also be used as general purpose digital IO).

  • 7 open collectors drivers rated at 500ma and 50v to drive coils, DC motors or stepper motors. There is a separate power input to supply these devices (low power motors may use the USB +5v).

  • RS-232 interface.

  • Many uncommitted digital IO or analogue input lines.

  • One LDR for sensing light.

  • One pot for generating a variable analogue input.

  • JTAG ICE interface (not so necessary if you use Co-USB to make your projects).

  • Programming interface matching an stk-200.

  • ATMEGA32 processor which can be programmed with the users own code, standard interface code, or a combination of the two.

  • A bootloader allows the ATMEGA32 to be programmed via the USB cable.

  • +5 volts power from USB, to around 400ma on desktops and less on some laptops.

  • Most IO pins are available on two 2×40 pin IDC plugs. The old flat IDC cables from computer IDE/ATA drives can be use to connect to other devices or circuits.

  • Prototype area to place additional circuitry.

Programming: the Open USB-IO board can be controlled  in many ways-

  • A GUI that runs on Linux, Mac, or Windows*.

  • A command line program for Windows, Linux, or Mac.

  • Script file programming on the PC, for example Linux BASH or Windows BAT

  • C++ code that runs on the Linux or Windows computer.

  • C or assembler code that runs on the ATMEGA32 microprocessor.

( * = still in development.)

What can you use it for? The ATMEGA32 is a very powerful but inexpensive microprocessor.  The web is full both simple and amazing projects which give you the circuits and software.  For example, want to drive a VGA display from the ATMEGA 32 with 6 resistors? Try here: , how about an iPod interface, try  Perhaps you are just beginning,  how about just flashing an LED,  see here.  Some of the best projects and information can be found at,  here you can find tools,  data sheets,  getting started information, and projects ranging from the simple to the extreme.
Low speed activities below 200 Hz can be driven from the PC via command line, script, or C++ code.  Higher speed activities need to be programmed directly on the ATMEGA32 microprocessor.

So Why Did I Created Open-USB-IO? In the days of DOS and Windows 98 you could directly access IO ports from program code.  This led to a  whole range of interesting projects,  for example I created a 1 MHz CRO and  logic analyzer that read data from the parallel port.  I also controlled a whole lot of relays from a C program, again via the parallel port.  The ability to access IO ports and interact with hardware was good for hobbyists and industry in general,  but it also allowed my students at RMIT University to become competent in hardware design, software design, and  the interaction between hardware and software.  They created some awesome projects, and had a lot of fun!

Now along comes Windows XP that blocks IO access (there is a hack which sometimes works),  then Vista and Windows 7 (which blocks IO access properly).  On the hardware side the parallel and serial ports are legacy ports and not available on most laptops.  USB is now the universal IO method and we have to use it.

We tried several commercial USB-IO boards but they did not do what we wanted or were ridiculously priced,  and so we created Open-USB-IO.  The board is probably the cheapest you will find given the mix of features such as driving motors and being able to program the microprocessor with your own code.

%d bloggers like this: