Микроконтроллер + компьютер + своё программное обеспечение

Назначение [ править | править код ]

Наиболее часто для последовательного порта персональных компьютеров используется стандарт RS-232C. Ранее последовательный порт использовался для подключения терминала, позже для модема или мыши. Сейчас он используется для соединения с источниками бесперебойного питания, для связи с аппаратными средствами разработки встраиваемых вычислительных систем, спутниковыми ресиверами, кассовыми аппаратами, программаторами, с приборами систем безопасности объектов, а также с многими прочими устройствами.

С помощью COM-порта можно соединить два компьютера, используя так называемый «нуль-модемный кабель» (см. ниже). Использовался со времен MS-DOS для передачи файлов с одного компьютера на другой, в UNIX для терминального доступа к другой машине, а в Windows (даже современной) — для отладчика уровня ядра.

Достоинством технологии является крайняя простота оборудования. Недостатком является низкая скорость, крупные размеры разъёмов, а также зачастую высокие требования ко времени отклика ОС и драйвера и большое количество прерываний (одно на половину аппаратной очереди, то есть 8 байт).

Теория

Сперва я думал, что всё будет проще простого. Возьму библиотеки типа V-USB и libusb, подключу МК напрямую к USB-разъему, быстренько найду готовый пример кода и будет мне счастье. Но «быстренько» не получилось. Оказывается, там много заморочек — например, дополнительная библиотека кушает ресурсы МК, а моя прошивка предполагается довольно ёмкой. Мне хотелось использовать встроенные аппаратные фишки по максимуму, чтобы не занимать память. Кроме того, настройка всех этих библиотек требует опыта. Рабочая частота МК подойдет не абы какая, а та, что задал автор библиотеки. Но реальный шок был тогда, когда я узнал, что для моего устройства нужны PID (Product ID) и VID (Vendor ID), за которые сегодня надо заплатить, на секундочку, 3500$ организации usb.org. Ох, не туда меня завели поиски, не туда… Наконец до меня дошло, что к чему.

Оказалось, вопрос не в том, как передать данные через USB, а как передать данные через виртуальный COM-порт! Передача данных через COM-порт намного проще, хотя это устаревший вид портов. А раз так, то реального COM-порта у нас не будет, только виртуальный. Физически же мы по-прежнему будем использовать привычный USB. Виртуальный COM-порт будет предоставлен драйвером, о котором мы поговорим ниже. А еще к устройству добавится некая микросхема-посредник, которая снимет целый ворох проблем. Взгляните на схему:

Рис. 1 — Связующие звенья между хостом и микроконтроллером

Между ПО хоста и нашей прошивкой есть целых 4 звена. С аппаратным UART-ом всё понятно, что же с остальными?

Здесь роль посредника будет выполнять микросхема по кличке CP2102, у которой есть также куча аналогов (CH340, PL2303, FT232RL и другие). Её основная задача — преобразование интерфейса UART в USB и обратно

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

Изучать распиновку этой микросхемы тоже не будем, потому что есть готовые платки с ней же и со всей обвязкой. И это хорошо, ведь наша задача — чем проще, тем целее нервы. Пример двух платок с CP2102 от компании Silicon Labs:

Рис. 2 — USB/UART преобразователи в разных формфакторах

Купить подобную железку можно, например, здесь. Но чтобы не ждать, можете поискать в местных радиомагазинах, товар не редкий, думаю, найдёте. Далее я начал изучать, как применить этот USB/UART преобразователь. Тут тоже всё обошлось — производитель железки уже позаботился о нас и написал драйвер для контроллера USB (см. рис. 1). Этот драйвер и будет эмулировать виртуальный COM-порт. Вы спросите, а где же брать PID и VID для нашего устройства? Ответ — их предоставляет тот же Silicon Labs бесплатно.

Круто, теперь можно увидеть всю последовательность действий:

  1. Покупаем USB/UART преобразователь и собираем тестовое устройство;

  2. Скачиваем и устанавливаем драйвер;

  3. Пишем ПО хоста;

  4. Пишем прошивку МК;

  5. Тестируем интерфейс.

Закрытие порта[править]

Открытый порт должен быть закрыт перед завершением работы программы. В Win32 закрытие объекта по его дескриптору выполняет функция :

BOOL CloseHandle(
     HANDLE hObject
     );

При успешном завершении функция возвращает не нулевое значение, при ошибке нуль.

Пример открытия/закрытия на языке Cправить

   #include <windows.h>
   //. . .
   HANDLE Port;
   //. . .
   Port = CreateFile(L"\\\\.\\COM2", GENERIC_READ | GENERIC_WRITE, , NULL, OPEN_EXISTING, , NULL);
   if (Port == INVALID_HANDLE_VALUE) {
      MessageBox(NULL, "Невозможно открыть последовательный порт", "Error", MB_OK);
      ExitProcess(1);
   }
   //. . .
   CloseHandle(Port);
   //. . .

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

Где найти com порт в windows 7

Как переназначить COM порт для устройства в Windows 7

Открываем Мой Компьютер > Свойства

Как переназначить COM порт для устройства в Windows 7-01

Выбираем «Дополнительные параметры системы».

Как переназначить COM порт для устройства в Windows 7-02

Открываем настройки переменных среды.

Как переназначить COM порт для устройства в Windows 7-03

Создаем новую переменную.

Как переназначить COM порт для устройства в Windows 7-04

Добавляем переменную DEVMGR_SHOW_NONPRESENT_DEVICES. Устанавливаем для неё значение в 1.

Как переназначить COM порт для устройства в Windows 7-05

Нажимаем везде «ОК» и выходим. Далее идём в Диспетчер устройств (Мой Компьютер > Свойства > Диспетчер устройств). В пункте меню «Вид» включаем отображение скрытых устройств.

Как переназначить COM порт для устройства в Windows 7-06

Теперь нам стали видны наши неиспользуемые устройства, занимающие COM порты и мы можем удалить их.

Как переназначить COM порт для устройства в Windows 7-07

В Диспетчере устройств (Мой Компьютер > Свойства > Диспетчер устройств) выбираем устройство, которому мы хотим изменить COM порт.

Как переназначить COM порт для устройства в Windows 7-08

На вкладке «Параметры порта» нажимаем «Дополнительно».

Как переназначить COM порт для устройства в Windows 7-09

Назначаем желаемый номер для COM порта и нажимаем «ОК».

Как переназначить COM порт для устройства в Windows 7-10

Вот так вот просто переназначить COM порт для устройства в Windows 7.

Особенности работы параллельного порта

Благодаря тому, что LPT-порт поддерживает параллельную передачу данных, в первых ПК этот порт считался одним из самых скоростных портов компьютера. Передача данных по нескольким линиям во многом сближает интерфейс LPT по архитектуре с компьютерными шинами. Тем не менее, это обстоятельство накладывает и ограничение на длину кабеля, которая из-за возникающих в кабеле помех не может превышать 5 м.

Максимальное напряжение, использующееся в сигнальных линиях порта, составляет +5 В. Для простой передачи данных требуется всего лишь десять сигнальных линий – это 8 линий собственно данных, линия строб-сигнала, то есть, сигнала о готовности порта к передаче данных, и линия занятости. Остальные линии используются для совместимости со стандартом Centronics.

LPT-порт типа «мама» с нумерацией контактов.

Назначение выводов разъема параллельного порта DB25:

  • 1 – Data strobe (Строб-сигнал)
  • 2-9 – Данные, биты 0-7
  • 10 – Acknowledge (Подтверждение от принтера)
  • 11 – Busy (Занят)
  • 12 – Paper Out (Кончилась бумага)
  • 13 – Select (Принтер активен)
  • 14 – Auto Feed (Автоматическая подача)
  • 15 – Error (Ошибка)
  • 16 – Init (Инициализация принтера)
  • 17 – Select Input (Выбор устройства)
  • 18-25 – Земля

Как получить 5 вольт от порта RS-232?

Список необходимых деталей:

  1. Линейный регулятор — L78L05.
  2. 2 выпрямительных диода (D1, D2) — 1N4004.
  3. Электролитический конденсатор (C1) — 22 мкФ.
  4. Конденсатор (C2) — 0.001 мкФ.
  5. 2 резистора (R1, R2) — 43 Ом.

В схеме используется LM78L05 или советский аналог на 5В. Диоды любые. Напряжение +5В получается из сигналов RTS и DTR в RS-232. Эта схема даже из портативного компьютера может выдавать ток 12 мА. Единственный недостаток — то, что устройство транзисторно-транзисторной логики должно быть изолировано от корпуса компьютера, потому что интерфейс воспринимает корпус RS-232 как положительное напряжение.

Ключевые особенности:

Универсальность. COM Port Data Emulator поддерживает следующие порты COM, RS232, RS485 (через конвертор), TCP/IP, UDP;

Поддержка полного дуплекса. Программа может одновременно отправлять и принимать данные (исключая RS485);

Гибкая конфигурация. Наш эмулятор поддерживает произвольные скорости передачи (до 115200), количество бит данных, количество стоповых битов, различные типы четности, контроль передачи данных и т.п.;

Контроль передачи данных. Поддерживается программный и аппаратный контроль передачи данных COM и RS232 портов;

Клиент/Сервер. Эта программа может работать как клиент и как сервер в сети TCP/IP;

Произвольный источник данных. Эмулятор может читать поток данных из текстового или двоичного файла;

Протокол. COM Port Data Emulator может создавать протокол отсылаемых данных для дальнейшего их сравнения на принимающей стороне;

Визуализация. Программа отображает состояние линии (для COM и RS232) и ошибки передачи данных, отображает отправленные и принятые данные.

Frequently asked questions about Serial Port Monitor

Serial Port Monitor displays, logs and analyzes serial communication.
To start a serial monitoring session download and launch Serial Port Monitor. Then click ‘Start monitoring’ to initiate the monitoring session.

Yes, Serial Port Monitor lets you monitor an unlimited number of serial ports at a time. All you need to do is to launch a new instance of the software for every new COM port interface.

Serial Port Tester is a professional software that comes with a slew of powerful features, including advanced filtering and search options, built-in terminal, convenient data visualizers, the ability to record serial communication data to a file.

Порт и память

То есть, программа прочитает данное из памяти в процессор, что-то с ним сделает, может быть получит из этой информации какие-то новые данные, которые запишет в другое место. Или само данное просто перепишет на другое место. Во всяком случае в памяти информация, которая однажды была записана может быть либо прочитана, либо стёрта. Ячейка получается как сундучок, стоящий у стенки. А вся память состоит из ячейки каждая ячейка имеет свой адрес. Точно как сундучки, стоящие в ряд у стенки в подвале скупого рыцаря.

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

Или наоборот, в ячейку-порт информация может «прилететь» из окошка. Процессор это увидит и прочтёт эту новую появившуюся информацию. И пустит её в дело — перепишет куда-то, пересчитает вместе с какими-то другими данными. Даже может записать её в другую ячейку. Или в другую ячейку-порт, тогда эта поступившая по первому порту информация может «улететь» в окошко второго порта, — ну это уж как распорядится процессор. Вернее, программа, которая в этот момент процессором командует и данные, записанные в памяти и приходящие из портов, обрабатывает.

Просто и красиво. Эти порты так и назвали сразу — порты ввода-вывода. Через одни из них данные отправляются куда-то, через другие — откуда-то принимаются.

Ну а дальше начинается движение по кругу. Вот есть одно устройство, и есть другое. И вот есть цепочка символов, каждый из которых состоит из отдельных двоичных битов, и эту цепочку нужно передать. Как передавать? Можно по линии из 8 проводочков сразу передавать по целому символу — один проводок = один бит, потом код другого, потом третьего, и так, пока не передашь всю цепочку.

А можно было разворачивать каждый бит не в пространстве (по проводочкам), а во времени: сначала передать один бит символа, потом второй и так восемь раз. Ясно, что во втором случае нужны какие-то дополнительные средства, чтобы символы так разворачивать во времени.

Мастерам на все руки будет интересна статья об особенностях работы и схеме включения МС34063.

^ Резюме

В этой статье говорится о том, как можно подключить к компьютеру 12 светодиодов
через LPT порт, встроенный в материнскую плату компьютера. Используется самая простая схема подключения и самый простой способ
управления этими светодиодами в ручном и в автоматическом режимах.

Внимание! Переходники USB-to-LPT для этого категорически не подходят. Платы PCI-to-LPT позволяют использовать лишь 8 светодиодов, а не 12. Целью подключения диодов является получение бюджетной светомузыкальной установки
или светомузыки

Целью подключения диодов является получение бюджетной светомузыкальной установки
или светомузыки.

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

Итак, от воды перейдем к делу.

Открываем порты на Windows 7

Шаг 1. Через «Пуск» следует открыть «Панель управления».

Шаг 2. Далее нужно выбрать Брандмауэр Windows

Важно учесть, что данный значок отображается только в режимах просмотра «Мелкие значки» и «Крупные значки»

Шаг 3. Заходим в «Доп. параметры».

Шаг 4. После предыдущего этапа обязательно должно появиться окошко под названием «Брандмауэр Windows в режиме повышенной безопасности». После этого в списке, находящемся слева, нужно кликнуть на «Правила для входящих подключений».

Шаг 5

Обращаем свое внимание на список справа, где, как нетрудно догадаться, следует выбрать категорию «Создать правило». Такая процедура откроет «Мастер создания нового правила»

Шаг 6. Мастер должен спросить Вас о типе создаваемого правила. В данном случае, нужно выбрать «Для порта», продолжив создание кнопкой «Далее».

Шаг 7. Следующим вопросом будет, соответственно, номер создаваемого порта (либо диапазон). Нужно вводить номер в ячейке под названием «Определенные локальные порты»

Важно, что если нужен именно диапазон, то использовать необходимо дефис. Кликаем «Далее»

Шаг 8. Разрешаем подключение и нажимаем опять «Далее».

Шаг 9. Для каких профилей нужно использовать создаваемый порт? В данном случае, выделяем три: Публичный, Доменный и Частный.

Шаг 10. Нужно задать имя нового порта и, по желанию, определенное описание. В заключение, подтверждаем создание правила кнопкой «Готово». Увидеть только что созданное правило можно в самом начале всего списка.

Альтернативное решение проблемы

Если вам необходимо установить дополнительное оборудование, которое нуждается в COM-порте, можно также использовать модуль с этим разъемом. Он просто устанавливается непосредственно в компьютере и подключается к материнской плате. После установки платы COM-портов или PIC-COM (второе название) ей также присваивается номер. Как и в предыдущих случаях, это номер можно изменить, если возникнут проблемы. Если вы не уверены, что сможете правильно установить эту плату в компьютер, лучше воспользуйтесь помощью профессионалов, чтобы не навредить другому оборудованию.

К сожалению, это решение можно использовать только для компьютеров. В ноутбуках дополнительную плату установить довольно сложно, и это требует дополнительных затрат. Во-первых, сам корпус не позволит установить дополнительный модуль, а во-вторых, он может не поддерживаться вашей моделью. Поэтому в случае с ноутбуком следует использовать USB-COM-переходник.

Контакты и провода

Старые компьютеры используют 25-ти контактные разъемы, но только 9 контактов реально задействовано на сегодняшний день. Каждый из 9-ти контактов соединен обычно с проводом. за исключением двух проводов для передачи и приема данных, остальные используются для контроля и земли. Напряжение на каждом из контактов и проводов измеряется относительно сигнальной земли. Поэтому минимальное количество проводом для двунаправленной передачи данных — 3. В редких случаях для работы может хватитть и двух проводов (без сигнальной земли), однако это может привести к низкой производительности, и иногда к ошибкам при передаче данных.

Остается еще несколько проводов, которые предназначены только для управления (контроля) и не используются для передачи данных. Все эти сигналы могли бы передаваться по одной линии, но вместо этого, для выделены отдельные провода. Некоторые (или все вместе) эти сигнальные линии называются «линии состояния модема». Линии состояния могут находиться в одном из двух состояний установленном (включено) +12 вольт или сброшенном (выключено) -12 вольт. Одни из этих проводов сигнализируют компьютеру о том, что нужно прекратить передачу данных через последовательный порт. Другие в свою очередь сигнализируют устройству, подключенному к последовательному порту, прекратить передачу даных в компьютер. Если подключенно устройство это модем, то оставшиеся линии могут указывать модуме на то, что нужно занять телефонную линию или сигнализируют компьютеру о том, что соединение было установлено или что есть звонок на телефонной линии (значит кото-то соединиться с компьютером). Смотрите раздел Контакты и сигналы с более полной информацией.

Распиновка разъёмов COM-порта

Распиновка никакой связи не имеет с распинанием, хотя, как проводки, вольно бегущие в одной оболочке кабеля, разбирают на стороны и жёстко припаивают к своим штырькам, сходно с распинанием. Штырёк, по-английски «pin», булавка, поэтому и распиновка, слово уже это компьютерно-связистский «проанглийский» жаргонизм. Означает — распайка проводов по штырькам на разъёме.

Форма разъёма, порядок проводков (штырьков) в нём, назначение каждого штырька, а также номиналы напряжений и смысл сигналов в каждом — это часть интерфейса. Обычно вся эта информация собирается в отдельный документ, называемый спецификацией порта. Такая простая и понятная табличка на одну страницу. В других разновидностях интерфейсов что-то такое может называться «протоколом». А здесь ещё просто называют «распиновкой».

Плата Arduino Uno

Слово Uno переводится с итальянского языка, как «один». Устройство названо в связи с началом выпуска Arduino 1.0.

Другими словами, Uno является эталонной моделью для всей платформы типа Arduino. Это последнее устройство в серии плат USB, доказавшее свою эффективность и проверенное временем.

Arduino Uno создано на микроконтроллере типа ATmega 328 (datasheet).

Его состав следующий:

  • количество цифровых входов и выходов составляет 14 (а шесть из них имеется возможность использовать как выходы ШИМ);
  • число аналоговых входов составляет шесть;
  • 16 МГц – кварцевый резонатор;
  • имеется разъём для питания;
  • есть разъём, предназначенный для ICSP-программирования внутри самой схемы;
  • присутствует кнопка для сброса.

Крайне важно отметить, что отличительной особенностью всех новых плат arduino является использование для интерфейсов USB–UART микроконтроллера типа ATmega 16U2 (или ATmega 8U2 в версиях R1, R2) вместо устаревшей микросхемы типа FTDI. Плата Uno по версии R2 снабжается дополнительным подтягивающим к земле резистором на линии HWB применяемого микроконтроллера

Плата Uno по версии R2 снабжается дополнительным подтягивающим к земле резистором на линии HWB применяемого микроконтроллера.

Распиновка выглядит следующим образом:

  1. Последовательный интерфейс использует шины №0 (RX – получение данных), №1 (TX – передача данных).
  2. Для внешнего прерывания используются выводы №2, №3.
  3. Для ШИМ используются выводы за номерами 3,5, 6, 9, 10, 11. Функция analog Write обеспечивает разрешение в 8 бит.
  4. Связь посредством SPI: контакты №10 (SS), №11 (MOSI), №12 (MISO), №13 (SCK).
  5. Вывод №13 запитывает светодиод, который загорается при высоком потенциале.
  6. Uno оснащена 6 аналоговыми входами (A0 – A5), которые имеют разрешение в 10 бит.
  7. Для изменения верхнего предела напряжения используется вывод AREF (функция analog Reference).
  8. Связь I2C (TWI, библиотека Wire) осуществляется через выводы №4 (SDA), №5 (SCL).
  9. Вывод Reset – перезагрузка микроконтроллера.

Сигналы могут иметь другое значение

Только 3 контакта из 9 имеют строго определенное значение: передача, прием и земля. Это аппаратные линии и вы не можете повлиять изменить из предназначение. Но все другие сигнальные линии управляются программно и могут быть (или подразумевается что могут) в большинстве своем другого назначения. Однако они могут прнимать только два состояния: высокое (установленное) (+12 вольт) и низкое (сброшенное) (-12 вольт). Установленное состояние это «включено» и сброшенное состояние это «выключено». Для примера, Advanced Serial Port Monitor (или точнее пользователь программы) может управлять сигналом DTR, в аппаратная часть в свою очередь подает на него напряжение 12 вольт с той или иной полярностью. Модем (или другое устройство) которое принимает сигнал DTR может интерпретировать его по-разному. В одном случае модем (в зависимости от модели и прошивки) может может занять телефонную линию если сигнал DTR сброшен. В другом случае модем проигнорировать сигнал DTR в сброшенном состоянии.

Это применимо ко всем 6-ти сигнальным линиям. Аппаратная часть только посылает и принимает эти сигналы, но действие зависит (если оно вообще есть) от программы (например, Advanced Serial Port Monitor) и конфигурации того оборудоввания, которое вы подключаете к последовательному порту.

Последовательные порты COM

COM-порты компьютера, это связь компьютерного комплекса «дальнего действия». В отличие от параллельных портов и кабелей, ведших на «тяжёлые» устройства — принтеры, сканеры, Com-порты присоединяли к компьютеру «лёгкие» юниты — мышка, модем. Первые межкомьютерные интерфейсы (через «нуль-модем»). В дальнейшем, когда распространились локальные сети, а мыши стали подключаться по такому же разъёму, как и клавиатура — port ps/2 (пэ-эс-пополам) — com port как-то был подзабыт.

Возрождение пришло с появлением последовательного интерфейса USB. Вот и получилось движение по кругу. Теперь на USB можно встретить, кроме флешек, и мыши USB-шные, и USB-шные «клавы». Принтеры, сканеры модемы — вся периферия теперь на USB, забыла уже о толстых и солидных параллельных LTP — кабелях, которые необходимо было в обязательном порядке прикручивать с каждой стороны на 2 болта. А проводочков-то в этих USB — два сигнальных (собственно, канал один, один прямой сигнал, другой тот же — инверсный) и два — питание и корпус.

Прежних последовательных портов COM было несколько. Самый маленький — и самый востребованный 9-контактный порт (D9), к которому подключали большую чать устройств: мыши, модемы, нуль-модемные кабели. Контакты располагались в два ряда, 5 и 4 в ряд, получалась трапеция. Поэтому и название D9. На «маме» нумерация шла слева направо и сверху вниз:

1 2 3 4 5

6 7 8 9

На «папе» справа налево:

5 4 3 2 1

9 8 7 6

Далее в табличке указаны официальные параметры работы COM порта. Написано, максимальная длина кабеля — 15 м., хотя умудрялись протянуть и на 100 м.

Скорость передачи 115 Кбит/с (максимум)
Расстояние передачи 15 м (максимум)
Характер сигнала несимметричный по напряжению
Количество драйверов 1
Количество приемников 1
Схема соединения Полный дуплекс, от точки к точке

Распайка COM-порта, port RS232, 9 контактов.

Обозначение Тип Описание
1 DCD Вход Высокий уровень от модема, когда он принимает несущую модема-партнёра
2 RxD Вход Входящие импульсы данных
3 TxD Выход Исходящие импульсы данных
4 DTR Выход Высокий уровень (+12В) показывает готовность компьютера к приёму данных. Подключённая мышь использовала этот контакт как источник питания
5 GND Общий Земля
6 DSR Вход Готовность к передаче данных устройством
7 RTS Выход Ответная готовность устройства — партнёра
8 CTS Вход Готовность к приёму данных от партнёра
9 RI Вход Сигнал информирования компьютера о входящем звонке, поступившим на модем из линии связи
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector