COM-терминал

В один прекрасный день мой старый добрый компьютер с 9-ти летним стажем приказал долго жить. Моя радость была неописуемой, ведь помимо отсутствия возможности добраться к нужной информации, находящейся на старых винчестерах, пропала возможность проводить отладку микроконтроллерных поделок с помощью вывода контрольных сообщений через COM-порт на терминальную программу. Уже хотел было сделать преобразователь интерфейсов RS232-USB для ноутбука, как пришла идея собрать автономный COM-терминал – устройство, позволяющее принимать и с помощью клавиатуры передавать символы в ASCII-кодировке, с отображением всей этой информации на жидкокристаллическом индикаторе. Результат поиска уже разработанных подобных устройств меня не порадовал – попалась только одна разработка, на которую у меня не было необходимого дисплея (да и искать его не особо-то хотелось:-) а автор предлагал только файл-прошивку. Ну что же, мы не ищем лёгких путей — решено разработать такой приборчик самому.

Дальше, злой рок наконец перестал вмешиваться в мою работу, поэтому через пару недель свободного времени COM-терминал был готов!

Собственно, устройство.

Схема COM-терминала

Основа устройства – контроллер Atmega8A. В качестве дисплея был выбран LPH8731-3C, библиотеку для работы с которым я описывал ранее. Однако, в данном проекте, библиотека была полностью переделана и оптимизирована для быстрого вывода текстовой информации.

Информацию об интерфейсе клавиатуры PC/AT можно найти на данном сайте, в моей же программе был применён код, основанный на аппноуте AVR313 фирмы Atmel (прилагается в архиве).

Терминал поддерживает следующие скорости работы UART: 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 и 76800 бод/с.

В программе используются 3 кольцевых буфера: один на приём данных по UART, второй – на отправку сообщений и третий – буфер данных клавиатуры. В принципе, при небольшой скорости печатания на клавиатуре можно было обойтись и без последних двух, но мне работать с ними удобнее.

В начале каждого запуска терминала появится окошко, в котором кнопкой SELECT необходимо выбрать требуемую скорость работы, а кнопкой ENTER установить её. При необходимости изменить скорость работы UART, нажимаем SELECT и выполняем опять описанные действия. Кнопка CLEAR производит очистку дисплея.

В схеме, помимо стандартного интерфейса RS-232, предусмотрена возможность подключиться напрямую к выводам TX и RX испытуемого микроконтроллера, блока GPS или другого устройства, имеющего интерфейс UART и необходимую нам скорость работы. Также предусмотрена гальваническая опторазвязка выводов TX и RX терминала, выполненная на оптопарах PC817. В этом случае для связи с испытываемым устройством нам понадобится на 1 соединительный провод больше, чтобы подать от него независимое питание (+3…+5В) на вывод Vcc разъёма X2. Насколько такое решение удачно – судить вам!

Принимаемые по UART символы отображаются на экране синим цветом, передаваемые с помощью клавиатуры – красным цветом. На дисплее организован сдвиг текстовых данных подобно тому, как он организован в Microsoft Word, что позволяет удобно отслеживать диагностическую информацию.

Плата создавалась по принципу «что есть в наличии», поэтому представляет собой симбиоз SMD-компонентов с «нормальными» деталями.

Все необходимые коммуникационные выводы представлены на плате в виде разъёмов, а сами гнёзда COM-порт и PS/2 расположены в корпусе прибора. В качестве источника питания используется 9-вольтовая батарейка типа «Крона».

Разъём для программирования микроконтроллера на плате не предусмотрен, из-за чего придётся самостоятельно подпаять проводники программатора к нужным выводам, для этого предусмотрены небольшие контактные площадки возле ножек микроконтроллера.

Конфигурация:

Биты конфигурации:

Печатная плата в Proteus (v 7.10):

И в железе:

Готовое устройство:

На видео представлен пример работы терминала с его первым, не особо удачным прототипом и блоком GPS-приёмника Lassen iQ

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD1 МК AVR 8-бит ATmega8A-AU 1
DD2 ИС RS-232 интерфейса MAX232 1
DA1 Линейный регулятор LM7805CT 1
VD1 Стабилитрон BZX55C3V0 1 Любой стабилитрон 3В, 0.5 Вт
U1, U2 Оптопара PC817 2
ZQ1 Кварц 16 МГц 1
C1, C2 Конденсатор 22 пФ 2
C3-C6 Конденсатор 0.1-1 мкФ 4
C7 Электролитический конденсатор 4.7мкФ 20В 1
C8 Электролитический конденсатор 47 мкФ 10В 1
C9 Конденсатор 47 мкФ 1
R1-R4, R18, R19 Резистор 4.7 кОм 6
R5 Резистор 510 Ом 1
R6-R10 Резистор 15 кОм 5
R11, R12 Резистор 240 Ом 2
R13-R17 Резистор 22 кОм 5
LCD LPH8731-3C 1