COM терминал

Хотя COM порт в компьютерах и отжил свой срок, но в радиолюбительской практике он очень распространён, т.к. многие контроллеры оснащены UART и он является простым в программировании. Для отладки различных устройств с COM портом или списывание с них какой-либо диагностической информации требуется компьютер, но не всегда компьютер может быть под рукой, чтобы решить эту проблему был разработан портативный асинхронный COM терминал. Данное устройство компактно, имеет небольшой, но вместительный дисплей на 84 символа, от nokia 3310, и к нему можно подключать RS-232 или RS-485 интерфейсы, для ввода информации подходит почти любая PS/2 клавиатура (было проверено множество клавиатур, из проверенных не подружился только BTC’шными).

COM терминал

COM терминал

Схема

Схема

Устройство построено на микроконтроллере PIC16F648A, он был выбран т.к. имеет 4К flash памяти и UART. Дисплей – китайский дисплей от nokia 3310 (с оригинальным не проверялось). Применены 2 преобразователя интерфейса UART-RS232 – MAX232 и UART-RS485 – MAX1483. Диоды VD1-VD4 – шотки – MBR0540T1, служат для согласования лини RS-485, для коротких линий можно не устанавливать. HL1 – светодиод наличия питания.

Плата

Плата

Плата подогнана под корпус Z55K. Большинство элементов платы поверхностного монтажа. У разъёма DB9F удалён 4 вывод, т.к. под ним проходит дорожка. Микроконтроллер устанавливается на подложку, у которой удалён 3 вывод. Стабилизатор в корпусе SOT-89. Конденсатор C3 – чип тантал типоразмера C на 47мкФ 10В, C5 – тоже чип тантал, но размера A, 4,7 мкФ. Конденсаторы C1-C2, C4-C6, C8-C10 – типоразмера 0805, остальные конденсаторы размера 1206. Резисторы R1, R3, R6-R9, R11 – типоразмера 0805, R2, R4, R10, R12 – 1206, также применены резисторные перемычки 2 шт. типоразмеров 1206 и 3 шт. 2010. Разъёмы: DRB-9M, PS/2, телефонная 6 контактная розетка TP6P4C, разъём питания или можно припаять клемму для 9В кроны. Предусмотрено место под установку выключателя, светодиода питания.

Пример работы терминала

Пример работы терминала

Входящие символы отображаются чёрным на белом фоне, а исходящие белым на чёрном фоне. Переключение языка – левый ALT, переключение регистра – левый SHIFT. Очистка экрана и буфера – ESC. Были реализованы все ASCII символы. На клавиатуре поддерживаются ENTER, Backspace и TAB. Терминал содержит небольшой буфер для входящих и исходящих сообщений на 160 символов.

Были реализованы следующие функции, которые располагаются в различных меню, вызываемые клавишами F1-F5.

Выбор скорости

Терминал поддерживает скорости от 1200 до 115200 бод, выбор скорости 1 – вверх, 2 – вниз, ESC – выход из меню, меню вызывается нажатием клавиши F1.

Вставка символа

Можно отправлять произвольный ASCII символ, код символа задаётся в десятичной системе, вызов меню – F2, выход из меню – ESC, вставить символ — ENTER.

Настройки

Неизвестные символы можно отображать в виде HEX кода символа, отображать только наличие неизвестного символа или игнорировать. Также реализована поддержка канонического вида. Реализованы 4 вида проверки чётности: чётный, нечётный и два маркера – 1 и 0. Вызов меню – F3, выход из меню – ESC, переключение параметра — соответствующие им цифры.

Настройки

Есть контроль потока передачи, как по линиям CTS и RTS, так и пакетами XON и XOFF, вызов меню F4, выход из меню – ESC, смена контроля потока передачи – цифра 1.
Ручное управление линией RTS возможно с помощью клавиш F9 – включить и F10 – выключить. И ручная отправка пакетов XON – F11, XOFF – F12.

Использование RS-485: F7 — включить на приём (только чтение из порта, по умолчанию), F8 – включить на передачу (только запись в порт).

Об устройстве

И меню о программе и авторе, вызов меню – F5, выход из меню — ESC.

Вот ещё фотографии испытания терминалки:

Тестирование COM (RS-232) порта Тестирование COM (RS-232) порта

Тестирование COM (RS-232) порта

Тестирование порта RS-485 Тестирование порта RS-485

Тестирование порта RS-485

Экран терминалки при тестировании RS-485

Экран терминалки при тестировании RS-485

Скачать файл в формате Sprint Layout и прошивку
Скачать исходный код

Данный проект принимал участие в конкурсе «Поздравь Кота по-человечески 2010» на сайте radiokot.ru .

Статья обновлена 28 марта 2011 года

11 комментариев на « COM терминал»

  1. Дмитрий пишет 09.06.2011 в 10:21 #

    классно, надо попробовать сделать

  2. Дракончик пишет 13.04.2012 в 17:28 #

    Неплохо бы увидеть исходный текст программы — 648-й достать не могу, но по объёму памяти подойдёт 873-й.

  3. Владимир пишет 20.05.2018 в 12:28 #

    Отличный проект. Хотелось глянуть исходный код, напишите обсудим

  4. 1Ж24Б пишет 12.08.2018 в 18:56 #

    Собрал терминал на «китайском» дисплее 3310. Работает, но контрастность низкая

  5. Alex_EXE пишет 17.08.2018 в 03:06 #

    Блок со стабилитроном VD5 R10: нужно пересчитать резистор на потребляемый дисплеем ток (уменьшить сопротивление) или заменить стабилизатором на 3.3В.

  6. 1Ж24Б пишет 22.08.2018 в 00:30 #

    Пробовал переключать дисплей на питание 5 В, контрастность осталась низкая. Значит дисплей.

  7. Alex_EXE пишет 22.08.2018 в 01:40 #

    Нашел и выслал исходник, возможно последняя версия. Сейчас возможности исправить, проверить и откомпилировать нет.

  8. 1Ж24Б пишет 20.10.2018 в 19:49 #

    Собрал терминал в корпусе. Поскольку были проблемы с контактом к китайскому дисплею 3310, выписал из Китай платки с дисплеем 5110. Для последнего в прошивке надо убрать смещение по оси Y на 8 бит и подобрать константу для получения требуемой контрастности.

  9. Alex_EXE пишет 22.10.2018 в 01:19 #

    Добавил исходный код. Возможно полседняя версия.
    Среда разработки MPLAB, компилятор Hi-Tech версия 9.7 вроде (по памяти).

  10. 1Ж24Б пишет 26.10.2018 в 00:17 #

    Отловил «глюк» — три разные PS/2 клавиатуры требовали короткого нажатия на клавиши, иначе начинался повторный ввод символа.

    Из пожеланий — как заблокировать вывод символа с клавиатуры на дисплей ?

  11. Alex_EXE пишет 26.10.2018 в 01:46 #

    Данный глюк известен в свое время это не доделал.
    Данный недочет нужно решать убиранием задержки в конце функции KBRead (693 строка) и добавлением корректной отработки в main того, что клавиша еще нажата при повторном опросе клавиатуры (1290 строка).

    Убрать вывод символа введенного с клавиатуры на дисплей — закомментировать 1298 строчку.

Комментарии RSS

Оставьте отзыв