USB 1.1 Low Speed project for Arduino UNO/ATmega328P to learn USB protocol Arduino UNO is 5V, 16 MHz.

USB 1.1 Low Speed spec operate:


at 5V level - so we avoid to maintain voltage level
at 1.5 Mb/s - so we have 16/1.5 ~= 10 instructions per elementary protocol signal


Is it possible to make Arduino as slave USB device from UART lines connected to USB D+/D- interface with careful timing and assembler programming?

I doesn't familiar with ATmega328P pin I/O capabilities, may be them can't operate at 1.5 MHz so project isn't possible?

UPDATE I found V-USB library that:

implementation of a low-speed USB device for Atmel’s AVR® microcontrollers,
making it possible to build USB hardware with almost any AVR® microcontroller,
not requiring any additional chip.


Still dig into docs to realize possibilities.
Not exactly the answer to your question, but have you tried the typical way to emulate slave devices with Arduino UNO?

It uses the 2nd ATMega present onboard (this applies only to UNO, afaik) and lets you use the main ATMega for other tasks, delegating the USB protocol to the smaller ATMega16.

Do you have any specific reason why you would use the serial lines?