Оглавление:

Адаптер Arduino PS / 2 на USB: 7 шагов (с изображениями)
Адаптер Arduino PS / 2 на USB: 7 шагов (с изображениями)

Видео: Адаптер Arduino PS / 2 на USB: 7 шагов (с изображениями)

Видео: Адаптер Arduino PS / 2 на USB: 7 шагов (с изображениями)
Видео: Драйвер для ардуино. Установка драйвера ch340 и первый запуск Ардуино для начинающих #2 2024, Сентябрь
Anonim
Адаптер Arduino PS / 2 - USB
Адаптер Arduino PS / 2 - USB
Адаптер Arduino PS / 2 - USB
Адаптер Arduino PS / 2 - USB

Вы когда-нибудь хотели использовать свою старую клавиатуру PS / 2 с ноутбуком или новым настольным ПК и обнаруживали, что у них больше нет портов PS / 2? А затем вместо того, чтобы покупать дешевый адаптер PS / 2-USB, как это сделал бы обычный человек, захотелось использовать ваш Arduino в качестве адаптера PS / 2-USB. Тогда вы попали в нужное место:)

Честное предупреждение, прежде чем мы перейдем к этому. Когда вы используете UNO / Mega в качестве устройства USB-HID (не ограничиваясь клавиатурой, это может быть даже мышь, джойстик и т. Д.), Вы временно теряете его функции как Arduino. Под этим я подразумеваю, что вы не можете использовать последовательную связь и не можете перепрограммировать ее через USB. Это потому, что мы будем перезаписывать прошивку на его микросхеме интерфейса USB (маленький парень возле USB-порта Atmega8U2 и 16U2 в зависимости от версии). Но не волнуйтесь, вы не можете фактически заблокировать свой UNO / Mega, делая это всегда обратимо.

Также случайно, если у вас есть Arduino, который уже имеет возможность USB-HID (Arduino Pro Micro или Leonardo и т. Д., Выполните поиск в Google), вы можете забыть, что это руководство когда-либо существовало, идите прямо сюда, чтобы спастись от мира проблем, просто шутя!

Запасы

  • Аппаратное обеспечение

    • Arduino UNO или Mega
    • Клавиатура PS / 2
    • При желании может пригодиться дополнительный Arduino или USB-программатор любого типа (USBasp и т. Д.).
  • Программное обеспечение

    • Atmel FLIP
    • PS2Key Расширенная библиотека для Arduino IDE

Шаг 1. Подключение и настройка

Подключение и настройка
Подключение и настройка
Подключение и настройка
Подключение и настройка
Подключение и настройка
Подключение и настройка
Подключение и настройка
Подключение и настройка

В зависимости от ситуации вы можете либо найти коммутационную плату, либо спасти старый порт от материнской платы (моя вторая попытка), либо, если вы чувствуете себя особенно капризным, вы можете даже полностью отрезать фиолетовый разъем и обнажить 4 провода (моя первая попытка) и подключите их к ООН.

Клавиатура _ Arduino

+ 5В (VCC) _ + 5В

ЗЕМЛЯ _ ЗЕМЛЯ

ЧАСЫ_PIN 2 **

ДАННЫЕ _ PIN3 *

* Вы можете изменить вывод DATA на любое желаемое, но не забудьте обновить скетч.

** ЧАСЫ должны быть подключены к контакту прерывания на Arduino, который может быть только PIN 2 или 3 (не забудьте обновить эскиз) на UNO. Для получения дополнительной информации и различных конфигураций платы вы можете проверить раздел комментариев примеров библиотеки PS2KeyAdvanced.

Шаг 2: Тестирование клавиатуры

Прежде чем приступить к работе, убедитесь, что все работает с клавиатурой и библиотекой.

Здесь я приложил модифицированную версию SimpleTest.ino из примеров библиотеки PS2KeyAdvanced с обновленными выводами часов и данных, а также представлением «make» и «break». Вот некоторые объяснения вывода.

  • Эта система скан-кода "сделать" и "сломать" и "Код", который представляет собой изолированный (c & 0xFF) скан-код нажатия или отпускания клавиши, играет важную роль в преобразовании PS / 2 в USB, и я рекомендую вам изучить два других примера, которые поставляются с библиотекой, чтобы лучше понять, планируете ли вы улучшить или изменить (переназначить ключи на разные макеты) окончательный эскиз. Также вы можете получить полный список скан-кодов PS / 2 из библиотеки, открыв файлы 'PS2KeyAdvanced.h' или 'PS2KeyCode.h' из '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • «Биты состояния» относятся к клавишам-модификаторам (Ctrl, Alt, Windows, Shift / Caps), и вы увидите, что с каждой дополнительной клавишей-модификатором это значение изменяется, в то время как основной «Код» обычной (немодифицирующей) клавиши не изменяется. Но в финальном наброске я проигнорировал этот метод и реализовал эти клавиши-модификаторы как простые нажатия клавиш (вы увидите, что эти клавиши-модификаторы также имеют скан-код «make» и «break» независимо от обычных клавиш, независимо от того, нажаты несколько клавиш или нет). потому что это упрощает работу с протоколом USB-HID.

Шаг 3. Предварительный просмотр преобразования PS / 2 в USB

Перед обновлением Atmega8U2 или 16U2 (UNO Rev3), чтобы идентифицировать нашу Arduino как USB-клавиатуру, мы должны убедиться, что все функции преобразования работают правильно и окончательный окончательный эскиз загружен, иначе будет очень сложно переписывать прошивку снова и снова между исходным файлом и шестнадцатеричным файлом USB-клавиатуры, чтобы вы могли загрузить правильный скетч. Это становится особенно актуальным, если у вас нет внешнего программатора, такого как USBasp или другой Arduino, для использования в качестве провайдера. Итак, здесь мы загрузим «DEBUG» версию финального скетча с удобочитаемым выводом (через последовательный монитор) для проверки.

Вывод, который вы видите, будет отформатирован таким образом, когда каждая клавиша будет отпущена, 00 00 00 00 00 00 00 00

Вот базовое объяснение ожидаемого результата,

Для каждого нового нажатия нескольких клавиш-модификаторов вы должны получать новую строку с разными значениями для 'xx'. Наконец, когда вы отпустите все клавиши-модификаторы, «xx» должно стать 00

хх 00 00 00 00 00 00 00

Для каждого нового многократного обычного нажатия клавиш (например, мы будем нажимать обе гипотетические клавиши a, b и c со значениями 'xx', 'yy' и 'zz' в этом порядке) вы должны получить непрерывное (не обязательно) новые строки вроде этого,

00 00 хх уу zz 00 00 00

когда вы отпускаете только клавишу b, выход должен измениться на,

00 00 хх 00 зз 00 00 00

и если вы нажмете новую клавишу d со значением 'nn', не отпуская клавишу a или b, ваш вывод должен измениться на,

00 00 хх нн зз 00 00 00

и, наконец, вернитесь к этому, когда все клавиши будут отпущены,

00 00 00 00 00 00 00 00

и, наконец, если вы нажмете Caps Lock, Num Lock или Scroll Lock, вы должны получить что-то вроде этого с несколькими строками одновременно,

00 00 хх 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Если все здесь происходит, вы готовы продолжить!

Шаг 4: Техническое объяснение

Техническое объяснение
Техническое объяснение
Техническое объяснение
Техническое объяснение

Если хотите, можете пропустить этот шаг. Это просто объяснение предыдущих выводов. Выходной 8-байтовый массив, который вы видели, отформатирован в соответствии с приведенным выше рис.1. Вы можете узнать больше об этом, а также о том, как записывается байт состояния клавиш-модификаторов, из этой вики о USB-HID. В основном то, что делает мой код, - это каждый раз, когда нажимается новая клавиша (протокол PS / 2 называет это `` make ''), он циклически перебирает последние 6 байтов массива, которые используются для обычных нажатий клавиш, и заполняет первые пустой байт, который он находит с соответствующим «скан-кодом HID» (показан на рис. 2. Также вы можете найти полный список в прикрепленном PDF-файле) для полученного «скан-кода PS / 2». И, наконец, когда соответствующий ключ будет выпущен (протокол PS / 2 называет это «разрывом»), код будет циклически проходить через текущий массив байтов и очищать только соответствующий байт.

Если вы следовали до этого момента, а также если вы прочитали страницу вики, вы увидите, что в этом методе есть небольшая проблема, обычно, когда ключ отпускается, в протоколе HID оставшиеся байты перестраиваются, чтобы избавиться от пустых байтов между оставшимися непустыми байтами. Но по какой-то причине, независимо от того, сколько способов я пробовал, я не мог заставить его работать так, как задумано, без случайной очистки ненужных байтов для нажатых клавиш. Если вы можете улучшить это, чтобы заставить его работать, оставьте комментарий. Хотя, в конце концов, эта проблема не влияет на функциональность клавиатуры, пока Arduino все еще регистрирует каждое нажатие клавиши независимо от порядка их нажатия (что не влияет ни на что в практическом использовании).

Шаг 5: загрузка окончательного эскиза

Поэтому, прежде чем вы наконец обновите прошивку Atmega8U2 или 16U2 (UNO Rev3), чтобы идентифицировать нашу Arduino как USB-клавиатуру, мы должны загрузить окончательный эскиз. После того, как вы загрузите это, если вы перейдете к последовательному монитору, вы увидите, что он печатает мусор при каждой новой нажатой клавише, это хорошее предзнаменование того, что все работает, как задумано, и мы можем перейти к последнему шагу. УРА!!!

Шаг 6: Обновление прошивки

Наконец, вы можете обновить прошивку вашего Arduino, чтобы зарегистрировать его как USB-клавиатуру. По этому поводу я не буду вдаваться в подробности, так как это сделает его слишком длинным.

  1. Следуйте этому руководству от arduino.cc о «Обновление Atmega8U2 и 16U2 на Uno или Mega2560 с использованием DFU», но вместо использования «Arduino-usbserial-uno.hex» используйте прикрепленный «Arduino-keyboard-0.3.hex»
  2. В FLIP не забудьте выбрать целевое устройство как Atmega8U2 или 16U2 в зависимости от вашей Arduino, а затем выбрать среду связи, выбрать USB и, наконец, загрузить правильный шестнадцатеричный файл перед тем, как выбрать запуск.
  3. Если вы столкнулись с ошибкой драйвера, перейдите в диспетчер устройств Windows и выберите поиск неизвестного драйвера в каталоге установки FLIP '\ Program Files (x86) Atmel \'
  4. Если вы сталкивались с ошибками при обновлении прошивки из FLIP несколько раз, закройте FLIP и запустите «Сброс настроек» из «Меню Пуск / FLIP», а затем перезапустите FLIP и выполните действия по настройке, прежде чем пытаться снова, это обычно работает для меня.
  5. Если вы хотите восстановить Arduino в исходное состояние, просто следуйте приведенному выше руководству arduino.cc до буквы без использования этого шестнадцатеричного файла.

Шаг 7. Наслаждайтесь ……

Наслаждаться……
Наслаждаться……

Теперь наслаждайтесь недавно преобразованной клавиатурой PS / 2 в USB…. P. S. Это руководство было полностью написано с внешней клавиатуры PS / 2, подключенной к моему ноутбуку через Arduino:)

Рекомендуемые: