First let's look at the USB-to-serial converter setup. This configuration is historically older, but is still generally relevant. While more and more processors are being provided with a USB interface peripheral (native USB), it's still not as universal as I2C, SPI, and good old fashioned serial UART. So plenty of modern Arduino boards are still using this configuration.

The main processor is where the Arduino sketch is loaded and runs. It only has a serial interface for uploading new sketch code. This serial interface can not directly connect to a host's USB port. Therefore, a separate specialized chip, called a USB-to-serial converter (or adapter), is used to "bridge" the host PC's USB to the processor's serial interface.

USB-to-Serial adapter chips are also called CP2102, CP2104, FT232, CH340, CH9102F, or other part numbers. They all perform the same task.

Also note the reset behavior. Pressing the reset button on the Arduino board resets the main processor. However, the USB-to-serial converter is not reset and remains powered. Therefore, from the point of view of the host PC, it never sees a USB disconnect when the processor resets. It just sees the USB-to-serial converter sitting there happily providing a COM port.

Example Boards

Here are some example boards that have processors that lack any USB connectivity and therefore use a USB-to-serial adapter. Both of the main processor and the USB-to-serial adapter are shown.

On the UNO R3, the USB-to-serial adapter is actually another microprocessor!

On the Feather ESP32 V2, the USB-to-serial adapter is a dedicated special purpose chip.

Other common boards that have a USB-Serial chip are:

  • Any ESP8266 board
  • Any ESP32 board (not ESP32-Sx or ESP32-Cx)
  • Any ATmega328 board
  • Any ATmega2560 board

Drawbacks

Since the USB-to-serial adapter provides a constant and reliable COM port connection to the host PC, these style Arduino boards are generally less prone to COM port weirdness when trying to upload an Arduino sketch. So why not use this approach for all boards?

The main drawback is that the USB-to-serial converter does one thing and one thing only - it acts as a COM port. From the point of view of the host PC, it'll never be anything but a COM port. That's all it can do.

That's great when it comes to uploading sketches, since that's done via the COM port. But what if you wanted to emulate a USB keyboard, mouse, mass storage (MSD), or some other USB device? You can't. At least not via this "USB connection".

This is why boards that use USB-to-serial converters will NOT show a CIRCUITPY folder. They can also never be used as HID keyboard/mouse devices

Another drawback is the potential need to install drivers. There are numerous companies that make dedicated USB-to-serial adapter chips. For these to work properly, and show up as a COM port, company provided and device specific drivers may need to be installed. That typically requires going to the company's website and hunting down and installing these drivers for a given operating system.

There's also an associated cost and board size increase required for the extra circuitry

This guide was first published on Feb 07, 2023. It was last updated on Mar 08, 2024.

This page (USB-to-Serial Converter Boards) was last updated on Mar 08, 2024.

Text editor powered by tinymce.