UBW Project Overview
UBW stands for USB Bit Whacker. It is a series of boards and software
that allow people to do real-world interfacing from their PCs. The
boards are very simple, cheap, and generic. The whole design is free to
anybody to use and do anything they want with, including commercially
produce these boards or derivative works. All software tools used are
free, and all code is provided with documetnation so you can take one
of the examples on this website and change it to do whatever you want.
There are three classes of people who may like the UBW design:
Depending upon what you plan to do you will want to read certain web
pages here and not others.
- People who just want to use an existing board and firmware to get
some real work done (i.e. parallel port replacement, education, etc.)
- People who want to use an existing board but write their own
- People who want to build a UBW from scratch and the use existing
firmware or write their own
Example Projects using UBW:
Has anyone done this before?
Sure. Sort of.
- The C.R.E.A.T.E.
USB Interface is probably the closest that I know about. Note the
similarity in schematic! I took much of my inspiration from their
design. The big difference? Mainly that their software shows up as a
HID (Human Interface Device - like a keyboard, mouse, joystick) device
on your computer rather than a virtual serial port. This limits their
bandwidth to the PC, but means there are never any speical drivers or
installation headaches. Also, I don't believe they use a USB
bootloader, and they only have a 44 pin PIC part, not the 28 pin
version we have. Thus their design is a bit more expensive to produce.
- Very similar in nature is the Arduino
board which is a totally slick product. Much larger following
than CREATE or UBW espically in Europe. Instead of using a USB capable
processor, they tie a USB to serial converter chip to the USART on an
Atmel processor. How their system works is by having a custom PC
application that is an editor for code, a compiler, and a downloader
all in one. When you hit 'download' it compiles your code and the
downloads it to the Atmel's flash. So the Arduino is set up out of the
box to run stand-alone, unlike the UBW where you have to write your own
firmware version if you want the UBW to do something spcial without a
PC. (Not hard, but not as easy as with Arduino) The language they
impliment is called Processing/Wiring which is pretty neat, but it's
not C or BASIC, so you need to learn how to use their libaries. The
always awesome SparkFun carries
both the Arduino and its larger brother the Wiring board.
There will eventually be at least four boards, one for each
that the Microchip USB PICs come in. Each board has different uses, but
the same basic software can run on all four boards.
- 28-pin DIP Board : Uses a PIC18F2455 or PIC18F2550 processor. 19
free I/O pins.
- 28-pin SOIC Board : Uses a PIC18F2455 or PIC18F2550 processor. 19
free I/O pins.
- 40-pin PDIP Board : Uses a PIC18F4455 or PIC18F4550 processor.
- 44-pin TQFP Board : Uses a PIC18F4455 or PIC18F4550 processor.
- 44-pin QFN Board : Uses a PIC18F4455 or PIC18F4550
The boards are designed to be used with a slightly modified
version of Microchip's USB bootloader so that you don't need any extra
hardware to re-program the boards with new firmware, just a PC and a
USB port. The boards can be used without the bootloader if you want, as
the ICSP pins are brought out to a header and thus the boards can be
programmed with any PIC programmer capible of programming these 18F
parts. However, all software examples on this website are designed to
work with the bootloader.
There are several versions of 'application' firmware that have already
been developed, and more are on the way. I have labeled them with
single letters. The firmware applications and bootloader code is all
developed in Microchip's MPLAB IDE, using their Student Edition of
their C18 compiler. All firmware versions are based off of Microchip's sample
USB code, without which this project never would have happend.
Thank you Microchip!
Each of the different firmware versions (or builds) has some different
purpose. This web site provides pre-built versions of each firmware
build, so if all you want is the basic functionality of the build, all
you have to do is use the build-in USB bootloader and download the
firmware you want to use and run with it! If, however, you want to do
something different, you can use any of the existing firmware builds
here and roll your own to do whatever you want.
- USB Bootloader (firmware B)
: A slightly modifed version of
Microchip's USB bootloader. Use it to download other firmware to your
- Simple CDC application (firmware
C) : UBW appears as a virtual
COM port. Each byte you write to that COM port appears on port B of the
- Advanced CDC application (firmware D) : UBW appears
COM port. Extended commands allow reading/writing each I/O pin, A/D
- Custom Stepper Controller (firmware S) : UBW appears as virtual
COM port. Command packets cause UBW to generate step and direction
pulses on port B for four stepper motors.
Questions? E-mail me at