Having USB connectivity in microcontroller projects isn’t a miracle today as there exists tons of USB to serial converters. But sometimes don’t want to use some expensive converter chip just for some low speed data transfer. There is another solution – to use software based USB port (V-USB). Objective development (obdev) is supporting its own solution which enables using enables to use fully USB 1.1 compliant USB communications on AVR microcontroller with at least 2kB of Flash and 128 bytes RAM.
If you are familiar with USB it supports multiple endpoints: one control endpoint, two interrupt/bulk-in endpoints and up to 7 interrupt/bulk-out endpoints. (Bulk endpoints are forbidden for low speed devices by the USB standard.) It doesn’t occupy UART, timer – only one external edge triggered interrupt. USB implementation occupies up to 1400 bytes of code memory. So you can choose proper MCU and start developing great projects with USB. To make things easier – here you can find several projects that will help to rocket yours even faster. Or see how V-USB is used in metaboard – developing board that uses USBaspLoader to program chip even from Arduino IDE.