Мини USB клавиатура на микроконтроллере

В данном проекте создается клавиатура на базе микроконтроллера, которая отправляет нажатия кнопок по USB и сопрягается с Windows приложением AutoHotKey, предназначенного для создания приложений и макросов.

AutoHotKey может использоваться с вашей оригинальной клавиатурой без необходимости дополнительной клавиатуры. Данное устройство не предназначено для всех, однако может применяться в следующих ситуациях:

  • Использование одной кнопки вместо нажатия комбинации горячих клавиш
  • Создание специальных контроллеров для игр и интерфейсов
  • Создание специальных программных задач, например, использование каждой кнопки для сохранения различных типов идентификатора файла в приложении.

Программное обеспечение AutoHotKey может назначать любое действие на нажатие кнопки:

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

Данный проект является полностью экспериментальным. Для выполнения проекта понадобятся знания в области разработки схем и программирования arduino. При использовании микроконтроллера вы можете обратиться к сайту trinket, однако информации там не очень много.

Шаг 1: Используемые компоненты

Материалы / компоненты:

  • Микроконтроллер Adafruit Trinket
  • Механический клавиатурный блок Mx Cherry
  • Небольшая печатная плата
  • Резисторы: 1кОм (x4 штуки), 100кОм (x2 штуки)
  • Припой
  • Проводники.

Инструменты:

  • Паяльник
  • Ножовка по металлу
  • Плоскогубцы.

Шаг 2: Модификация корпуса

В проекте используется клавиатурный блок mx cherry, но вы можете подобрать и другие устройства с несколькими переключателями: игровые контроллеры, цифровые блоки клавиатуры или просто переключатели, установленные на печатной плате.

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

Шаг 3: Сборка схемы

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

Установите все компоненты так, чтобы они располагались на своих местах и не выступали. Далее припаяйте микроконтроллер и резисторы на печатную плату и подключите кнопки.

Шаг 4: Код Trinket Arduino

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

Шаг 5: Код AutoHotKey

 SetTitleMatchMode, 2 Hotstring to enter time stamp in document ; F6 and F7 keys always have the same function regardless of the active program F6:: Run, "C:WindowsSysnativeSnippingTool.exe" ; opens snipping tool return #IfWinActive, Snipping Tool ; if snipping tool is open, the same button will close it F6::  { WinClose Snipping Tool } return #IfWinActive F7:: FormatTime, CurrentDateTime,, yyyyMMdd ; inserts the current date in a specified format SendInput %CurrentDateTime% return ; F8 and F9 keys function varies by the active program #IfWinActive, Program Manager ; functions if desktop is active F8:: run taskmgr.exe ; open task manager return F9:: IfWinExist Google Chrome ; open Chrome or maximize window if open already WinActivate, Google Chrome  else run "C:Program Files (x86)GoogleChromeApplicationchrome.exe" return #IfWinActive #IfWinActive, Chrome ; Chrome specific functions F8:: Send, ^+{Tab} ; go left a tab return F9:: Send, ^{Tab} ; go right a tab return #IfWinActive #IfWinActive ahk_class CabinetWClass ; windows explorer specific functions F8:: Send, !{Up} ; go up a folder level return F9:: Send, ^n ; opens a new window return #IfWinActive

Шаг 6: Внесение изменений

Использование отдельного usb-устройства позволит вам выполнять нажатие кнопок в соответствии с вашими предпочтениями.