Управление нагрузкой через usb

Управление электрическими цепями через USB

Автор: xkp, x-k-p@mail.ru
Опубликовано 01.09.2014
Создано при помощи КотоРед.

Многие из нас наверно хотели бы управлять электрическими цепями через компьютер. А что? Неплохо было бы. Представь, звонит тебе друг, говорит: «Через 20 мин буду», тут проходит 20 минут, звонок в двери, но как не хочется вставать из-за компьютера, идти открывать двери и т.д. А представь иную ситуацию: звонок в двери, тут у тебя на мониторе выползает сообщение типа «У Вас гости», ты нажимаешь кнопку на компьютере – открывается магнитный замок на дверях, и ты орешь на весь дом: «Заходи», или тебе нужно включить электрочайник, свет или еще что то. В наше время это уже не фантастика, а вполне реалистично, только вот из-за плохой экономики далеко не каждый может позволить себе даже самый простейший «смарт-хаус», но если есть желание и прямые руки, то можно запросто сделать управление электрическими цепями через ПК.

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

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

Итак, из чего же мы будем его делать? Те, кто интересовался данным вопросом, наверно уже слышали о модуле Ke-USB24A.

Описание:

Модуль Ke-USB24A предназначен для сопряжения внешних цифровых и аналоговых устройств, датчиков и исполнительных механизмов с компьютером через шину USB. Определяется как дополнительный (виртуальный) COM порт. Модуль имеет 24 дискретные линии ввода/вывода (либо лог. 0 либо лог. 1) с возможностью настройки направления передачи данных (вход/выход) и встроенный 10-ти разрядный АЦП. Для управления модулем предусмотрен набор текстовых команд управления (KE – команды).

  • интерфейсный модуль для сопряжения по шине USB
  • определяется ОС Windows/Linux как виртуальный COM порт
  • не требует дополнительных схемных элементов, сразу готов к работе
  • 24 дискретные линии ввода/вывода с возможностью независимой настройки направления передачи данных (вход/выход) и сохранения настроек в энергонезависимой памяти модуля
  • встроенный 10-ти разрядный АЦП с гарантированной частотой дискретизации до 400 Гц.
  • динамический диапазон напряжения входного аналогового сигнала для АЦП от 0 до 5 В.
  • набор готовых текстовых команд управления высокого уровня (KE – команды)
  • удобный форм-фактор в виде модуля с DIP-колодкой и разъемом USB-B
  • возможность питания как от шины USB, так и от внешнего источника питания (режим выбирается джампером на плате)
  • возможность сохранения данных пользователя в энергонезависимой памяти модуля (до 32 байт)
  • возможность изменения строкового дескриптора USB устройства
  • каждый модуль имеет уникальный серийный номер доступный программно
  • поддержка ОС Windows 2000, 2003, XP 32/64 bit, Vista 32/64 bit и Windows 7 32/64 bit
  • поддержка OS Linux

Вроде бы это то, что нам нужно, НО… цена этого чуда начинается от $40. Наверно у вас уже пропало желание его покупать.

Давайте лучше сами соберем подобный модуль, только чтобы он был доступный даже голодному студенту!

Из обязательных критериев: дешевизна и легко доступность компонентов, простота сборки.

В качестве микроконтроллера возьмем широко распространенный ATmega8 (без индекса L в конце). Характеристики нашего модуля будут такие:

  • Подключение к ПК через USB.
  • определяется ОС Windows как USB H >Почему я выбрал именно H >

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

Ну и в результате получилось вот что:

Теперь разберемся, что куда будем подключать.

  1. USB – Порт. Думаю, его все знают.
  2. Индикатор питания.
  3. Кнопка сброса (перезагрузка).
  4. Логический вход 1.
  5. Логический вход 2.
  6. Логический вход 3.
  7. Логический вход 4.
  8. Логический вход 5.
  9. Логический вход 6.
  10. Логический вход 7.
  11. Вход АЦП.
  12. Вход для подключения ИОН.
  13. Этот контакт подключен к питанию устройства. Замкните перемычкой 12 и 13 контакты, чтобы напряжение ИОНа было равно напряжения питания.
  14. Логический выход 1.
  15. Логический выход 2.
  16. ШИМ выход 1.
  17. ШИМ выход 2.
  18. Логический выход 3.
  19. Логический выход 4.
  20. Логический выход 5.
  21. Логический выход 6.
  22. Логический выход 7.

Что такое GND?

Даже начинающий радиолюбитель знает, что такое GND, но некоторым людям это кажется страшным буквами. GND – это, так сказать, общий контакт. Его еще называют землей и массой. Провод обычно черного цвета (иногда белого или еще, какого нить). GND также подключается к металлическому корпусу устройства. На плате в большинстве случаев все свободное место заполняет GND в виде больших полигонов. На нашем модуле есть полигоны в виде сеточки, они так же соединяются с корпусом USB – разъема.

Программа для микроконтроллера.

Так как в статье я хочу рассказать, как управлять цепями через USB с помощью готового модуля, то я не буду объяснять, как работает программа микроконтроллера, снизу можете скачать исходники и посмотреть, там много комментов. Здесь я напишу просто об идентификаторах устройства.

Итак, в исходниках находится файл usbconfig.h, в нем есть строки

#define USB_CFG_VENDOR_ID 0x10, 0x00

#define USB_CFG_DEVICE_ID 0x01, 0x00

#define USB_CFG_VENDOR_NAME_LEN 17

#define USB_CFG_DEVICE_NAME_LEN 11

Первые две строчки – это ID устройства и ID продукта, такие есть у каждого USB устройства, только в этом файле указывается сначала младший байт, потом старший, в программе под компьютер – наоборот. Дальше идет имя производителя (вендора) и название устройства, также указывается длина строки в байтах. Программа ПК сначала будет искать устройств по ID и потом, среди найденных, будет искать по имени.

Прошивка устройства.

В скачанных файлах в папке MCUusb_bootloader найдите файл main.hex – это usb-bootloader, его нужно залить в МК с помощью внешнего программатора. После заливки также нужно правильно установить фьюзы, в окне программатора STK500 должно выглядеть так:

Читайте также:  Msi b350m mortar arctic

Если вы пользуетесь другой программой, то можете просто ввести значения фьюз-битов HIGH и LOW (смотрите на скрин).

После удачной прошивки, можно попробовать прошить устройство через бутлоадер. Как он работает? При включении МК (просто при подаче питания, или после ресета) сразу запускается бутлоадер, он проверяет условие, если оно истинно, то запускается инициализация бутлоадера (компьютер при этом находит устройство). В качестве условия у нас будет «Логический вход 1 = 0″, то есть, чтобы запустить бутлоадер, нужно замкнуть Логический вход 1 на GND и нажать на устройстве кнопку RESET, в диспетчере устройство должно появиться новое HID устройство, так же не требующее драйверов:

Такс, теперь в папке MCUUSB_Controldefault запускаем файл boot.bat, должно выскочить окошко, в котором будут бегать циферки:

Если окно сразу же закрылось, тогда вы сделали что то, не правильно. Если же все ок, тогда внешний программатор для этого устройства Вам уже не понадобится. Теперь можете отключить Логический вход 1 от GND. И на всякий случай, нажмите RESET. В диспетчере устройств так же должно появиться HID устройство (компьютер напишет, что найдено новое). Убедитесь, что в диспетчере появилось именно это устройство.

Хост – это то, что будет управлять устройством, в нашем случае – компьютер. Управление устройством с ПК я опишу более подробно.

Для программистов Delphi написать программу управления HIDом не составит проблем, так как в интернете куча информации. А вот программистам C++ Builder не все так сладко, но, как оказалось, не так все и плохо. В интернете я нарыл библиотеку hidlibrary.h, вот с ее помощью мы будет работать с HID устройством.

Скачайте исходники и запустите USB Control.cbproj (C++ Builder 2010).

В файле hidlibrary.h в самом верху есть строка

Да-да, это те же самые ID, которые мы указывали в usbconfig.h. Если будете менять VID and PID, то не забывайте отредактировать эту строку. Кроме данной строки в файле hidlibrary.h нам больше ничего редактировать не нужно, можете его закрыть.

Открываем main.cpp, вверху указан относительный адрес к файлу usbconfig.h», это нужно, чтобы библиотека HID знала имя вендора и продукта.

Создадим форму, на форме будет один CheckListBox для управления логическими выходами, 2 ScrollBar для управления ШИМ каналами, один ListBox для отображения логических входов, один Label для отображения состояния АЦП и один таймер. Должно получиться вот такое:

Переименуйте СкрулБары в ScrollBar_PWM1 и ScrollBar_PWM2, в их свойствах установите Max=1023.

#pragma pack (push, 1)

unsigned char logical_outputs;

unsigned char logical_inputs;

unsigned char ADC_DATA;

unsigned short int PWM1;

unsigned short int PWM2;

struct status_t DeviceStatus;

#pragma pack (pop)

#pragma pack нужна чтобы компилятор не выравнивал структуру. В logical_outputs хранятся состояние всех логических выходов, в побитном режиме, то есть, первый бит хранит состояние первого выхода, второй – второго и так до седьмого. Аналогично logical_inputs хранит состояние логических входов. В ADC_DATA хранится состояние АЦП, минимальное значение 0, максимальное – 255. В PWM1 хранится состояние первого ШИМ выхода (плавная регулировка напряжения), в PWM2 – состояние второго, минимальное значение 0, максимальное – 1023.

В программе ПК нужно считать с микроконтроллера эту структуру, ну и далее обработать принятые данные. Чтобы установить новые значения выходов, нужно сначала записать в структуру новые значения, а потом отправить измененную структуру на микроконтроллер. При установке новых значений нужно редактировать только первый, 4 и 5 элементы, редактирование остальных двух не даст никакого эффекта.

Управление электрическими цепями через USB

Автор: xkp, x-k-p@mail.ru
Опубликовано 01.09.2014
Создано при помощи КотоРед.

Многие из нас наверно хотели бы управлять электрическими цепями через компьютер. А что? Неплохо было бы. Представь, звонит тебе друг, говорит: «Через 20 мин буду», тут проходит 20 минут, звонок в двери, но как не хочется вставать из-за компьютера, идти открывать двери и т.д. А представь иную ситуацию: звонок в двери, тут у тебя на мониторе выползает сообщение типа «У Вас гости», ты нажимаешь кнопку на компьютере – открывается магнитный замок на дверях, и ты орешь на весь дом: «Заходи», или тебе нужно включить электрочайник, свет или еще что то. В наше время это уже не фантастика, а вполне реалистично, только вот из-за плохой экономики далеко не каждый может позволить себе даже самый простейший «смарт-хаус», но если есть желание и прямые руки, то можно запросто сделать управление электрическими цепями через ПК.

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

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

Итак, из чего же мы будем его делать? Те, кто интересовался данным вопросом, наверно уже слышали о модуле Ke-USB24A.

Описание:

Модуль Ke-USB24A предназначен для сопряжения внешних цифровых и аналоговых устройств, датчиков и исполнительных механизмов с компьютером через шину USB. Определяется как дополнительный (виртуальный) COM порт. Модуль имеет 24 дискретные линии ввода/вывода (либо лог. 0 либо лог. 1) с возможностью настройки направления передачи данных (вход/выход) и встроенный 10-ти разрядный АЦП. Для управления модулем предусмотрен набор текстовых команд управления (KE – команды).

  • интерфейсный модуль для сопряжения по шине USB
  • определяется ОС Windows/Linux как виртуальный COM порт
  • не требует дополнительных схемных элементов, сразу готов к работе
  • 24 дискретные линии ввода/вывода с возможностью независимой настройки направления передачи данных (вход/выход) и сохранения настроек в энергонезависимой памяти модуля
  • встроенный 10-ти разрядный АЦП с гарантированной частотой дискретизации до 400 Гц.
  • динамический диапазон напряжения входного аналогового сигнала для АЦП от 0 до 5 В.
  • набор готовых текстовых команд управления высокого уровня (KE – команды)
  • удобный форм-фактор в виде модуля с DIP-колодкой и разъемом USB-B
  • возможность питания как от шины USB, так и от внешнего источника питания (режим выбирается джампером на плате)
  • возможность сохранения данных пользователя в энергонезависимой памяти модуля (до 32 байт)
  • возможность изменения строкового дескриптора USB устройства
  • каждый модуль имеет уникальный серийный номер доступный программно
  • поддержка ОС Windows 2000, 2003, XP 32/64 bit, Vista 32/64 bit и Windows 7 32/64 bit
  • поддержка OS Linux
Читайте также:  Nvidia shield tv box

Вроде бы это то, что нам нужно, НО… цена этого чуда начинается от $40. Наверно у вас уже пропало желание его покупать.

Давайте лучше сами соберем подобный модуль, только чтобы он был доступный даже голодному студенту!

Из обязательных критериев: дешевизна и легко доступность компонентов, простота сборки.

В качестве микроконтроллера возьмем широко распространенный ATmega8 (без индекса L в конце). Характеристики нашего модуля будут такие:

  • Подключение к ПК через USB.
  • определяется ОС Windows как USB H >Почему я выбрал именно H >

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

Ну и в результате получилось вот что:

Теперь разберемся, что куда будем подключать.

  1. USB – Порт. Думаю, его все знают.
  2. Индикатор питания.
  3. Кнопка сброса (перезагрузка).
  4. Логический вход 1.
  5. Логический вход 2.
  6. Логический вход 3.
  7. Логический вход 4.
  8. Логический вход 5.
  9. Логический вход 6.
  10. Логический вход 7.
  11. Вход АЦП.
  12. Вход для подключения ИОН.
  13. Этот контакт подключен к питанию устройства. Замкните перемычкой 12 и 13 контакты, чтобы напряжение ИОНа было равно напряжения питания.
  14. Логический выход 1.
  15. Логический выход 2.
  16. ШИМ выход 1.
  17. ШИМ выход 2.
  18. Логический выход 3.
  19. Логический выход 4.
  20. Логический выход 5.
  21. Логический выход 6.
  22. Логический выход 7.

Что такое GND?

Даже начинающий радиолюбитель знает, что такое GND, но некоторым людям это кажется страшным буквами. GND – это, так сказать, общий контакт. Его еще называют землей и массой. Провод обычно черного цвета (иногда белого или еще, какого нить). GND также подключается к металлическому корпусу устройства. На плате в большинстве случаев все свободное место заполняет GND в виде больших полигонов. На нашем модуле есть полигоны в виде сеточки, они так же соединяются с корпусом USB – разъема.

Программа для микроконтроллера.

Так как в статье я хочу рассказать, как управлять цепями через USB с помощью готового модуля, то я не буду объяснять, как работает программа микроконтроллера, снизу можете скачать исходники и посмотреть, там много комментов. Здесь я напишу просто об идентификаторах устройства.

Итак, в исходниках находится файл usbconfig.h, в нем есть строки

#define USB_CFG_VENDOR_ID 0x10, 0x00

#define USB_CFG_DEVICE_ID 0x01, 0x00

#define USB_CFG_VENDOR_NAME_LEN 17

#define USB_CFG_DEVICE_NAME_LEN 11

Первые две строчки – это ID устройства и ID продукта, такие есть у каждого USB устройства, только в этом файле указывается сначала младший байт, потом старший, в программе под компьютер – наоборот. Дальше идет имя производителя (вендора) и название устройства, также указывается длина строки в байтах. Программа ПК сначала будет искать устройств по ID и потом, среди найденных, будет искать по имени.

Прошивка устройства.

В скачанных файлах в папке MCUusb_bootloader найдите файл main.hex – это usb-bootloader, его нужно залить в МК с помощью внешнего программатора. После заливки также нужно правильно установить фьюзы, в окне программатора STK500 должно выглядеть так:

Если вы пользуетесь другой программой, то можете просто ввести значения фьюз-битов HIGH и LOW (смотрите на скрин).

После удачной прошивки, можно попробовать прошить устройство через бутлоадер. Как он работает? При включении МК (просто при подаче питания, или после ресета) сразу запускается бутлоадер, он проверяет условие, если оно истинно, то запускается инициализация бутлоадера (компьютер при этом находит устройство). В качестве условия у нас будет «Логический вход 1 = 0″, то есть, чтобы запустить бутлоадер, нужно замкнуть Логический вход 1 на GND и нажать на устройстве кнопку RESET, в диспетчере устройство должно появиться новое HID устройство, так же не требующее драйверов:

Такс, теперь в папке MCUUSB_Controldefault запускаем файл boot.bat, должно выскочить окошко, в котором будут бегать циферки:

Если окно сразу же закрылось, тогда вы сделали что то, не правильно. Если же все ок, тогда внешний программатор для этого устройства Вам уже не понадобится. Теперь можете отключить Логический вход 1 от GND. И на всякий случай, нажмите RESET. В диспетчере устройств так же должно появиться HID устройство (компьютер напишет, что найдено новое). Убедитесь, что в диспетчере появилось именно это устройство.

Хост – это то, что будет управлять устройством, в нашем случае – компьютер. Управление устройством с ПК я опишу более подробно.

Для программистов Delphi написать программу управления HIDом не составит проблем, так как в интернете куча информации. А вот программистам C++ Builder не все так сладко, но, как оказалось, не так все и плохо. В интернете я нарыл библиотеку hidlibrary.h, вот с ее помощью мы будет работать с HID устройством.

Скачайте исходники и запустите USB Control.cbproj (C++ Builder 2010).

В файле hidlibrary.h в самом верху есть строка

Да-да, это те же самые ID, которые мы указывали в usbconfig.h. Если будете менять VID and PID, то не забывайте отредактировать эту строку. Кроме данной строки в файле hidlibrary.h нам больше ничего редактировать не нужно, можете его закрыть.

Читайте также:  Как ввести код с картинки правильно

Открываем main.cpp, вверху указан относительный адрес к файлу usbconfig.h», это нужно, чтобы библиотека HID знала имя вендора и продукта.

Создадим форму, на форме будет один CheckListBox для управления логическими выходами, 2 ScrollBar для управления ШИМ каналами, один ListBox для отображения логических входов, один Label для отображения состояния АЦП и один таймер. Должно получиться вот такое:

Переименуйте СкрулБары в ScrollBar_PWM1 и ScrollBar_PWM2, в их свойствах установите Max=1023.

#pragma pack (push, 1)

unsigned char logical_outputs;

unsigned char logical_inputs;

unsigned char ADC_DATA;

unsigned short int PWM1;

unsigned short int PWM2;

struct status_t DeviceStatus;

#pragma pack (pop)

#pragma pack нужна чтобы компилятор не выравнивал структуру. В logical_outputs хранятся состояние всех логических выходов, в побитном режиме, то есть, первый бит хранит состояние первого выхода, второй – второго и так до седьмого. Аналогично logical_inputs хранит состояние логических входов. В ADC_DATA хранится состояние АЦП, минимальное значение 0, максимальное – 255. В PWM1 хранится состояние первого ШИМ выхода (плавная регулировка напряжения), в PWM2 – состояние второго, минимальное значение 0, максимальное – 1023.

В программе ПК нужно считать с микроконтроллера эту структуру, ну и далее обработать принятые данные. Чтобы установить новые значения выходов, нужно сначала записать в структуру новые значения, а потом отправить измененную структуру на микроконтроллер. При установке новых значений нужно редактировать только первый, 4 и 5 элементы, редактирование остальных двух не даст никакого эффекта.

ATiny2313

Захаров Денис, Украина

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

Причина такого выбора очевидна – практически все контроллеры имеют аппаратные модули UART, с помощью которых можно передавать информацию при минимальном расходе ресурсов МК. Кроме того, существует множество хорошо зарекомендовавших себя программ, предназначенных для работы с COM-портом. Поскольку сигналы МК имеют уровни TTL, для согласования с интерфейсом RS-232 необходим преобразователь уровней. Часто его выполняют на основе доступной и популярной микросхемы MAX232.

Рисунок 1.

Представленное устройство (Рисунок 1) предназначено для управления приборами с помощью любого ПК, имеющего порт USB. Современные компьютеры и ноутбуки имеют по несколько таких портов. С помощью этого комплекса можно производить управление светом, телевизором и другими приборами. Исполняющие устройства не обязательно должны находиться в непосредственной близости от ПК.

Прибор состоит из вполне доступных и распространенных элементов. Обе микросхемы – микроконтроллеры ATtiny2313 семейства AVR. Первый контроллер подключен к USB-порту компьютера и выполняет функцию конвертора форматов USB-COM. Второй подключается к первому и все время сканирует команды, которые посылаются с ПК через терминальную программу Terminal v1.9b.

Подключенный к выводу 2 USB резистор R4 переводит устройство в низкоскоростной режим LS, позволяющий при обмене данными со скоростью 1.5 Мбит/с с помощью программы выпонять расшифровку посылок от ПК.

С помощью резисторов R2 и R3 происходит устранение переходных процессов. Конденсатор С5 блокирует импульсные помехи в цепи питания. Стабилитроны D1 и D2 необходимы для согласования логических уровней МК и USB входа ПК. Для безошибочной передачи данных между контроллерами частоты кварцевых резонаторов должны быть равны 12 и 4 МГц.
К выводам /RESET следует подключить подтягивающие резисторы, чтобы в дальнейшем избежать произвольного сброса МК из-за влияния помех и статических напряжений. В данной схеме все команды отображаются на светодиодах, подключенных к порту В. Чтобы управлять какими-либо устройствами, необходимо подключать выходы контроллера к реле (Рисунок 2).

Рисунок 2.

Собрать устройство можно на макетной плате, хотя лучше, все же, на полноценной печатной плате. Элементы можно разместить, например, так, как показано на Рисунке 3.

Рисунок 3.

Программа для микроконтроллера U1 разработана товарищем GetChiper в среде Bascom-AVR. Для работы с шиной USB использована библиотека swusb.LBX. С ее помощью выполняется программное декодирование USB протокола в режиме реального времени. Для работы устройства с ПК, нужно установить соответствующие драйверы, скопировав их на жесткий диск. При первом подключении устройство опознается и запросит драйвер. Далее нужно указать путь к папке с файлами, и все заработает.

Рисунок 4.

Программа микроконтроллера U2 была написана мною в среде AVRStudio на языке ассемблера. Блок-схема алгоритма работы МК представлена на Рисунке 4. Аппаратный модуль UART следует настроить на прерывание по завершению приема данных. Сам МК не будет выполнять ни одной функции, пока не наступит прерывание. Для снижения энергопотребления можно воспользоваться режимом sleep, но в данной конструкции этого делать не понадобилось. Как только из терминала ПК последуют команды, МК мгновенно перейдет к их сканированию. На данный момент контроллер поддерживает следующую систему команд:

-on1, on2, on3, on4, on5, on6, on7, on8 – команды установки портов в «лог. 1»;
-off1, off2, off3, off4, off5, off6, off7, off8 – команды установки портов в «лог. 0»;
-ser – установить все порты в активное состояние «лог. 1»;
-clr – сбросить все порты в состояние «лог.0».

После окончания ввода каждой команды необходимо нажимать Enter. Таким образом МК сможет определить конец команды и приступить к ее сканированию. На каждую верную команду контроллер будет отвечать «ok». Если ввести неверные данные, то в терминальную строку вернется «error». Пример выполнения команды показан на Рисунке 5.

Рисунок 5.

Версия прошивки 1.0. Выставлять фьюзы необходимо в соответствии с Рисунком 6. Разрабатывается следующая версия прошивки, где будет происходить самообучение МК и изменение систем команд в терминале.

Рисунок 6.

Программное обеспечение МК, виртуальная модель Proteus и драйвер для ПК – скачать
Протокол передачи данных между МК и ПК- скачать