Diy

Сделайте свои собственные кнопки быстрого доступа с Arduino

Сделайте свои собственные кнопки быстрого доступа с Arduino

Скромный Arduino может многое, но знаете ли вы, что он может эмулировать USB-клавиатуру? С помощью этой простой схемы вы можете объединить те, которые трудно запомнить длинные сочетания клавиш, в одну настраиваемую комбинацию клавиш. Вот конечный результат:

Никогда не использовал Arduino раньше? Ознакомьтесь с нашим руководством по первую очередь.

Что вам нужно

Части ярлыка Arduino
Вот что вам нужно, чтобы сделать этот проект:

  • 1 х Arduino Pro Micro.
  • Мгновенные кнопки или кнопки клавиатуры.
  • Резисторы 10 кОм.
  • Ассорти из соединительных проводов.
  • 1 х 220 Ом резисторы.
  • 1 х 5 мм (0,197 дюйма) светодиод.
  • 1 х 5 мм светодиодный держатель.

Вам понадобится очень специфическая Arduino для этого проекта. Я использую Pro Micro , так как они настолько малы и дешевы, что вам нужен Arduino с встроенным в процессор USB-Serial (Atmega32u4). Можно построить этот проект с другими Arduinos, такими как UNO или Nano, однако требуется много кропотливой работы, чтобы заново прошить биос и возиться, чтобы все заработало. Клоны других моделей Arduino обычно не работают вообще, но клон Pro Micro тоже подойдет.

Вам понадобится одна мгновенная кнопка, один резистор 10 кОм и соответствующий соединительный провод для каждой кнопки, которую вы хотите использовать. Я использую механические клавишные переключатели Cherry MX для фактических кнопок быстрого доступа, хотя любой переключатель подойдет, если он будет мгновенным, а не защелкивающимся.

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

План строительства

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

Выбор переключателя

Arduino Cherry MX

Существует несколько вариантов коммутаторов серии MX. Этот сайт представляет собой отличное введение, однако они сводятся к шуму и давлению. Некоторые модели требуют большего усилия для нажатия, а некоторые модели издают механический щелчок при нажатии. Я использовал Cherry MX Browns, которые не шумят при нажатии. Все они имеют одинаковые размеры, поэтому выбирайте любую понравившуюся вам модель (или смешивайте и подбирайте), не беспокоясь.

Разумеется, вам также понадобится приобрести некоторые заглавные буквы, и есть целый ряд нестандартных дизайнов на выбор — мы приобрели их у KeyboardCo в Великобритании.

Дело

Я напечатал это дело в 3D, и вы можете скачать файлы .STL из Thingiverse . Не беспокойтесь, если у вас нет 3D-принтера, вы все равно можете его построить. Многие веб-сайты предоставляют услуги 3D-печати, такие как 3D Hubs или Shapeways . Кроме того, это очень простой случай, вы можете сделать свой из пластика, плексигласа, дерева или даже картона. Если вы хотите быть по-настоящему экономным, Cherry MX продает набор тестеров / сэмплеров на Amazon ( Великобритания ). Вам понадобятся 4 болта M5 x 35 мм и 4 гайки M5. Конечно, вы можете заменить их подходящей альтернативой, которая у вас есть.

Если вы делаете свой собственный случай, есть одна важная деталь, которую вы должны знать: переключатели Cherry MX легко вставляются в их монтажные отверстия. Для них требуется квадратное монтажное отверстие 14 x 14 мм (0,551 дюйма), толщина пластины не должна превышать 1,5 мм (0,059 дюйма). Отойдите слишком далеко от этих размеров, и ваши переключатели могут больше не устанавливаться правильно.

Ярлык чехол
Корпус для 3D-печати состоит из двух частей: верхней и нижней. Вставьте переключатели Cherry MX в квадратные отверстия:

Ярлык Cherry MX Mount

Убедитесь, что вы правильно установили переключатели. На верхней части надписи «ЧЕРРИ», а на нижней — небольшая выемка. Вставьте 3 мм светодиод в этот маленький слот:

Ярлык Cherry MX LED

Вы можете обнаружить, что светодиоды лучше всего смотрятся «вверх ногами». Это было в случае с клавишными колпачками, которые я использовал, и это никак не влияет на переключатели.

Теперь у вас должно быть девять переключателей с 9 светодиодами. Нет необходимости вклеивать какие-либо из этих частей. Припой удерживает светодиоды, а трение удерживает переключатели.

Ярлык Cherry MX All

Затем, привинтите крепление светодиода (пока оставьте светодиод снятым). Вы закончите сборку корпуса позже, как только схема будет построена.

Схема

Эта схема построена на картоне. Это отлично подходит для построения полупостоянных цепей без затрат на печатную плату (PCB). Это просто кусок стекловолокна с медными гусеницами, идущими параллельно в одном направлении. Эти треки можно паять, а также вырезать. Разрезать дорожку можно с помощью специального инструмента или небольшого сверла.

Не слишком уверен в пайке? Посмотрите на эти простые проекты. первую очередь.

Вот схема макета (исключая концевые отведения):

Arduino Сокращенная доска

Убедитесь, что вы сократили следы под резисторами и Arduino. Так как читать схему на плате может быть очень сложно, вот макетная версия:

Ардуйно ярлык макет

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

Сочетание клавиш

Это должно аккуратно вписаться в нижней части корпуса:

Сочетание клавиш в коробке

Убедитесь, что дорожки движутся вертикально.

Подключите анод ( длинная ножка, положительный ) светодиода к резистору 200 Ом, а затем к +5 В. Подключите катод ( короткая ножка, отрицательный ) к земле. Накройте ножки термоусадочной трубкой, а затем вставьте держатель в светодиод. Нет необходимости в каком-либо клее, однако ваш светодиодный держатель может быть не плотного прилегания, поэтому вам, возможно, придется адаптировать эти инструкции.

Светодиодный индикатор состояния ярлыка

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

Теперь пришло время спаять все светодиоды для клавишных колпачков. Они используются исключительно для того, чтобы клавиши светились, поэтому вы можете пропустить их, если хотите, и их не нужно подключать к цифровому выводу, только для питания. Соедините все аноды вместе и все катоды вместе. Учитесь на моей ошибке — это гораздо проще сделать, прежде чем подключать коммутаторы! Подсоедините аноды к +5 В через резистор 220 Ом, а катоды заземлите. Эти светодиоды подключены параллельно. Вот схема только для этих светодиодов:

Сочетание кнопок светодиодов цепи

Используйте маленький кусочек термоусадочной трубки, чтобы закрыть соединение между светодиодами и Arduino:

Ярлык светодиодный термоусадочный

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

Ярлык светодиодного тестирования

Теперь подключите коммутаторы. Они должны быть подключены через резистор 10 кОм, иначе Arduino умрет. Это называется мертвым коротким замыканием — +5 В уходит прямо в землю, и все, что осталось от вашего Arduino, будет клуб дыма (поверьте мне, я уже убил одного, так что вам не придется). Вот схема для одного переключателя:

Arduino Схема быстрого доступа

Эта схема одинакова для всех девяти переключателей. Подключите переключатели к цифровым контактам с 2 по 10, каждый со своим собственным резистором 10К на землю. Будьте осторожны при пайке переключателей Cherry MX, они могут быть немного хрупкими, у меня несколько контактов сломалось. Возможно, вы захотите припаять их непосредственно к еще одному картону, однако концевые выводы все еще подходят.

Вот и все для проводки. Возможно, вы захотите смонтировать гнездо USB типа B, однако крошечные контакты на них часто довольно трудно паять. Если вы не хотите этого делать, не беспокойтесь. Разъем Micro USB на Arduino аккуратно подходит к отверстию в корпусе. Если вас немного смущают разные типы USB, убедитесь, что вы понимаете различия.

Наконец, дважды проверьте правильность схемы. Короткий может легко уничтожить Arduino, и это может быть легко сделать с помощью картона.

Код

Теперь проверьте правильность схемы. Это хорошая идея сделать это, прежде чем продолжить, так что вы можете исправить любые проблемы, пока вы можете. Загрузите этот тестовый код (не забудьте выбрать правильную плату и порт в меню Инструменты > Плата и Инструменты > Меню портов ):

const int buttons[] = {2,3,4,5,6,7,8,9,10}; // array of all button pins void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, INPUT); pinMode(8, INPUT); pinMode(9, INPUT); pinMode(10, INPUT); } void loop() { // put your main code here, to run repeatedly: for(int i = 2; i < 11; ++i) { if(digitalRead(i) == HIGH) { // software de-bounce improves accuracy delay(10); if(digitalRead(i) == HIGH) { // check switches Serial.print ("input"); Serial.println(i); delay(250); } } } } 

Возможно, вам придется изменить контакты, если вы изменили схему.

После загрузки откройте последовательный монитор ( вверху справа > Serial Monitor ). Один за другим, нажмите каждую кнопку. Вы должны увидеть на серийном мониторе номер кнопки, которую вы нажали. Как и в случае со светодиодом, если ваш компьютер жалуется на слишком большой ток или светодиоды гаснут, когда вы нажимаете кнопку, немедленно отключайтесь! У вас есть короткое замыкание где-то в цепи, дважды проверьте правильность цепи и нет ли коротких замыканий между соединениями.

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

Сделать Arduino похожей на клавиатуру очень просто. Если вы используете Nano или UNO, вы собираетесь перепрограммировать Arduino с помощью обновления прошивки устройства (DFU). Это обычно используется для прошивки новой прошивки на Arduino. Вы собираетесь использовать его для прошивки Arduino новой прошивкой, которая заставит его работать как клавиатура. Это не будет рассмотрено здесь, так как это довольно сложная задача. На сайте Arduino есть хороший учебник для этого.

Arduino Pro Micro делает этот шаг очень простым. Логика, необходимая для эмуляции клавиатуры USB, уже встроена в процессор, поэтому это так же просто, как написать некоторый код!

Сначала настройте ключи:

 int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; 

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

Массив — это набор единомышленников. Компьютеры могут оптимизировать ваш код для быстрого доступа к ним, и они ускоряют процесс написания кода.

Теперь инициализируйте все контакты как входы:

 void setup() { // put your setup code here, to run once: Keyboard.begin(); // setup keyboard for (int i = 2; i < 11; ++i) { // initilize pins pinMode(i, INPUT); } } 

Это говорит Arduino, что все выводы в массиве являются входными. Для этого используется цикл, поэтому вместо того, чтобы писать pinMode (2, INPUT) девять раз, вы должны записать его только один раз. Это также вызывает Keyboard.begin . Это устанавливает функцию, встроенную в библиотеку Arduino, разработанную специально для эмуляции клавиатуры.

Создайте метод с именем readButton :

 boolean readButton(int pin) { // check and debounce buttons if (digitalRead(pin) == HIGH) { delay(10); if (digitalRead(pin) == HIGH) { return true; } } return false; } 

Это берет булавку и проверяет, была ли она нажата или нет. Он просто возвращает TRUE или FALSE . Он также содержит некоторую программную отладку — простая задержка, а затем повторная проверка переключателя гарантирует, что кнопка действительно была нажата.

Теперь другой цикл for вызывается внутри void loop () :

 void loop() { // put your main code here, to run repeatedly: for (int i = 2; i < 11; ++i) { // check buttons if(readButton(i)) { doAction(i); } } } 

Опять же, это перебирает каждый элемент в массиве и проверяет, был ли он нажат. Это делается путем вызова метода readButton, который вы создали ранее. Если кнопка была нажата, она передает этот номер пина другому методу, называемому doAction :

 void doAction(int pin) { // perform tasks switch (pin) { case 2: Keyboard.println("drive.google.com"); break; case 3: Keyboard.println(".com"); break; case 4: // CMD + T (new tab, Chrome) Keyboard.press(KEY_LEFT_GUI); Keyboard.press('t'); delay(100); Keyboard.releaseAll(); break; case 5: // your task here break; case 6: // your task here break; case 7: // your task here break; case 8: // your task here break; case 9: // your task here break; } } 

Это проверяет номер контакта с помощью оператора switch . Операторы switch (иногда называемые switch case ) похожи на оператор if , однако они полезны для проверки того, что одна вещь (в данном случае номер пин-кода) равна одному из нескольких разных результатов. По сути, они гораздо быстрее для расчета.

Основные компоненты находятся внутри этого оператора switch. Keyboard.println записывает текст на компьютер так, как будто вы физически набираете каждую клавишу. Keyboard.press нажимает и удерживает одну клавишу. Не забудьте выпустить их с помощью Keyboard.releaseAll после небольшой задержки!

Вот полный код:

 int keys[] = {2, 3, 4, 5, 6, 7, 8, 9, 10}; void setup() { // put your setup code here, to run once: Keyboard.begin(); // setup keyboard for (int i = 2; i < 11; ++i) { // initilize pins pinMode(i, INPUT); } } void loop() { // put your main code here, to run repeatedly: for (int i = 2; i < 11; ++i) { // check buttons if(readButton(i)) { doAction(i); } } } boolean readButton(int pin) { // check and debounce buttons if (digitalRead(pin) == HIGH) { delay(10); if (digitalRead(pin) == HIGH) { return true; } } return false; } void doAction(int pin) { // perform tasks switch (pin) { case 2: Keyboard.println("drive.google.com"); break; case 3: Keyboard.println(".com"); break; case 4: // CMD + T (new tab, Chrome) Keyboard.press(KEY_LEFT_GUI); Keyboard.press('t'); delay(100); Keyboard.releaseAll(); break; case 5: // your task here break; case 6: // your task here break; case 7: // your task here break; case 8: // your task here break; case 9: // your task here break; } } 

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

Теперь осталось только создать несколько ярлыков. Вы можете сопоставить это с существующими ярлыками, такими как Alt + F4 (закрыть программу в Windows) или Cmd + Q (выйти из программы macOS). В качестве альтернативы обязательно ознакомьтесь с нашим руководством по клавишам для клавиш для том , как создавать ярлыки Windows. создать ярлыки создать ярлыки , и каждый ярлык Chromebook ярлык на чтобы начать создавать свои собственные ярлыки.

Вы создали свой собственный ярлык? Дайте мне знать в комментариях, я хотел бы видеть некоторые картины!

Похожие посты
Diy

Вещи, которые вы должны иметь в виду, прежде чем брать ноутбук или смартфон в службу технической поддержки

Diy

Как использовать Arduino для съемки красивой скоростной фотографии

DiyLinux

Пять великолепных расширений Raspberry Pi, которые делают его еще более полезным

Diy

Первые шаги с Arduino: пристальный взгляд на печатную плату и структуру программы