Skip to content

SukkoPera/OpenUsbSerialAdapter

Repository files navigation

OpenUsbSerialAdapter

OpenUsbSerialAdapter is an Open Hardware USB to TTL-level Serial converter.

Board

Summary

An infinite number of different models of USB to TTL-level serial converters can be found on every online shop, many of which even cost less than 1€ shipped from China, so why make one more? There are a few reasons:

  • Many of them are missing the DTR and RTS signals (or at least do not break them out so that they can be used). At least one of these signals is necessary for programming Arduino boards through the serial port and, since this makes up for 90% of my use of USB to serial converters, I find this pretty annoying.
  • Most of these cheap converters claim to be both 5V and 3.3V serial level compatible, but all most of them actually do is just use 3.3V signalling, which usually also works fine with boards that work at 5V, but still it is a bit of a hack.
  • None of these converters has a decent 3.3V regulator onboard, usually being able to provide only a few tens of milliamperes on the 3.3V power pin (and not even all of them have one). This is too little for some uses, like powering an ESP8266 module for instance, and is the source of maaany of the problems users report with that chip.
  • Finding Windows and OSX drivers for some of these modules is a nightmare.
  • Not to mention the infamous FTDI-gate...

So, when I came across a USB to Serial chip (Microchip MCP2200) that had RTS/CTS signals and claimed not to need any particular drivers, I decided to have a go at designing the one converter to rule them all. I tried to consider every possible feature during the design, but in any case I am releasing this as Open Hardware, so everybody can customize it so that it fully suits their needs.

Features

  • Real support for both 3.3V and 5V signalling and power output levels
  • RX/TX leds
  • Protection resistors for RX/TX inversion
  • RX/TX pull-up resistors (optional)
  • Can provide up to 1A current on the 3.3V power output pin (This will actually be less as it will be limited by USB)
  • Hardware Flow Control pins (RTS/CTS, RTS can be used for the initial reset for Arduino programming)
  • Speed up to 1000 kBaud/s
  • Uses USB HID capabilities, which means it needs no drivers on Windows/OSX (This has to confirmed, as I only run Linux)
  • Configurable product/manufacturer strings and PID/VID
  • Ability to invert the polarity of the RX/TX signals
  • Compact form factor (about the size of a standard thumb drive)
  • Cheap (total BOM cost is less than 3€) and easy to DIY-build (about 20 common components, SMD soldering ability is required, but all components are 0805 or larger)

Assembly and Configuration

Solder all components to the board in the order you prefer. You have some options:

  • R3 and R4 are the RX/TX inversion protection resistors. I used 100 ohm for these, which works fine in my tests, but this value was improvised rather than calculated. You might want to increase them up to 1k for additional safety. In rare cases, you might want to replace them with 0 ohm/solder blobs, but this might be harmful for the main chip or for the device it is connected to. Do this at your risk.
  • R5 and R6 are the RX/TX pull-up resistors. Usually these are not necessary, so you might want to skip them. Note that R7 is mandatory instead.

The adapter is somewhat configurable. On Windows you can use the official Microchip Configuration Utility. On Linux (and OSX?) you can use a quick replacement I put together, or this other one. The latter is also capable of changing the USB product/manufacturer strings and PID/VID.

Note that the factory settings of the chip will NOT make the RX/TX leds blink on traffic, you will have to enable that through the configuration utility. Another apparent oddity is that you need to turn Hardware Flow Control OFF in order to use the adapter for Arduino programming.

Signal polarity inversion can also be enabled through the Configuration Utility.

Usage

Just plug the converter into a free USB port of your computer. On Linux a /dev/ttyACMx device should pop up within seconds. On other Operating Systems... You are on your own :). In theory, it should not need any dedicated drivers, but I saw there are some on the MCP2200 product page, so you can get them from there, in case.

Releases

If you want to get this board produced, you are recommended to get the latest release rather than the current git version, as the latter might be under development and is not guaranteed to be working.

Every release is accompanied by its Bill Of Materials (BOM) file and any relevant notes about it, which you are recommended to read carefully.

License

The OpenUsbSerialAdapter documentation, including the design itself, is copyright © SukkoPera 2020.

OpenUsbSerialAdapter is Open Hardware licensed under the CERN OHL v. 1.2.

You may redistribute and modify this documentation under the terms of the CERN OHL v.1.2. This documentation is distributed as is and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES whatsoever with respect to its functionality, operability or use, including, without limitation, any implied warranties OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE or infringement. We expressly disclaim any liability whatsoever for any direct, indirect, consequential, incidental or special damages, including, without limitation, lost revenues, lost profits, losses resulting from business interruption or loss of data, regardless of the form of action or legal theory under which the liability may be asserted, even if advised of the possibility or likelihood of such damages.

A copy of the full license is included in file LICENSE.pdf, please refer to it for applicable conditions. In order to properly deal with its terms, please see file LICENSE_HOWTO.pdf.

The contact points for information about manufactured Products (see section 4.2) are listed in file PRODUCT.md.

Any modifications made by Licensees (see section 3.4.b) shall be recorded in file CHANGES.md.

The Documentation Location of the original project is https://github.com/SukkoPera/OpenUsbSerialAdapter/.

Support the Project

If you want to support the project, you can order the boards from PCBWay through this link:

PCB from PCBWay

You get my gratitude and cheap, good quality PCBs, professionally-made. I get some credit that will help with this and other projects. You won't even have to worry about the various PCB options, it's all pre-configured for you!

If you still have to register to that site, you can use this link to get some bonus initial credit (and yield me some more).

You can also buy me a coffee if you want:

Buy Me a Coffee at ko-fi.com