Напевно, ті хто займаються розробкою та експлуатацією пристроїв сполучення з комп’ютером добре знайомі і LPT і COM портами – ще б пак, адже саме вони були до недавнього часу основними способами комунікації між зовнішньою схемою і комп’ютером. Однак, в даний момент часу ці порти постпенно ісхезают зі складу материнських плат сучасних комп’ютерів. Постає питання про перехід на шину USB. Крім купи переваг використання цієї шини вимагає набагато більше уксілій ніж наприклад, звичайний COM порт. Тепер необхідно програмувати USB мікроконтролер, займатися розробкою USB драйвера, істотно ускладнювати програмне забезпечення. Навіть використання HID пристрою не завжди є зручним – потрібно досить громіздка процедура роботи з пристроєм на стороні PC. Приклади для роботи з нею широко поширені для мови С + +. А що робити, якщо ми хочемо використовувати, наприклад, Java?

Якщо перед нами стоїть завдання управління зовнішніми пристроями, наприклад, ключами, реле і т.д. через шину USB цікавим ходом буде використання модуля Ke-USB24A. Він призначений для сполучення зовнішніх цифрових і аналогових пристроїв, датчиків і виконавчих механізмів з комп’ютером через шину USB. Модуль має 24 лінії введення / виводу з можливістю незалежної настройки напрямку передачі даних.

Однією з найцікавіших особливостей цього модуля є те, що при підключенні його до комп’ютера він визначається операційною системою як додатковий COM порт! Тобто якщо встановити для модуля драйвера (Вже готові, і доступні для скачування на сайті розробника) то в диспетчері пристроїв в розділі послідовних портів з’явиться новий COM порт. Саме через нього ми будемо спілкуватися з модулем.

Це означає що з програмною точки зору обмін інформацією між модулем і комп’ютером здійснюється через інтерфейс звичайного послідовного порту. Остання обставина істотно полегшує програмування, тому що немає необхідності в застосуванні додаткових динамічних бібліотек, складних інтерфейсів і безпосереднього спілкування з драйвером. Для написання власних програм управління модулем можливе застосування будь-якої мови / середовища програмування, що підтримують можливість роботи з COM портами. Можна використовувати C + +, Delphi, VisualBasic, Java і навіть вбудований в Excel мова VBA!

Також всередині модуля вже інтегрований 10-ти розрядний аналого-цифровий перетворювач (АЦП) з частотою дискретизації до 400 Гц. Також модуль має можливість збереження налаштувань напрямків ліній введення / виводу, дозволяє зберігати у своїй пам’яті дані користувача. Такж модуль дозволяє змінювати свій строковий дескриптор USB пристрою. Саме цей текст з’являється в Windows при підключенні нового USB пристрою. У Вас є можливість встановити і зберегти свій власний текст, який буде з’являтися при підключенні модуля до комп’ютера.

Як здійснюється управління модулем? Рішення теж вельми цікаво – використовуються текстові команди, на зразок тих, які застосовуються в управлінні модемами. Наприклад, щоб встановити високий рівень напруги (+5 В) на лінії введення / виведення під номером 14 необхідно в COM порт, асоційований з модулемм записати команду вигляду $KE,WR,14,1 , Щоб подати логічний нуль – $KE,WR,14,0 і т.д. Для далбнейшего ознайомлення з модулем рекомендую завантажити опис команд управління Ke-USB24A (скачати).

Познайомимося ближче з висновками модуля. Призначення і схема їхнього розташування показані на малюнку і в таблиці нижче.

Номер висновку Позначення Опис виведення
1, 32 + 5 В Якщо джампер JM1 встановлено – на виведенні встановлено напруга +5 В від шини USB (харчування модуля здійснюється від шини USB). Якщо джампер не встановлений, на даний висновок необхідно подати напругу + 5 В від зовнішнього джерела для живлення модуля Ke-USB24A (модуль фізично відключений від шини живлення USB).
2 Vadc Аналоговий вхід АЦП
3 I/O1 Лінія введення / виведення 1
4 I/O2 Лінія введення / виведення 2
5 I/O3 Лінія введення / виведення 3
6 I/O4 Лінія введення / виведення 4
7 I/O5 Лінія введення / виведення 5
8 I/O6 Лінія введення / виведення 6
9 I/O7 Лінія введення / виведення 7
10 I/O8 Лінія введення / виведення 8
11 I/O9 Лінія введення / виведення 9
12 I/O10 Лінія введення / виведення 10
13,14,15 NC Висновок не використовується (Not Connected)
16, 17 GND Земля
18 I/O11 Лінія введення / виведення 11
19 I/O12 Лінія введення / виведення 12
20 I/O13 Лінія введення / виведення 13
21 I/O14 Лінія введення / виведення 14
22 I/O15 Лінія введення / виведення 15
23 I/O16 Лінія введення / виведення 16
24 I/O17 Лінія введення / виведення 17
25 I/O18 Лінія введення / виведення 18
26 I/O19 Лінія введення / виведення 19
27 I/O20 Лінія введення / виведення 20
28 I/O21 Лінія введення / виведення 21
29 I/O22 Лінія введення / виведення 22
30 I/O23 Лінія введення / виведення 23
31 I/O24 Лінія введення / виведення 24

Тепер давайте перейдемо відразу до практичного використання модуля. Зберемо схему на основі модуля для управління зовнішніми навантаженнями через шину USB, наприклад, давайте будемо керувати світлодіодами, підключеними до ліній введення / виводу. Рекомендована схема від виробника представлена ​​нижче. Схема дуже проста – до ліній введення / виведення просто підключені світлодіоди. Всі світлодіоди «садяться» на загальний провід схеми – напрмер, висновок 16 модуля. Зверніть увагу, що якщо Ви хочете керувати болле потужними навантаженнями, наприклад, лампочками, реле або моторами Вам необхідно подбає про буферної схемою, тому що Ke-USB24A не витримає такого навантаження і перегорить. Світлодіоди можна підключати цілком спокійно.

Зі схемотехнікою розібралися – пора переходити до софту. Нам необхідна програма, яка могла б передавати дані через COM порт. Тут є кілька варіантів – можна використовувати вже готову програму, наприклад, HyperTerminal, що входить до складу будь-якої ОС Windows. Можна використовувати спеціальну термінальну програму KeTerm, рекомендовану розробником (для неї доступні вихідні коди на мові С + +, середовище розробки Microsoft Visual C + + 6.0). Завантажити її можна на сайті Kernelchip. І нарешті, найбільш цікавий варіант – написати свою програму. Це вельми просто, тому що нам будуть потрібні знання тільки з програмування COM порту – про програмування USB нам навіть згадувати не непотрібно.

Почнемо з HyperTerminal тому вона є в будь-якої версії Windows і завжди під рукою. Для її запуску виберіть Пуск -> Програми -> Стандартні -> Зв’язок -> HyperTerminal. Негайно ж запуститися майстер створення нового з’єднання з пропозицією вказати ім’я з’єднання. Вкажіть будь-яку назву, натисніть «OK». Наступним кроком необхідно вибрати COM порт через який необхідно встановити з’єднання. У списку вибираємо такий номер порту який був виділений Windows для модуля (можна подивитися в диспетчері пристроїв). Натисніть «OK». Далі майстер запропонує змінити настройки порту. Тут необхідно зробити важливе зауваження – такі параметри як швидкість, кількість бітів даних, бітів парності і інші настройки не мають жодного значення для модуля, тому що фактично дані передаються по шині USB. Можна сміливо залишити всі налаштування за замовчуванням. Натисніть «OK». Отже, з’єднання встановлюється. Далі настійно рекомендується змінити деякі налаштування в програмі для зручності роботи. У головній панелі програми натисніть на кнопку “Властивості”. У вікні, перейдіть на вкладку “Параметри” і натисніть на кнопку «Параметри ASCII …». Встановіть прапорці як на малюнку нижче. Зверніть увагу на перший прапорець. Синтаксис команд модуля вимагає щоб всі команди закінчувалися символом повернення каретки і переведення на новий рядок. Натисніть «OK».

Всі налаштування виконані. Можна приступати до роботи. Для початку відправимо модулю найпростішу команду $ KE – команду перевірки. Набираємо текст $ KE і натискаємо Enter. У відповідь ми отримуємо рядок # OK – це значить що модуль справний і готовий до роботи.

Ну а далі справа техніки – використовуємо команду $ KE, WR з потрібним номером лінії і необхідним значенням для запису. Посилаємо різні команди – кліпаємо світлодіодами.

На цьому я хотів би закінчити цю вступну статтю. Далі ми познайомимося з тим як керувати модулем з програм написаних на С + +, Delphi і навіть з EXcel. Познайомився з іншими корисними функціями модуля, наприклад АЦП.

Дмитро Іванов