В данной статье речь пойдет о самодельных USB to UART и RS232 to UART переходниках. Тестировать их будем на плате Z-duino PRO, выигранном мной в конкурсе в виде набора.
Итак, начнем. Выигранный мной набор для сборки включает в себя три пакетика.
В один упакованы разъёмы, панелька для контроллера и сам контроллер — ATmega328P, в него прошит загрузчик и скетч “Blink”. Другой пакетик наполнен “рассыпухой”, среди которой есть “бомбовая” кнопочка с красным толкателем — для сброса. В третьем пакетике: качественная плата и один из светодиодов. В наборе их два: зелёный – по питанию, и жёлтый – на pin13. Внешне одинаковые, и, чтоб их не перепутать, жёлтый упакован вместе с платой, но ничего не мешает запаять их наоборот.
Сборка прошла в два этапа. Сначала запаиваю все SMD компоненты
Затем все выводные
Мне захотелось чтобы джампер выбора питания был установлен перпендикулярно плате, поэтому я выгнул выводы плоскогубцами, припаял и обкусил лишнее.
После сборки платы подаю питание: зелёный светодиод светится, жёлтый мигает. Хорошо, теперь нужен переходник для заливки скетчей. Если есть аппаратный COM порт на материнской плате, то можно взять преобразователь уровней на предназначенной для этих целей MAX232 или собрать на транзисторах (как в Arduino Severino).
Преобразователь на транзисторах повторяет схему из Arduino Severino, а для переходника на микросхеме я выбрал MAX232CPE: вместо электролитов 10uF устанавливаются керамические 100n. У микросхемы, перед монтажом, нужно отломать выводы 7 и 10, или отогнуть их в сторону.
Для использования переходника на транзисторах или на MAXе, необходимо любым удобным способом подать на плату Z-duino 5V. Я взял прямо с USB и воткнул в разъём ICSP. Джампер выбора питания нужно установить в положение 5V.
Внимание! Если Вы что-нибудь спалите или нанесёте любой вред реализуя идеи изложенные в этой статье, то ответственность за негативные последствия несёте Вы, а не автор этих идей (то есть я). Например, в примере выше, 5V с USB на контроллер поступает напрямую, минуя предохранитель и защитный диод. Осознавайте что Вы делаете, соблюдайте полярность подключения и не превышайте максимальный ток, который может выдать большинство USB разъемов компьютера, а именно 500мА.
Если нет COM порта, можно применить переходник USB-COM. Я уже писал о переходнике на mega8 распаяном на самодельной Arduino, здесь будет фото и схема переходника на контроллере в DIP и в TQFP корпусе.
К разъёму подведены все сигналы которые обеспечивает конвертер. На схеме и чертежах плат есть предохранители типоразмера 1206 в цепи 5V от USB. У меня таких нет, вообще нет SMD предохранителей, поэтому я установил перемычки.
На двух платах перепутаны местами RX и TX, пришлось резать дорожки, паять перемычки, в чертежах плат ошибки исправлены.
О реализации варианта этого переходника на ATtiny2313 есть статья на getchip.net.
https://disqus.com/home/discussion/zelectro/z_duino_pro_diy/
В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.
zelectro.cc
Обновлено 19.09.2015. Всем привет. В прошлой статье мы с Вами рассмотрели устойство для восстановления микроконтроллеров Atmega fusebit doctor (Шаг №7). Сегодня мы рассмотрим еще одно не менее важное а даже более полезное устройство UART—USB преобразователь на микроконтроллере ATtiny2313. Если Вы увлекаетесь электроникой и прикладным программированием, то данный девайс станет вашим верным инструментом для наладки проектируемого устройства и передачи данных на компьютер. Что такое интерфейс UART Вы можете ознакомится в статье № 40. А вот сам преобразователь нам необходим что бы мы смогли связать ПК и наше устройство, для наладки и передачи данных. Такая необходимость всегда возникает перед разработчиком, так что будьте готовы обзавестись ним. Конечно очень просто передать на COM порт (RS232) или LPT, но не у всех есть данный порт например ноутбуки.
Слева UART — USB преобразователь. Как видим из схемы на ней линии передачи/приема данных TXD/RXD, резисторы R4 — ограничитель тока, R5 — защита TXD от короткого на землю, стабилитроны на схеме для защиты сигнальных линий, резистор R1 – питание на линии, С3 – сглаживает помехи, R2 R3 — токоограничители. Сам микроконтроллер ATtiny2313 в роли преобразователя. Скорость передачи конфигурируется автоматически и равняется от 600 — 38400bps, стандарт протокола 8N1. Сборка не представляет сложности все исходники, шаблоны платы, все в свободном доступе на данном ресурсе. Ниже представлены фото моей сборки этого девайса:
На схеме присутствует интерфейс для внутрисхемного программирования (5-ть штырьков внизу и 1 возле микроконтроллера).
Добавлю инфомацию, от себя для проверки на работоспособность некоторых деталей:
— стабилитрон, для его проверки на целостность анод на минус, — плюс через 10кОм на катод, подаем 5 В – должны получитьь заданное падение напряжения ;
— проверяем генератор тактовой частоты – здесь необходимо в микроконтроллере выставит фьюз CKOUT,т.е. разрешить выводить меандр задающего генератора на ножу 6 (мк ATtiny2313 – PD2). Меряем частоту. Также можно измерить напряжение, которое должн быть = половине питания = 2,86В. (у меня было так). Помните мк работает от внешнего генератора, поэтому заливаете сначала программу, а потом меняете фьюзы на внешний генератор.
Дальнейший шаг наладки этого устройства – установить драйвер на компьютер — «Virtual Communications Port» для Win — качаем архив avrcdc_inf.zip. В даном архиве 4-ри папки: raw — для (Windows 2000/XP), w2k — для Windows 2000 (bulk mode only), xpvista7 — для Windows XP/Vista/7 x32, vista64 — для Windows Vista x64. Драйвер выбирается после подключения нашего устройства. Вообщем стандартная схема. Далее для загрузки прошивки в наш контроллер качаем cdc232.2011-06-24.zip, где и выбираем прошивку под наш контроллер. Выставляем фьюзы H = 0xCD, L=0xFF. Все готово. Ниже схема взаимодействия преобразователя и ПК.
Устройство работате следующем образом: при подключении к ПК появляется виртуальный COM- порт. Далее происходит передача по интерфейсу RS232C, без упраляющих линий DTR, DTS, RTS, CTS.
После этого необходимо проверить работоспособность с помощью программы Terminal — качаем там же. Результат работы преобразователя можно просмотреть на примере передачи данных по UART с DoctorAVR и контроллера сбора данных (логгера).
В следующей статье№9 рассмотрим основу работы барьера на микроконтролере, программную и аппаратную часть. На этом все. Всем пока.
Просмотрено 11226 раз.
www.ap-impulse.ru
Подключение микросхемы достаточно простое даже для начинающего радиолюбителя.
Стоимость: ~51
Подробнее на Aliexpress
Доставка новых самоделок на почтуПолучайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!
*Заполняя форму вы соглашаетесь на обработку персональных данных
usamodelkina.ru
USB to USART и не только…
Все началось с того, что мне надо было подключиться к одному устройству по USART. Я сразу взял спаянный когда-то адаптер USB to UASRT (ибо в ноутбуке COM порт не предусмотрен) на AtTiny2313 (рекламой заниматься не буду, схема легко находится в интернете), подключил, запустил и внезапно понял, что у адаптера фиксированная скорость 9600, а у девайса, к которому требовалось подключиться, скорость 57600. Дело, естественно, было поздним вечером, и купить что-нибудь вроде FT232 возможности не было. Поэтому после непродолжительного почесывания хвостом за ухом, было решено изменить скорость UASRT в адаптере обычной перепрошивкой. В итоге соединение было успешно налажено. Но согласитесь — это ведь не выход, программатора может под рукой не оказаться, да и неудобно каждый раз с прошивкой шаманить. После этого случая я серьезно задумался о создании нормального адаптера, с регулируемой скоростью (и не только).
Конечно, самый простой вариант – купить FT232, но сравнив ее стоимость со стоимостью Mega8, я пришел к выводу, что этот вариант мне не нравится. Поэтому было решено сделать адаптер на МК. А раз он на МК, то делать только USART как-то не рационально. Поэтому неплохо было бы в этот адаптер засунуть еще несколько интерфейсов, если уж делать, то что-то универсальное и полезное. Почти сразу в памяти всплыли “приятные” воспоминания об установке драйверов для адаптера на Tiny2313 (для Windows7 x64 это довольно мучительно). А это значит, что от устройства “виртуальный COM” придется отказаться, следовательно, надо будет написать программу для ПК, иначе работа с устройством будет невозможна. В общем, после обдумывания в течение некоторого времени, сформировалась окончательная идея девайса. Функционал получился вот таким:
Объектом издевательств для создания девайса стал МК Mega8, т.к. в TQFP корпусе он занимает совсем мало места (намного меньше, чем AtTiny2313) и обладает целыми 8 Кб. памяти (можно помимо программы адаптера засунуть туда… например бегущий огонек, ну или то-нибудь более полезное). Сначала планировалось сделать все интерфейсы программными, но после разводки платы пришлось отказаться от программного I2C, т.к. на односторонней плате вывести его никак не получалось (спасибо создателям этого МК, которые по какой-то причине вывели его сверху, как раз рядом с USART и входом внешних прерываний INT0). Но в будущем все-таки надо будет решить этот вопрос, может отдельно вывести сбоку платы или еще как. Поэтому функциональность I2C несколько ограничена, зато USART и SPI остались полнофункциональными.
Схема устройства получилась вот такой:
Как видно, ничего сложного в ней нет. МК питается напряжением 5 В., согласование уровней для USB выполнено при помощи делителей напряжения резистор 68 Ом. + стабилитрон 3.3 В.. Тактовая частота МК – 12 МГц. Это минимальная частота для работы с шиной USB. Так же в схеме присутствуют три светодиода для индикации режимов работы. Один из светодиодов показывает, какй режим работы включен, а два других индицируют прием/передачу данных. Никаких кнопок и переключателей в устройстве не предусмотрено, и все настройки выполняются программно, прямо с ПК. Кроме этого на все выводы, используемые для работы интерфейсов, включены резисторы на 68 Ом. для защиты МК от КЗ. А то перепаивать TQFP копуса не особенно интересное занятие.А если вытравить ее и немного потыкать паяльником, получится примерно так:
Это была пробная версия устройства, поэтому есть небольшие отличия от чертежа платы, приведенного выше. Дело в том, что я почему-то решил, что вывод SS мне для работы SPI не нужен и не стал его выводить. Как оказалось в последствии я жестоко ошибался, ибо режим Slave без него работать не будет. Ну да ладно, плата исправлена, и все режимы работают нормально.
Итак, со схемой все понятно, он простая до предела и паяется за один вечер. Но, как было сказано выше, получившееся устройство определяется ПК как HID, т.е. ОС подбирает под него драйвер из своей базы. Проще говоря, Windows думает, что работает с устройством ввода. Это делает возможным работу на любом ПК без мороки с драйверами. Но с этим связана одна небольшая проблема, ни одна из существующих программ для обмена данными через USART работать с этим устройством не будет. А значит нужна какая-то специальная программа для работы с модулем, иначе он никакой ценности из себя не представляет. Поэтому я открыл свой любимый C++ Builder (нынче его обозвали CodeGear RAD Studio, что в прочем не меняет смысла), версия 2007, и написал вот такую программу:
Ничего особо сложного в ней нет, для каждого интерфейса присутствует некоторое количество настроек. Да, одновременно несколько интерфейсов работать не могут, только по одному. Работает все это дело очень просто, при подключении устройства к ПК в окне программы активизируются кнопки, нажатие на которые запускает соответствующий интерфейс. Потом достаточно написать данные в поле ввода в определенном формате и нажать кнопку «Send». Для каждого интерфейса свой формат данных. Сейчас рассмотрим их более подробно:
USART: (прием данных идет все время, пока активен режим, так сказать, на автомате)
SPI:
I2C:
Для SPI в режиме Slave никаких команд не предусмотрено, просто сидим и ждем, пока нам что-нибудь пришлют. Для работы с девайсом подключаем его к ПК, ждем некоторое время, пока ОС не сообщит, что драйвера успешно найдены и установлены, запускаем программу и начинаем обмен данными. Все предельно просто, ведь простота и была одним из критериев при создании устройства.
Да, кстати, программа совместима со всеми версиями Windows, начиная с Windows XP и заканчивая Windows 8, и не требует для работы различной экзотики, типа NetFramework и т.п. Как, впрочем, и сам модуль.
Вот, собственно, и все, программа, плата и исходники прилагаются.
Фьюзы выставляются для работы от внешнего кварца с высокой частотой. Выглядят вот так:
На картинке LOW фьюзы в 1, когда не отмечены, и в 0, когда отмечены. HIGH фьюзы наоборот. В шестнадцатеричном виде это выглядит вот так: HIGH: D9, LOW: FF.
Ну и конечно же видео, а то без него как-то совсем неинтересно получается. (USART работает в режиме эхотест (Rx и Tx соединены), а SPI и I2C тестируются с микросхемой RTC PCA2129T, у нее есть и SPI и I2C интерфейсы, так что было очень удобно):
Все вопросы в Форум.
Как вам эта статья? | Заработало ли это устройство у вас? |
www.radiokot.ru
Данная статья является дополнением к статье Antony о подключении к приставке Ritmix RZX-50 по последовательному интерфейсу, которую рекомендуется предварительно прочесть.
Как известно из вышеупомянутой статьи, приставку Ritmix RZX-50 можно подключить к компьютеру через uart ttl, но так как сигналы по вольтажу не совпадают со стандартом rs-232, то нужен переходник. В качестве готового решения можно воспользоватья специальным конвертером, например, таким или даже таким.
Сложность в том, что подобные решения могут быть далеко не всегда доступны, а при их наличии заявленная цена может быть достаточно высокой.
Однако, можно приспособить обычный кабель-переходник usb-rs232 (com), который продаётся в любом компьютерном магазине. Например, такой:
Кабель Gembird usb-rs232 uas111
Он удобен тем, контроллер спрятан в аккуратную коробочку. Правда, она запаяна, поэтому для вскрытия придётся либо её распиливать, либо срезать пластик паяльником.
В принципе, подойдёт любой другой подобный кабель, однако, нужно обращать внимание на удобство доступа к плате с контроллером. На некоторых кабелях она спрятана в разъёме rs-232, вскрывать который затруднительно, а на других может оказаться микросхема-капля, подпаяться к которой непросто. В конце-концов такой кабель может быть основан на каком-нибудь экзотическом чипе.
Микросхема pl2303
Интересны прежде всего ноги 1 (TXD) и 5 (RXD), нумерация ног идёт против часовой стрелки от угла, отмеченного на самом чипе точкой.
Обратная сторона с чипом max213
Cигнал от 1-ой ноги pl2303 приходит на 6-ю ногу max’а, а сигнал от 5-ой — на 19-ю ногу «максимки». В принципе, эта микросхема для uart-ttl не нужна, она даже может помешать. Поэтому её нужно аккуратно выпаять, и тем легче будет подпаиваться к контактным площадкам.
Микросхема max213 выпаяна
Красный провод припаян к сигналу TXD, жёлтый — к RXD, чёрный провод — земля. Впоследствии можно подключать по схеме Antony, присодиняя провода «перкрёстно», т.е. RXD контроллера к TXD приставки, а TXD к RXD соответственно.
Выводы последовательного интерфейса у Ritmix RZX-50
Вторая немаловажная часть — непосредственное подсоединение к компьютеру и настройка соединения. Ниже будет рассмотрена специфическая ситуация, когда на компьютере (ноутбуке) установлена W7 x64, а в виртуальной машине VirtualBox — Xubuntu 11.10 x32. Всё нижеописанное также справедливо для любых дистрибутивов linux.
Перепаянный как указано выше кабель подсоединяется к компьютеру (при этом rzx-50 НЕ подключена). Естественно, что драйвер системой не установится, но это и не требуется. Загружаем xubuntu в виртуальной машине, пробрасываем вовнутрь подсоединённое устройство (должно обозначаться как Prolific Technology Inc. USB-Serial Controller). После чего загружаем консоль и вводим dmesg. Одной из последних строчек должно оказаться определение подключённого устройства (pl2303) и его отражение на файловую систему — в данном случае это /dev/ttyUSB0. Запоминаем это имя.
Теперь надо установить minicom. Команда стандартная: «sudo apt-get install minicom». Запускаем настройку: «sudo minicom -s» и попадаем в меню конфигурации. В Serial port setup устанавливаем /dev/ttyUSB0 в качестве Serial Device, скорость потока устанавливается 56700 8N1, hardware и Software Flow Control выключается (No). Далее в Modem and dialing нужно стереть строки Init String и Reset String.
После чего настройку можно сохранить либо как дефолтную, либо под любым именем. В последнем случае minicom следует запускать с именем настройки в командной строке.
Выходим из настройки и запускаем minicom в обычном режиме (sudo minicom). Теперь можно протестировать кабель, замкнув провода от сигналов TXD и RXD. Если при нажатии любых клавиш в minicom на экране появляются соответствующие символы, значит кабель работает.
Теперь можно подсоединять приставку к проводам способом, указанным выше, и включить её, наслаждаясь выводом в окно эмулятора терминала. Когда выпадёт приглашение ввести пароль, следует ввести «root». Если при вводе и выводе символов периодически появляются мусорные или посторонние, значит что-то не так с землёй (скорей всего оборвана). В идеале земля также никак не должна замыкаться с сигналами TXD и RXD.
prizma.bmstu.ru
Роутер превращается в компьютер, если к нему по UART подключить клавиатуру и дисплей
Протокол UART (Universal asynchronous receiver/transmitter) или, по-русски, УАПП (универсальный асинхронный приемопередатчик) — старейший и самый распространенный на сегодняшний день физический протокол передачи данных. Наиболее известен из семейства UART протокол RS-232 (в народе – COM-порт, тот самый который стоит у тебя в компе). Это, наверное, самый древний компьютерный интерфейс. Он дожил до наших дней и не потерял своей актуальности.
Надо сказать, что изначально интерфейс УАПП появился в США как средство для передачи телеграфных сообщений, и рабочих бит там было пять (как в азбуке Морзе). Для передачи использовались механические устройства. Потом появились компьютеры, и коды ASCII, которые потребовали семь бит. В начале 60-х на смену пришла всем известная 8-битная таблица ASCII, и тогда формат передачи стал занимать полноценный байт, плюс управляющие три бита.
В 1971 году, когда уже начался бум микросхем, Гордон Белл для компьютеров PDP фирмы Western Digital сделал микросхему UART WD1402A. Примерно в начале 80-х фирмой National Semiconductor был создан чип 8520. В 90-е был придуман буфер к интерфейсу, что позволило передавать данные на более высоких скоростях. Этот интерфейс, не претерпев практически никаких изменений, дошел и до наших дней
Чтобы понять, что роднит и отличает разные UART-интерфейсы, разберем принцип работы самого популярного и любимого нами протокола RS-232. Дотошно расписывать все тонкости его работы я не буду. Об этом написан ни один десяток мегабайт статей, и если ты умеешь пользоваться Гуглом, то без проблем найдешь всю необходимую информацию. Но основы я расскажу, благо с ними можно уже круто всем рулить, а всякие фишки используются очень редко.
Основные рабочие линии у нас – RXD и TXD, или просто RX и TX. Передающая линия – TXD (Transmitted Data), а порт RXD (Received Data) – принимающая.
Эти линии СОМ-порта задействованы при передаче без аппаратного управления потоком данных. При аппаратном потоке задействованы еще дополнительные интерфейсные линии (DTS, RTS и пр.). Выход передатчика TX соединен с входом приемника RX и наоборот. Электрический принцип работы RS-232 отличается от стандартной 5-вольтовой TTL логики. В этом протоколе логический нуль лежит от +3 до +12 вольт, а единица от -3 до -12, соответственно. Промежуток от -3 до +3 вольт считается зоной неопределенности. Учти, что все напряжения указаны относительно корпуса компьютера, или земли. Теперь, я думаю, ты понимаешь, зачем в компьютерном блоке питания существует сразу два напряжения: -12 и +12 вольт. Они были введены специально для работы СОМ-порта.
Приём сигнала по RS-232 (взято из книги М.Гук «Аппаратные интерфейсы ПК»)
Такая большая амплитуда рабочих напряжений, целых 24 вольта, нужна в первую очередь для помехоустойчивости линий связи. По стандарту, длина кабеля, по которому у нас бегают данные, может быть 15 м. Хотя на практике люди умудрялись заставлять его работать даже на 25 м. Электрические параметры RS-232 – это главная характеристика, которая отличает его от других протоколов семейства UART.
Следующие характеристики – формат посылки и скорость передачи данных – полностью применимы ко всем видам UART и обеспечивают их совместимость через несложные схемы сопряжения.
Стандартная посылка занимает 10 бит. Но правило это распространяется только на стандартные настройки СОМ-порта. В принципе, его можно перенастроить так, чтобы он даже интерфейс One-Wire понимал. В режиме простоя, когда по линии ничего не передается, она находится в состоянии логической единицы, или -12 вольт. Начало передачи обозначают передачей стартового бита, который всегда равен нулю. Затем идет передача восьми бит данных. Завершает посылку бит четности и стоповый бит. Бит четности осуществляет проверку переданных данных. Стартовый бит говорит нам, что пересылка данных завершена. Надо отметить, что STOP-бит может занимать 1, 1.5, и 2 бита. Не стоит думать, что это дробные биты, это число говорит только о его длительности. Стоповый бит, как и стартовый, равен нулю.
Сигнал UART на экране осциллографа. Виден старт бит, данные и стоповый бит. Спасибо DIHALTза картинку
Даже если тебе раньше никогда не приходилось работать с СОМ-портом, по крайней мере, в модеме ты должен знать номинальные скорости работы: 9600, 28800, 33600, 56000 и т.п. Сколько бит в секунду убегает из нашего порта? Вот смотри, допустим, скорость у нас 9600 бит в секунду. Это означает, что передача одного бита будет занимать 1/9600 секунды, а пересылка байта – 11/9600. И такая скорость для байта верна только в случае, если стоп-бит будет занимать один бит. В случае, если он занимает два стоп-бита, то передача будет 12/9600. Это связано с тем, что вместе с битами данных передаются еще специальные биты: старт, стоп и бит четности. Линейка скоростей СОМ-порта стандартизирована. Как правило, все устройства работают на трех стандартных скоростях: 9600, 19200, 115200. Но возможны другие варианты, даже использование нестандартных скоростей или скорости, меняющейся во времени, – с этим я сталкивался при разборе полетов очередного устройства.
Видов UART существует великое множество. Я не буду перечислять их наименования, ибо, если ты владеешь английским, то сумеешь и сам нагуглить. Но самые основные не отметить нельзя! Напомню, что главное отличие интерфейсов состоит в среде и способе передаче данных. Данные могут передаваться даже по оптоволокну.
Второй по распространению интерфейс после RS-232 – это RS-485. Он является промышленным стандартом, и передача в нем осуществляется по витой паре, что дает ему неплохую помехоустойчивость и повышенную скорость передачи до 4 мегабит в секунду. Длина провода тут может достигать 1 км. Как правило, он используется на заводах для управления разными станками.
Надо сказать, что IRDA, или инфракрасная связь, которая встроена в большинство телефонов и КПК, тоже по сути является UARTом. Только данные передаются не по проводам, а с помощью инфракрасного излучения.
В SMART-картах (SIM, спутниковое телевиденье, банковские карты) – тех самых устройствах, которые мечтает похачить каждый уважающий себя фрикер – тоже используется наш любимый UART. Правда, там полудуплексная передача данных, и логика работы может быть 1,8/3,3 и 5 вольт. Выглядит так, будто RX запаян с TX на одном конце и на другом – в результате, один передает, другой в этот момент слушает, и наоборот. Это регламентировано стандартом смарт-карт. Так мы точно знаем, сколько байт пошлем, и сколько нам ответит карточка. Тема достойна отдельной статьи. В общем, запомни, что UART есть практически везде.
Устройства, которые имеют на своём борту UART, по часовой стрелке: мышка, ридер-эмулятор SMART-карт, КПК Palm m105, отладочная плата для микроконтроллера ATtiny2313 (или AT89C2051), модем.
Я уже глаза намозолил разными интерфейсами, но как с ними работать-то? Ну, с обычным RS-232 понятно, а, допустим, с 5-вольтовым юартом как быть? Все просто: существуют различные готовые микросхемы-преобразователи. Как правило, в маркировке они содержат цифры «232». Увидел в схеме микруху с этими цифирями – будь уверен: скорее всего, это преобразователь. Через такие микросхемы с небольшим обвязом и сопрягаются все интерфейсы UART. Я не буду рассказывать о промышленных интерфейсах, а скажу о тех преобразователях, которые интересуют нас в первую очередь.
Самый известный преобразователь интерфейса – это микросхема, разработанная фирмой MAXIM, которая и получила от нее часть своего названия (max232). Для ее работы требуется четыре конденсатора от 0,1 микрофарады до 4 микрофарад и питание 5 вольт. Удивительно, что эта микросхема из 5 вольт генерирует отрицательное напряжение, чтобы сопрягать 5-вольтовый UART с RS-232.
Существуют микросхемы сопряжения USB с UART, например, микросхема ft232rl. В Ubuntu для этой микросхемы уже встроены драйвера. Для Windows их придется качать с официального сайта. После установки драйверов в системе появится виртуальный СОМ-порт, и с ним уже можно рулить различными устройствами. Советую не принимать эти микросхемы, как единственно возможные. Найдется громадное количество более дешевых и интересных аналогов, посему наседай на Гугл и поймешь, что мир UARTа – это круто.
В целом, микросхемы стоят достаточно дорого и порой можно обойтись более сложными, но зато более дешевыми схемами на паре транзисторов.
Как ты понял, интерфейс UART присутствует во многих устройствах, в которых стоит какой-либо процессор или контроллер. Я даже больше скажу: если там стоит контроллер, то юарт есть стопудово (только он не всегда может использоваться). Как правило, по этому интерфейсу идет наладка и проверка работоспособности девайса. Зачастую производитель умалчивает о наличии этого интерфейса в изделии, но найти его несложно: достаточно скачать мануал на процессор и, где находится юарт, ты будешь знать. После того, как ты получишь физический доступ к железяке по нашему интерфейсу, можно его настроить на свое усмотрение или даже заставить работать, так как надо тебе, а не как задумал производитель. В общем, – выжать максимум возможностей из скромного девайса. Знание этого протокола дает также возможность подслушать, что же творится в линиях обмена между различными процессорами, так как часто производители организуют целые юарт-сети в своем устройстве. В общем, применений много, главное – интуитивно понимать, как это делать.
Намедни я намутил себе WiFi-роутер WL-520GU и, прочитав статью Step’a «Level-up для точки доступа» (][ #106), успешно установил туда Linux. Но у меня возникли проблемы с монтированием swap-раздела жесткого диска. Так появилась необходимость посмотреть лог загрузки точки доступа – подмонтировался раздел или нет – причем, как говорится, на лету, чтобы сразу вносить необходимые изменения. Шестым чувством я подозревал, что в моем роутере просто обязан быть UART. Я взял в руки крестовую отвертку и начал его разбирать. Дело тривиальное, но с заковыркой – потайные винтики находятся под резиновыми ножками (если решишь повторить, помни, что при разборе ты лишаешься гарантии). Моему взору предстала достаточно скучная плата, где все «chip-in-one»: один центральный процессор, в который включено все, внешняя оператива, флеша, преобразователь питания и рядок разъемов с кнопками. Но на плате была не распаянная контактная площадка, точнее сказать, отверстия под иголки. Их было четыре штуки. Вот он UART, это очевидно! По плате даже без мультиметра видно, что крайние иголки – это +3,3 вольта и второй – земля. Средние контакты, соответственно, RX и TX. Какой из них что, легко устанавливается методом научного тыка (спалить интерфейс очень проблематично).
Сразу хочу отметить, что интерфейс UART в каждом роутере выглядит по-разному. В большинстве случаев, это не распаянные отверстия на плате. Правда, в одном роутере от ASUS я даже встретил полностью подписанный разъем.
Чтобы подключить роутер к компу, необходимо сопрячь интерфейсы RS-232 с UARTом роутера. В принципе, можно подключить к USB, используя указанную выше микросхему FT232RL, – что я и сделал при первой проверке роутера. Но эта микросхема – в достаточно сложном для пайки корпусе, посему мы поговорим о более простых решениях. А именно – микросхеме MAX232. Если ты собираешься питаться от роутера, то там, скорее всего, будет 3,3 вольта, поэтому лучше использовать MAX3232, которая обычно стоит в КПК (схему распайки нетрудно найти в инете). Но в моем роутере присутствовало питание +5 вольт на входе, а указанных микросхем у меня великое множество, и я не стал заморачиваться. Для сборки нам потребуются конденсаторы 0,1 мкФ (4 штуки) и сама микросхема. Запаиваем все по традиционной схеме, и начинаем эксперименты.
Исходники для сборки
На выход я сразу повесил 9-пиновый разъем типа «папа», чтобы можно было легко подключить нуль-модемный кабель. Если ты помнишь, во времена DOSа такими кабелями делали сетку из двух компов и резались в «Дюкнюкем». Провод для наших целей собрать несложно. Правда, получится не полный нуль-модем и через него особо не поиграешь, но рулить точкой доступа будет самое то! Тебе понадобятся два 9-пиновых разъема типа «мама», корпуса к ним и провод, например, от старой мышки или клавы (главное, чтобы в нем было три провода). Сначала соединяем земли ¬- это пятый контакт разъемов; просто берем любой провод и с обоих сторон припаиваем к 5-му контакту. А вот с RX и TX надо поступить хитрее. С одного конца провода запаиваем на 3-й контакт, а с другого – на 2-й. Аналогично с третьим проводом, только с одного конца запаиваем на 2-й контакт, с другого – на 3-й. Суть в том, что TX должен передавать в RX. Прячем запаянные разъемы в корпус — и готов нуль-модемный кабель!
Распаянные иголки на плате роутера.
Для удобства монтажа в материнку роутера я впаял штырьковый разъем, а в монтажку с MAX232 – обратный разъем и вставил платку, как в слот. RX и TX роутера подбираются экспериментально.
Собраная плата
Теперь надо запитать микросхему преобразователя. Общий провод у нас присутствует уже прямо в разъеме на мамке роутера. А вот + 5 вольт находится прямо у входа питания роутера, в месте, где подключается адаптер. Точку нахождения 5 вольт определяем вольтметром, измеряя разные узлы относительно земли роутера.
Подключаем питание. Включаем и начинаем наши злостные эксперименты.
Прожигаем отверстие для вывода проводов
Распаянный СОМ-порт
Всё в сборе. Обратите внимание, что красный провод питания идёт к разъёму адаптера роутера. Узелок внутри сделан, для того чтобы рывком на оторвать припаянные провода.
Нам нужно настроить терминальную программу. В Винде все достаточно просто: запускаем Hyper Terminal, отключаем программную и аппаратную проверку данных, выставляем скорость 115200 и один стоповый бит. А вот в Линухе дело обстоит чуть хитрее. У меня Ubuntu, и рассказывать буду про нее. Для начала разберись, как в твоей сборке именуется СОМ-порт. В моем случае СОМ1 был ttyS0 (если использовать к примеру микросхему FT232, то он будет именоваться ttyUSB0). Для работы с ним я использовал софтинку minicom.
Запускай ее с параметрами: minicom -l -8 -c on -s. Далее выбирай «Настройки последовательного порта»:
Последовательный порт /dev/ttyS0
* Скорость/четность/биты 115200 8N1
* Аппаратное управление потоком — нет
* Программное управление потоком — нет
Сохраняем настройки. Софтина попробует проинициализировать модем — не обращай внимания. Чтобы вызвать меню, нажми <ctrl-a z>. Там можно менять настройки, например: включить/выключить эхо — Е.
Настройка
Я не рекомендую подключать микросхему преобразователя к роутеру, дабы проверить ее функционал. Допускается только брать с него питание. Проверка проходит очень просто — необходимо перемкнуть RX с TX. Сначала перемыкаешь в СОМ-порте 2-й и 3-й контакт — проверяешь настройки терминалки. Пишешь что-то на клаве: если символы возвращаются, значит, все ОК. Также проверяешь кабель, те же контакты. Потом подключаешь микросхему, и уже у нее на выходе ставишь перемычку. Я заостряю на этом внимание, потому что, например, у меня возникли проблемы, и ничего не работало, пока я все не проверил и не нашел ошибку.
После всех настроек можешь смело цеплять к роутеру и искать RX-TX на роутере, периодически выдергивая из него питание. Если все сделано правильно, то при подаче питания ты увидишь лог загрузки роутера. Принимай поздравления, теперь у тебя полный аппаратный рут, так, будто ты сидишь за монитором с клавой роутера.
Лог загрузки роутера в программе minicom
Согласись, делать через терминальную программу то же самое, что удобнее сделать через SSH – не айс. Мне хотелось превратить роутер в автономный Linux-компьютер, со своей хитрой архитектурой. Для этого нужно, чтобы данные с клавиатуры передавались по UART, и по нему же выводились на монитор. Паять и разрабатывать устройство было лениво. Тогда-то и пришла идея заюзать для этих целей пылящийся без дела КПК. По сути, наладонник будет исполнять роль контроллера клавиатуры и дисплея, ну и служить сопряжением интерфейсов.
Сначала я попробовал древнейший Palm m100. Но, видимо, у него очень маленькая буферная память, и от количества данных, которые идут с роутера, ему становилось плохо. Я взял другой — промышленный КПК, с нормальным СОМ-портом и терминалкой. Подключил, вставил в док и, в результате, получил небольшой линукс-компьютер. В принципе, вместо дорогущего промышленного КПК подойдет большинство наладонников, работающих под операционкой WinCE, главное – найти подходящий терминальный софт.
Линукс компьютер 🙂
Итак, я показал небольшой пример использования UART. Если ты вкуришь в этот протокол, то поверь, станешь просто повелителем различных железок. Есть он практически везде, и через него можно сопрягать, казалось бы, совершенно разные вещи. К примеру, к тому же роутеру при небольших настройках подключается мобильный телефон по юарту, – и раздает с него интернет. В общем, применений куча. Не бойся экспериментировать, самообразовываться и реализовать свои идеи.
Этот пост является отредактированной для хабра версией моей статьи в Хакере № 05/09 «Главный инструмент фрикера».
Литература:
1. Михаил Гук «Аппаратные интерфейсы ПК» — просто студенческая библия по персоналке.
2. en.wikipedia.org/wiki/RS-232
3. easyelectronics.ru/tag/rs232
habr.com
Ко мне в руки попал преобразователь USB-UART на чипе CP2102, который шел в комплекте с Arduino Pro Mini и заявлялся как программатор для него:
Подключив к Arduino и попробовав залить скетч, я обнаружил, что заливка не происходит. Выдается ошибка:
avrdude: stk500_getsync(): not in sync: resp=0x00
Поиск дал ответ на вопрос, почему это происходит. Оказалось, RST на выходе программатора разведен таким образом, что он является цифровым входом и предназначен для сброса чипа CP2102 по сигналу с внешнего устройства, а не сброса самого внешнего устройства. Дальнейшие поиски привели к статье, где было описано, как это исправить.
В статье мне не понравилось, что к чипу припаивается отдельный провод. Захотелось попробовать использовать уже имеющийся выход RST. Немного разобравшись с топологией платы, я обнаружил, что дорожка от вывода RST через сквозное переходное отверстие соединена с одной из ножек чипа CP2102 и сопротивлением на лицевой стороне платы.
Таким образом, необходимо перерезать участок дорожки между переходным отверстием и выводом CP2102, а также выпаять SMD-резистор над надписью POW (на резисторе надпись «1001»). Далее необходимо соединить при помощи провода вывод CP2102 «DTR» и контактную площадку, оставшуюся после выпайки резистора, расположенную ближе к надписи POW. Это соединит вывод чипа «DTR» и вывод платы «RST».
Вооружившись ножом для макетирования и паяльником, я приступил к работе. В результате получилось такое вот чудо техники:
Круг слева отмечает перерезанную дорожку, а овал справа кусочек припаянного провода. Для того, чтобы выводы микросхемы на слиплись от олова, следует залить данную сторону микросхемы спирто-канифольной смесью. Спирт быстро испарится, однако, при паянии, кипящая под жалом канифоль не даст олову спаять ножки в одно целое (конечно, если не переборщить с оловом).
Далее следует проверить работоспособность полученной платы при помощи программы RealTerm. Открываем вкладку «Pins» — установка и сброс пина DTR не должна влиять на работу пина DSR, однако должно управлять напряжением на выходе RST платы.
Когда все проверки завершены, можно пробовать залить скетч. Подключаем Arduino Pro Mini к преобразователю:
(Преобразователь) <-> (Arduino)
RST <-> DTR
TXD <-> RXD
RXD <-> TXD
GND <-> GND
5V <-> VCC
Теперь у меня скетч залился успешно.
Надеюсь, у вас всё получится!
habr.com