Переходник usb rs232 com для подключения com устройств

Обновлено: 07.07.2024

Для программирования различного промышленного оборудования используется интерфейс COM RS232. Также COM порт нужен и для связи ПК с программаторами.

Контроллер COM порта для системного блока компьютера Контроллер COM порта для системного блока компьютера

На фото выше изображен 4-х портовый контроллер с интерфейсом PCI для установки в персональный компьютер. Это практически полноценный COM port, однако контроллер китайский. К примеру для этой карточки отсутствуют драйверы для систем с разрядностью X64. Так же могут возникнуть проблемы с работой контроллера в системе Windows 7. На XP подобные карты работают хорошо.

На плате помимо контроллеров и LDO стабилизаторов располагаются 4 драйвера GD65232 в планарном корпусе. Данные драйверы не очень надежны и часто "вылетают". Особенно когда оборудование не имеет опторазвязки сигналов.

USB-COM переходник на контроллере CH340 на фото ниже . Реализует двунаправленный COM порт , т.е. он будет работать как на прием так и на передачу.

Кстати, простейший способ проверить USB-COM конвертер - это соединить выводы 2 и 3 , зайти в программу "Гипертерминал" и ввести какой либо символ. Должен отобразиться следом еще один такой же символ.

Переходник реализованный на контроллере CH341

Оба конвертера CH340/341 прекрасно работают на ОС Виндоус 7 , но плохо работают на XP. На диске и в интернете можно найти драйвер и для XP к нему, однако на этой системе переходник на данном контроллере работает нестабильно.

Как правило, через час, или любое другое время переходник "отваливается" и не определяется более в диспетчере устройств. Помогает перезагрузка ПК или его переподключение к ЮСБ.

На фото ниже USB-COM переходник реализованный, пожалуй, на самом распространенном контроллере PL2303.

Определяется переходник в системе как Prolific. Помните контроллер PL2303 в статье про GPS приемный модуль?

Данный переходник конвертер интерфейсов отлично и стабильно работает в ОС семейства Windows XP , а также Linux. Однако он работает некорректно в ОС семейства Windows 7.

На следующем фото изображен RS232 контроллер для ноутбука c ExpressCard интерфейсом.

Надежно работает с ОС семейства Windows 7 x86 и x64 а также Windows XP. Реализует двунаправленную передачу.

Подходит для работы с программаторами и оборудованием, для программирования и настройки путем передачи команд.

FTDI ЮСБ - COM преобразователь интерфейсов.

Это хороший конвертер на хорошем контроллере. Можно зайти на официальный сайт и скачать драйверы на различные ОС. Работает корректно с указанными выше системами, а также Linux.



Дешевые USB-COM: расстановка точек над i. Расчлененка. Осциллограммы. Тестирование в реальных условиях.

Как-то потребовалось максимально бюджетно организовать прием факсов в небольшом офисе. Для этого с антресолей был извлечен факс-модем ZyXEL Omni 56K, а поскольку в современных компьютерах порт RS-232 давно канул в лету, на БиКе было решено приобрести адаптер USB-COM. Изучение предложений привело к решению купить все четыре имеющиеся в продаже на тот момент разновидности, благо итоговая стоимость получалась порядка 11 USD.
Итого по получении из пакета были извлечены (слева направо в порядке возрастания цены):

Вне конкурса выступает порт RS-232, встроенный в материнскую плату GA-8I945GZME



Самый дешевый экземпляр обзора. Выглядит хлипко, плата из корпуса вытаскивается невооруженными руками.


Вместо корпусного чипа просто «капля» на текстолите. Флюс не отмыт.


Идентификатор устройства — VID_1A86&PID_7523, на диске и в интернете наличествуют драйверы под современные 32- и 64-битные операционные системы от Microsoft. После установки драйверов идентифицируется как USB_SERIAL CH340.
Backtrack linux тоже в курсе о его существовании:



Подключенный осциллограф показал, что выходы RTS и DTR выдают в качестве логической единицы +5В, в качестве логического нуля 0В, то есть никакой не RS-232, а самый что ни на есть незамутненный TTL. То же самое относится к выводу TXD.

В режиме простоя.


В режиме передачи данных. Здесь и далее на всех осциллограммах скорость порта 9600 бод, 8 бит посылка, 1 стоп-бит, нет контроля четности. Развертка — 1 мс/деление, чувствительность — 5 вольт/деление (делитель в щупе установлен в положение 1:10).
В порт выводится одно и то же слово. Первому, кто его назовет — плюс в карму.


2. «Прозрачный».
В отличие от предыдущего не разбирается вообще. Но сквозь прозрачную пластмассу видна такая же «капля», да и определяется в системе с тем же VID-PID. Не удивительно, что и логические уровни оказались такие же.


3. «Черный». Опознался при включении как VID_067B&PID_2303.


Самый свежий драйвер, скачанный с сайта Prolific, завелся с полтыка, что позволяет сделать вывод, что чип — либо оригинальный Prolific, либо поздний клон, не опознающийся драйвером как контрафактный.


На обратной стороне нашлась микросхема-преобразователь уровней SP3243ECA.


Уровень в режиме простоя:


В режиме передачи данных:



Тот же VID_067B&PID_2303. Так же заработал с последним драйвером.


Чип преобразователя уровней — MAX211CAI.


Уровень в режиме простоя:


В режиме передачи данных:


Для сравнения эталонная осциллограмма COM-порта материнской платы




Тестирование работоспособности с реальными устройствами.

Устройство №1: спутниковый ресивер Dreambox 500S.


Параметры подключения: 115200 8N1.

Адаптеры на CH340 выдают в консоль мусор:


Адаптеры на PL2303 работают корректно:


Устройство №2: тот самый ZyXEL Omni 56K


Параметры подключения: 57600 8N1.
Все 4 адаптера подключились успешно.


.

Устройство №3: маршрутизатор Cisco 2801.


Параметры подключения: 9600 8N1.
Все 4 адаптера подключились успешно.


Устройство №4: офисная АТС Nortel Meridian 11C.



Параметры подключения: 9600 8N1
Все 4 адаптера подключились успешно.


Устройство №5: попытаемся прочесть EEPROMы 24Cxx и 93Cxx программатором PonyProg.

Как известно, программа PonyProg2000 позволяет читать и писать большое количество последовательных флэшек и микроконтроллеров, используя последовательный порт компьютера в качестве интерфейса. Отличие от предыдущих испытаний в том, что собственно выводы приема и передачи данных нам понадобятся постольку поскольку. Для программирования используется режим Bit-Banging — имитация сигналов интерфейса методом «дрыгания» в нужном порядке выводов GPIO (DTR, DST, CTS, RTS). На многих форумах электронщиков утверждается, что USB-COM преобразователь для этих целей непригоден вообще. Что мы сейчас и проверим.

Сдуваем SPD-чип со старой планки памяти. Это и есть EEPROM 24С02.


Панельки-переходника с SOIC на DIP у меня нету, поэтому подпаиваю по проводу к каждой ноге.


Сигналы порта уходят на ноги чипа через резисторы 4.7к и «подперты» стабилитронами 5.1В согласно схеме.


Общая часть программатора.

Переходник для I2C.


Переходник для Microwire.


Подаем 5В от USB, запускаем программу, выбираем чип, нажимаем кнопку «Прочитать».
Вот оно, содержимое:


Флэшка прочлась, но очень-очень медленно. На несчастные 256 байт понадобилось порядка 30 секунд. Страшно представить, сколько будет читать флэшка размером хотя бы 1 мегабайт.

Тем не менее, констатируем, что прочесть 24Cxx удалось.

Теперь попробуем прочесть EEPROM с интерфейсом Microwire.
Выдергиваем 93C46 из панельки на старой сетевой плате:


Вставляем в макетку и обвязываем резисторами-стабилитронами согласно схеме.


Нажимаем кнопку «Прочитать».

В ответ получаем нули:


Неужели флэшка пустая? Подключаем стенд к порту на материнской плате, читаем.


Нет, не пустая. В чем же дело? Подключаем логический анализатор и смотрим обмен.



Кроме ужасающей разницы в периодах следования импульсов видим, что аппаратный порт дрыгает ногой сброса (канал №3), а USB-COM не хочет. Эта нога управляется сигналом TXD порта. Как его разработчики Ponyprog умудрились сделать постоянно высоким, я не знаю. Возможно, это недокументированная возможность именно «аппаратного» порта. Напишите в комментариях, если кто в курсе.

Констатируем: прочитать 93Cxx не удалось.


Субъективные выводы: с модемом оставлю работать «бесхвостого», ибо если нет разницы, то зачем платить больше. «Прозрачного» и «черного» положу рядом в резерв, так как «капли» по моим наблюдениям долго не живут. В сумку с инструментами брошу «серого» как имеющего максимальные уровни.

Как обычно я предлагаю заняться странным — попробовать подключить несколько старых RS232 устройств, через один USB порт с помощью синей изоленты и смекалки. Статья не будет большой, скорее это описание что где взять и зачем вообще все это делать.




Зачем?

Нужно это бывает когда некий специальный аппаратный комплекс, состоящий из отдельных устройств и который выполняет какую-то единый функционал, вдруг начинают модифицировать. Разумеется что можно попробовать найти комплекс оборудования по новее, но в реальной жизнь на это идут очень редко. Начинают модифицировать то что есть. Иногда вдумчиво, но чаще как получится.

Как правило «мозгами» такого комплекса является компьютер у которого 100500 выходов RS232. Из примеров могу привести место кассира в супермаркете, банкоматы и тому подобное. С первым случаем столкнулся я.


Эти компьютеры не блещут мощностью, но отличаются космической стоимостью. Естественно он перестает отвечать требованиям современных технологий и многим приходит в голову идея заменить их на обычный ПК и получить приличную мощность по адекватной цене, однако быстро выясняется что RS232 на новых ПК вымер как класс. Теперь этот интерфейс стал сугубо специализированным. Соответственно надо или самостоятельно прикручивать кучу RS232 или искать уже готовое спец решение.

Разумеется что можно заменить само оборудование, но если вы посмотрите сколько стоит стационарный лазерный сканер приличной фирмы и помножите эту цену на их количество то передумаете.

Люди не посвященный в тему сразу радостно покупают пучок китайских USBtoRS232 переходников, а дальше все идет очень печально. Лучше этого не делать. Вторым вариантом является покупка специализированной платы расширения с кучей RS232. Этот вариант уже лучше и имеет право на жизнь, но тоже имеет свои недостатки. Например стоимость и проблемы с дровами если используется не Windows или не та версия. Так же не маловажным фактором является доступность в будущем, так как что-то выходит из строя и парк может расширятся в будущем. Потом оказывается что конкретная модель уже не выпускается или не постановляется в конкретную местность и т.д. В общем привязывать себя к конкретному устройству это всегда опасно, особенно если можно этого не делать.


Пробуем что-то сделать

Может показаться странным что примитивные RS232 устройства так сложно и дорого подключить по нормальному если по сути там обычно простые протоколы и примитивный физический уровень. А все потому что обычно подобные аппаратные комплексы используются в коммерческих доходных сферах и покупка оборудования по таким ценам оправдана, а само оборудование уже перешло в разряд специального. Спец оборудование = спец цена вопроса.

Однако все это не мешает попробовать собрать свой бюджетный велосипед. Бонусом получим возможность менять поведение такого своеобразного RS232 мультиплексора и полностью обойдем проблему написания USB драйверов. HID профиль поддерживается почти везде.

Однажды я прочел отличную статью автора RaJa До этого я интересовался USB, но до практики не доходило. В наличии у меня было несколько дешевых отладочных плат, китайских клонов Blue Pill на микроконтроллере Stm32f103c8t6. Сама история и идея создания этой платы очень интересная, стоит поинтересоваться.


Этот микроконтроллер отличается тем что имеет три UART и аппаратную поддержку USB. Это то что может быть нам интересно в разрезе нашей задумки, а вообще микроконтроллер на этой плате, работает на частоте 72Mhz и по характеристикам порвет любое Arduino схожего формфактора. Но самое главное преимущество это повсеместная распространенность этой платы. Я не знаю более простых и дешевых способов пощупать «железный» USB.


Добавив три дешевых преобразователя RS232toUART MAX2323 и немного «рассыпухи» можно собрать своеобразный конвертер интерфейса 3хRS232 <=> USB.

В моем случае нужно было подключить три RS232 устройства к Raspberry Pi 3. Если использовать обычные RS232 <=> USB переходники то в итоге сталкиваешься с тем что в системе куча одинаковых устройств к которым не понятно что подключено и все это дико глючит, а выглядит еще более печально.

Если вы немного капнете в сторону какие микросхемы USB to UART доступны повсеместно, то обнаружите что там полно подделок. Думаю не стоит объяснять как это все потом себя ведет с оригинальными драйверами. И никто не сможет гарантировать вам что даже брендовые переходники вдруг не закупят левую партию микросхем. Удешевление производства оно происходит повсеместно.

В итоге придумалась примерно такая простая схема коммутации ее даже можно изобразить в стиле Arduino:


Я отломал резистор который подтягивает D+ к питанию и сделал эту подтяжку управляемой с помощью транзистора. Она отвечает за опознание устройства на USB шине.

Распиновка разъемов RS232 в программе (Fritzing) где я набрасывал схему странноватая, но думаю никому не составит труда найти ее в интернете, контакты задействованы как обычно 2,3 и 5. А еще удобнее будет использовать платы конвертера UART to RS232 котором уже присутствует разъем RS232.


Low Level

Код для микроконтроллера я писал и отлаживал с помощью IDE EmBitz (если честно то я был удивлен как легко завелась эта IDE, особенно после танцев с бубном вокруг CooCox. ). За основу взял проект из статьи выше. Это первый пример который у меня заработал сразу после заливки.

Я добавил работу с тремя UART и изменил структуру HID репортов так чтобы обмен с ПК шел всегда по 64 байта с контрольной суммой (crc8).

Попытался организовать автопереподключение устройства если соединение по USB не прошло корректно. Не претендую на супер алгоритм, должен признать что не являюсь специалистом по USB. Отдельный транзистор, отображенный на схеме, управляемый отдельным пином B5 подтягивает одну из сигнальных линий USB к питанию что имитирует включение устройства и хост проводит инициализацию устройства. Если попытка не удачная то происходит переподключение.

Было замечено что в Linux (Raspbian) процент не успешных подключений значительно меньше чем в Win 10, возможно этот результат получился из-за моих локальных технических условий.

Общий алгоритм похож на примитивный маршрутизатор, принимая пакет по USB мы смотрим какому UART оно предназначено и пересылаем туда, в обратную сторону аналогично. Есть немного обработки самих пакетов но это относится к конкретному RS232 оборудованию которое я подключал. Это были: экран покупателя Datecs dpd-201, стационарный лазерный сканер штрихкодов Datalogic Magellan 8300 и весы Digi DS890.


На фото выше тестовый образец устройства содержит еще DC-DC шим преобразователь питания на микросхеме MP2307.

Это нужно для того чтобы питать устройство от напряжения 10-24В (входное) и иметь возможность подключить дисплей покупателя который питается от такого же напряжения. После DC-DC шим преобразователя поулчаем 3.3В для всех остальных модулей. Для этого дисплея так же установлен «телефонный» разъем вместо RS232, не хотелось перепаивать стоковый штекер.

High level

Вторая часть софта это примеры и тесты собранные в сумбурный проект на Java написанный IDE IDEA. Предполагается что работа с устройством интегрируется в софт высокого уровня используя различные обертки по работе с USB стеком в зависимости от языка на кортом этот софт пишется. Сейчас сложно найти такой ЯП чтобы под него не существовало таких оберток. Отдельно для староверов отмечу что java и usb совместимы если готовить правельно, это доказано практикой и используется в коммерческом проекте.

В процессе тестирования выяснилось что работа в Linux и Windows с USB HID несколько отличается, работа отлаживалась через две библиотеки usb4java и hid4java. Работа через последнюю используется в Linux (Raspberry Pi 3).

Как и обещал не растягиваю статью и не привожу подробное описание кода, те пару человек кому интересно могут посмотреть проекты и поиграться в живую, а остальным думаю будет полезнее принять к сведению что есть такое решение и прибегнуть к более глубокому изучению в случае необходимости.

Заключение

Представленное устройство это лишь одни из примеров как довольно легко можно приобщится к процессу создания нативных USB устройств и перестать наконец использовать переходники.

Не забываем плюсовать RaJa автора статью в которых на пальцах объясняется как пощупать железный USB и сохранить желание разбираться дальше.


В данной статье приведена подборка схем, позволяющая собрать несложное, но крайне полезное устройство: переходник Com USB.

Последовательный порт (RS-232), или как еще его называют COM-порт, предназначен для обмена информацией между компьютером и периферийными устройствами. Последовательным его назвали потому, что обмен данными по нему происходит бит за битом по одному.

Первоначально COM порт предназначался для соединения модема с компьютером. В дальнейшем к нему стали подключать мышь, сканер прочую периферию. Так же имеется возможность с помощью COM порта организовать прямое соединение двух компьютеров.

На сегодняшний день подавляющее большинство компьютеров не оснащаются RS-232 разъемом, поскольку широкое распространение получил стандарт USB. Но еще существуют многого внешних устройств работающих только с COM портом (различные программаторы, диагностическое оборудование, ресиверы и пр.). Выходом из данной ситуации является использование устройства переходник COM-USB. Ниже приведем несколько вариантов наиболее популярных схем данного переходника.

на микросхеме FT8U232BM

Для согласования TTL уровней RS232 интерфейса с уровнями микросхемы FT8U232BM используются две микросхемы 74НС00. Микросхема памяти 93С46 предназначена для хранения персонального номера (PID), код изготовителя (VID), а так же заводской номер устройства. Данную микросхему можно и не устанавливать. В этом случае к компьютеру возможно будет подключить всего лишь 1 создающее виртуальный COM-порт устройство. Микросхему памяти AT93С46 возможно заменить на AT93C66, AT93C56. Прошивается 93С46 непосредственно на плате при помощи фирменной утилиты производителя FTDI.

Упрощенный вариант на FT8U232BM

Это схема упрощенного USB-COM адаптера, который поддерживает только сигнальные линии RX, TX, RTS, CTS RS232 интерфейса. Для согласования уровней com порта с цифровыми уровнями FT8U232BM в схему добавлена микросхема MAX232.

Схема переходника для COM с USB на PL2303

Для правильной работы необходимо установить драйвер для виртуального COM-порта. Для этого скачиваем и устанавливаем драйвер по нижеприведенной ссылке.

Питание микроконтроллера Attiny2313 осуществляется непосредственно от шины питания USB. Вся схема собрана на односторонней плате (SMD и ТН варианты). Устройство поддерживает только сигналы Rx и Tx.

Прошивку к переходнику, рисунок печатной платы (SMD и TH), а также программу терминал для проверки адаптера можно скачать по ниже приведенной ссылке:

При программировании Attiny2313, фьюзы необходимо выставить следующим образом:

Для работы устройства необходимо установить драйвер виртуального COM порта. Для этого скачиваем его:

Переходник COM-USB на микроконтроллере Atmega8

Еще одна схема COM-USB адаптера теперь уже на микроконтроллере Atmega8 (Atmega48, Atmega88). Схема обеспечивает обработку Rx, Tx, DTR, RTS, CTS сигналов RS232 интерфейса. Драйвер виртуального порта для этой схемы такой же как и для переходника на attiny2313.

Прошивку для atmega8/48/88 и рисунок печатной платы можно скачать по следующей ссылке:

Переходник USB – COM(RS232) своими руками – статья, в которой расскажу, как сделать несложный переходник всего за один вечер. Данный переходник, кстати, совместим с процессорным модулем CPU 166 P. Полезные схемы с применением микроконтроллеров и плис - книга, которая может пригодится в радиолюбительской практике.

Вот что понадобится для переходника:

Конденсатор керамический - 0,1мкФх50В

SMD типоразмер 0805

Конденсатор керамический - 33пФх50В

SMD типоразмер 0805

ADM232 корпус SOIC16

Светодиоды индикаторные диаметром 3мм.

Готовый модуль – переходник USB-COM(уровни ТТЛ) на микросхеме FT232

Резистор 0,125Вт 270 Ом

SMD типоразмер 0805

Резистор 0,125Вт 510 Ом

Резистор 0,125Вт 100 Ом

Штекер DB9 папа

Штекер платный 3 контакта

А также клипсы к светодиодам, небольшой пластиковый корпус, немного проводов и силиконовый клей.

Детали для переходника USB-COM(RS232)

Если для Ваших целей достаточно уровней ТТЛ, то готовой платы на микросхеме FT232 будет достаточно(на рисунке 1 - красная плата), а если необходимо получить уровни близкие к уровням протокола RS232 - читаем дальше!

Первое, что сделал – закрепил светодиоды на лицевой стороне корпуса, используя клипсы.

Крепим светодиоды

Крепим светодиоды

Светодиоды использовал на 3мм.

Далее канцелярским ножиком, осторожно, сделал отверстие для USB разъёма.

Отверстие для USB гнезда

Отверстие для USB гнезда

На плате есть готовые контактные площадки со всеми сигналами( согласно протокола RS232, только уровни ТТЛ), а также выведено питание и контакты для светодиодов RX и TX, используя данную плату, можно сделать полный переходник USB-COM. Полный переходник мне не нужен, ограничился сигналами RX и TX, а также использовал сигналы для подключения светодиодов. Для того чтобы перевести уровни ТТЛ в близкие к уровням протокола RS232, нужно использовать буферную микросхему MAX232, но об этом немного позже.

Переходник USB-COM(уровни ТТЛ)

Плату, о которой говорилось выше, приклеил к основанию корпуса на силиконовый клей.

Закрепил плату с переходником в корпусе

Когда клей высох подпаял светодиоды, чтобы ограничить ток использовал резисторы сопротивлением 270 Ом.

Переходник USB-COM теперь со светодиодами

На одной из старых плат мне попался готовый фрагмент со всей необходимой обвязкой для MAX232. Оставалось только его вырезать и впаять микросхему.

Фрагмент платы со всей обвязкой для MAX232

Фрагмент платы со всей обвязкой для MAX232

Микросхемы MAX232 не нашел под рукой, вместо неё впаял аналог - ADM232.

Микросхема ADM232 - аналог MAX232 на месте

С обеих сторон наклеил изоляционный материал. Использовал силиконовый клей.

Фрагмент платы с ADM232 закрыл изоляционной подложкой

Фрагмент платы с ADM232 закрыл изоляционной подложкой

Клей высох. Следующим делом вклеил получившийся «бутерброд» в корпус.

Вклеил фрагмент платы с ADM232 в корпус

Спаял платы между собой по схеме, а также подпаял и закрепил разъём DB9.

Принципиальная схема переходника USB-COM(RS232)

Всё проверил. Полностью собранный переходник USB-COM(RS232).

Полностью собранный переходник USB-COM(RS232)

Переходник в работе.

Полностью собранный переходник USB-COM(RS232)

А вот процессорный модуль CPU 166P, для которого переходник и собирался.

Процессорный модуль CPU 166P

На следующих фото - похожие переходники USB-COM, с ними связать модуль CPU 166 P не удалось.

Читайте также: