Для связи микроконтроллера с компьютером чаще всего применяют COM-порт. В этой статье мы покажем, как передать команды управления из компьютера и передать данные с контроллера.
Подготовка к работе
Большинство микроконтроллеров обладают множеством портов ввода-вывода. Для связи с ПК наиболее пригоден из них протокол UART. Это протокол последовательной асинхронной передачи данных. Для его преобразования в интерфейс USB на плате есть конвертор USB-RS232 – FT232RL.
Для выполнения примеров их этой статьи вам будет достаточно только Arduino-совместимая плата. Мы используем EduBoard. Убедитесь, что на вашей плате установлен светодиод, подключенный к 13му выводу и есть кнопка для перезагрузки.
Таблица ASCII
Для примера загрузим на плату код, выводящий таблицу ASCII. ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов.
int symbol = 33; void setup() Serial.begin(9600); Serial.
Переменная symbol хранит код символа. Таблица начинается со значения 33 и заканчивается на 126, поэтому изначально переменной symbol присваивается значение 33.
#ArduBlock 2.0 — Wiki Учебник — Монитор порта
Для запуска работа порта UART служит функция Serial.begin(). Единственный ее параметр – это скорость. О скорости необходимо договариваться на передающей и приемной стороне заранее, так как протокол передачи асинхронный. В рассматриваемом примере скорость 9600бит/с.
Для записи значения в порт используются три функции:
- Serial.write() – записывает в порт данные в двоичном виде.
- Serial.print() может иметь много значений, но все они служат для вывода информации в удобной для человека форме. Например, если информация, указанная как параметр для передачи, выделена кавычками – терминальная программа выведет ее без изменения. Если вы хотите вывести какое-либо значение в определенной системе исчисления, то необходимо добавить служебное слово: BIN-двоичная, OCT – восьмеричная, DEC – десятичная, HEX – шестнадцатеричная. Например, Serial.print(25,HEX).
- Serial.println() делает то же, что и Serial.print(), но еще переводит строку после вывода информации.
Для проверки работы программы необходимо, чтобы на компьютере была терминальная программа, принимающая данные из COM-порта. В Arduino IDE уже встроена такая. Для ее вызова выберите в меню Сервис->Монитор порта. Окно этой утилиты очень просто:
Теперь нажмите кнопку перезагрузки. МК перезагрузится и выведет таблицу ASCII:
Обратите внимание на вот эту часть кода:
if(symbol == 126) while(true) continue; > >
Она останавливает выполнение программы. Если вы ее исключите – таблица будет выводиться бесконечно.
Для закрепления полученных знаний попробуйте написать бесконечный цикл, который будет раз в секунду отправлять в последовательный порт ваше имя. В вывод добавьте номера шагов и не забудьте переводить строку после имени.
Отправка команд с ПК
Прежде чем этим заниматься, необходимо получить представление относительного того, как работает COM-порт.
Урок 4. Монитор порта, протокол связи компьютер — ардуино.
В первую очередь весь обмен происходит через буфер памяти. То есть когда вы отправляете что-то с ПК устройству, данные помещаются в некоторый специальный раздел памяти. Как только устройство готово – оно вычитывает данные из буфера. Проверить состояние буфера позволяет функция Serial.avaliable(). Эта функция возвращает количество байт в буфере.
Чтобы вычитать эти байты необходимо воспользоваться функцией Serial.read(). Рассмотрим работу этих функций на примере:
int val = 0; void setup() Serial.begin(9600); > void loop() if (Serial.
available() > 0) val = Serial.read(); Serial.print(«I received: «); Serial.write(val); Serial.println(); > >
После того, как код будет загружен в память микроконтроллера, откройте монитор COM-порта. Введите один символ и нажмите Enter. В поле полученных данных вы увидите: “I received: X”, где вместо X будет введенный вами символ.
Программа бесконечно крутится в основном цикле. В тот момент, когда в порт записывается байт функция Serial.available() принимает значение 1, то есть выполняется условие Serial.available() > 0. Далее функция Serial.read() вычитывает этот байт, тем самым очищая буфер. После чего при помощи уже известных вам функций происходит вывод.
Использование встроенного в Arduino IDE монитора COM-порта имеет некоторые ограничения. При отправке данных из платы в COM-порт вывод можно организовать в произвольном формате. А при отправке из ПК к плате передача символов происходит в соответствии с таблицей ASCII. Это означает, что когда вы вводите, например символ “1”, через COM-порт отправляется в двоичном виде “00110001” (то есть “49” в десятичном виде).
Немного изменим код и проверим это утверждение:
int val = 0; void setup() Serial.begin(9600); > void loop() if (Serial.
available() > 0) val = Serial.read(); Serial.
После загрузки, в мониторе порта при отправке “1” вы увидите в ответ: “I received: 110001”. Можете изменить формат вывода и просмотреть, что принимает плата при других символах.
Управление устройством через COM-порт
Очевидно, что по командам с ПК можно управлять любыми функциями микроконтроллера. Загрузите программу, управляющую работой светодиода:
int val = 0; void setup() Serial.begin(9600); > void loop() if (Serial.available() > 0) val = Serial.read(); if (val==’H’) digitalWrite(13,HIGH); if (val==’L’) digitalWrite(13,LOW); > >
При отправке в COM-порт символа “H” происходит зажигание светодиода на 13ом выводе, а при отправке “L” светодиод будет гаснуть.
Если по результатам приема данных из COM-порта вы хотите, чтобы программа в основном цикле выполняла разные действия, можно выполнять проверку условий в основном цикле. Например:
int val = ‘0’; void setup() Serial.begin(9600); > void loop() if (Serial.
available() > 0) val = Serial.read();> if (val==’1′) digitalWrite(13,HIGH); delay (100); digitalWrite(13,LOW); delay (100); > if (val==’0′) digitalWrite(13,HIGH); delay (500); digitalWrite(13,LOW); delay (500); > >
Если в мониторе порта отправить значение “1” светодиод будет мигать с частотой 5Гц. Если отправить “0” – частота изменится на 1Гц.
Индивидуальные задания
- Придумайте три светодиодных эффекта, переключение между которыми можно осуществлять при отправке различных символов с ПК.
- Напишите программу, мигающую светодиодом с частой, заданной пользователем с ПК.
Остальные статьи цикла можно найти здесь.
работа с com портом, монитор последовательного порта — Terminal 1.9b
Всем доброго дня. Для тех кто работает с микроконтроллерами часто приходиться работать с последовательным портом, причин для этого несколько (не прихотливый интерфейс, очень распространен и есть в большинстве МК, не требует особых обвязок). Использовать его можно для связи устройства с другими или же для отладки (настройки) устройства. Для общения с компьютером платы или устройства нужна специальная программа, их называю монитор или терминал. В данной статье будет рассмотрена одна из них — Terminal 1.9b.
Немного об особенностях :
- Вес программы около 300 кб и она не требует инсталляции
- Есть возможность логгирования (трассировки) обмена
- Поддерживается отправка файлов
- Возможность задать не стандартную скорость
- Возможность назначить 24 макроса (удобно если работать например с АТ командами)
- Наличие счетчиков байт, возможность отображения принятой информации в разных системах счисления, присутствует ASCII таблица
В верхней части расположены настройки порта к которому мы будем подключаться.
Com port — здесь выбирается номер порта с которым будем работать.
Baud rate — скорость на которой будет происходить обмен. Если нужно задать свою можно выбрать custom.
Data bit — количество бит. Обычно 8 бит, но есть возможность выбрать 5, 6, 7.
Parity — настройка четности.
Stop bit — количество стоповых бит.
Handshaking — аппаратное или программное управление потоком.
После выбора настроек нужно нажать кнопку connect что бы подключиться к нужному com порту. Если устройство подключено после запуска программы, нужно нажать Rescan что бы обновить список доступных com портов.
На панели Settings есть некоторые настройки в том числе не стандартная скорость (Custom Br), шрифт — SetFont.
Сразу под ней находиться панель с принятыми байтами — Receive. На ней все что принято отображается как текст, но можно выбрать дополнительно отображать DEC, HEX, BIN (Десятичная, шестнадцатеричная, двоичная система исчисления). Там же находиться счетчик принятых байт.
На панели макрос можно выбрать и настроить 24 макроса. Окно настройки макросов:
В Первое поле вводим текст или символ для отправки, вместо М1-М24 можно ввести название под каким будет отображаться данный макрос. В поле где находиться число 1000 задается интервал авто повтора отправки, а галочка следующая за ним включает авто повтор.
Ну и собственно панель Transmit для отправки символов или текста в порт. Галочка +CR отправляет символ карретки в конце, а CR=CR+LF отправляет символы 10,13 в конце.
Данная программа является полезным инструментом при работе микроконтроллерами, не смотря на наличие аналогов мне она показалась самой удобной.
terminal1_9_b.zip
Источник: radio-blogs.ru
Типы разъёмов в мониторах (DC-IN, HDMI, DP-IN, H/P , Thunderbolt, USB)
В современных мониторах устанавливается довольно много разъёмов, имея большие размеры экрана до 34 дюймов, возможно подключить к монитору сигнал от нескольких источников сигнала (нескольких компьютеров).
Порты, разъёмы в мониторах назначение
Поэтому в мониторах устанавливают следующие разъёмы.
Порт DC-IN 19V (Power)
DC-IN 19V (Power) — вход для подключения источника питания монитора. Как правило для мониторов применяют внешние источники питания, с внешним источником питания монитор меньше греется и можно сделать меньше толщину монитора.
Порт HDMI IN1, HDMI IN2
HDMI IN1, HDMI IN2 — цифровые входы предназначены для подключения компьютера или другого устройства имеющего выход HDMI, это может быть компьютер, плеер и т.д. По этому разъёму можно принять цифровой сигнал в отличном качестве, также передаётся по этому разъёму и звук.
Порт DP-IN — DisplayPort
DP-IN — DisplayPort, цифровой вход аналогичный порту HDMI, но в этом стандарте другая кодировка, разъём применяется для подключения к монитору устройств имеющих Display Port. Современные ноутбуки выше cреднего уровня как правило имеют DisplayPort с поддержкой преобразования сигнала в стандарт HDMI.
Разъем H/P Head/Phones (Out)
H/P Head/Phones (Out) — монитор может получать звуковой по цифровым входам HDMI или DisplayPort, а если возникнет необходимость можно вывести звук на наушники тогда они подключаются к этому порту.
Порт USB
USB — стандартный разъём стоит во многих устройствах, в мониторах могут быть USB порты USB Up-Stream и Down-Stream отличие между ними в том, что пользователю возможно потребуется большее число портов для передачи или получения информации с компьютера. Сами по себе порты на мониторе никак не связаны с компьютером и в таком случае их можно использовать только для зарядки телефона или другого устройства. Поэтому в монитор встраивают USB концентратор к порту Up-Stream подключают компьютер, это как правило первый порт, к остальным можно подключить различные устройства и обмениваться с ними информацией. Если порт может выдать ток большей величины чем оговорено в стандарте рядом с портом указывается максимальный ток.
Порт Thunderbolt v2
Thunderbolt v2 — порт разработанный Apple и Intel предназначен для подключения устройств имеющих такой порт, это как правило устройства от Apple. Не вдаваясь в технические параметры это аналог HDMI и DisplayPort.
- ТЕГИ
- технологии мониторов
Источник: ru.tab-tv.com