Why do I need a "USB to Serial Adapter" or USB to Serial Converter"

Hi,
I see this a lot, that I need a "USB to Serial Adapter / Converter" some software I am using says, in its documentation,
The serial object works only with ports and devices supported by the standard serial driver. It does not work with USB ports and devices, unless a USB to Serial adapter is connected.

My understanding is that USB is serial communication, so what (in layman's terms please) do these adapters use? Am I correct that the Arduino IDE has one built in, or at least installs one? or is there one on the Arduino board? Either way, for serial communication with my computer, either via a USB cable or a Bluetooth module, there does not seem to be problems. Thanks.

Which Arduino do you have? The ones with USB ports built in, already have a USb to serial converter (or equiv) built in. Others, for example the Pro Micro, do not and you have to supply one since PC's no longer have serial ports.

I think what your documentation is saying is straight TTL serial is supported, such as you see on D0/D1.
A Serial/USB adapter (aka USB/Serial adapter) converts that relatively slow speed interface into USB1 and USB2 type data, which bursts data back and forth to the PC at much higher speeds, like 12MHz or 400MHz, whatever speed USB2.0 is.
The FT232R chip is used to provide that on the Nano and Duemilanove. A Atmega8U2 was programmed to do that on early Unos, now a Atmega16U2 (more memory) provides that on Unos and Megas. The U indicates the chip has built in USB interface support. The Atmega32U4 is an even larger version of the 8U2 and used as the processor for the Leonardo and comparable boards. More details for each are available on the Products page.

I see, so even though USB stand for Universal Serial bus, it is a different type of serial communication that happens with the Arduino, one that needs to be sped up to be understood by the computer?

Any type of serial communication relies on agreed standards.

The original serial ports on PCs and dumb terminals was designed to work at relatively slow speeds (115200 baud (roughly bits per second) is fairly high for that system). There is also an agreed standard for how the bits are interpreted - how many data bits, how many stop bits etc.

The USB system was designed for altogether higher speeds and has its own set of standards. It is a very complex system compared to the original serial port system.

The USB to Serial or USB to TTL converter is designed to bridge these technologies.

There can be some confusion between RS232 and TTL. The original serial ports used RS232 which involves signal voltages of 12v (I think) whereas TTL is otherwise the same but uses 5 volt signals. You need TTL for Arduinos. Unfortunately RS232 and TTL are often incorrectly used interchangeably, so be careful.

...R

Thank you all, much clearer now.
One thing I don't understand, after just installing Arduino on my Windows computer, I noticed that I also had to install a serial driver, was this for the USB-Serial converter on my Arduino board?

I think I also had to do this, use an FTDI driver on my Mac? Is this so my computer can talk to the chip on the Arduino that then translates the USB messaging?

Am I correct that Arduino is transitioning (with some boards) to having native USB capabilities on board? So that they could communicate without any driver?

1 Like

RS232 signals are +/- 3V to +/-15V. Chips like MAX232 convert that to 0 to 5V.

USB levels are very low - down in the 3V range, with data going one way only at one time, similar to half-duplex RS485, but at much higher speeds.
This article is not bad.
http://en.wikipedia.org/wiki/USB_2.0#2.0

Yes, driver is for the USB/Serial interface. Will always be needed; may become part of the OS and hidden from users, but will still be in place.