Создаем беспроводную клавиатуру, модифицировав Das Keyboard. Пошаговая инструкция
Илья – главный редактор сайта softdroid.net. Является автором нескольких сотен руководств и статей по настройке Android. Около 15 лет занимается ремонтом техники и решением технических проблем iOS и Android. Имел дело практически со всеми более-менее популярными марками мобильных смартфонов и планшетов Samsung, HTC, Xiaomi и др. Для тестирования используется iPhone 12 и Samsung Galaxy S21 с последней версией прошивки.
Перевод статьи Wireless Das Keyboard Modification — Build log на сайте IVANYU | Автор: Ivan Yu (спасибо!)
Приближенный к беспроводным устройствам и механическим клавиатурам, я опечален, что беспроводных механических клавиатур очень мало, и они далеко друг от друга. Существует только горстка моделей и, к сожалению ни одна из них не соответствует моим вкусам. По этой причине, я решил прибегнуть к DIY подходу. К тому же, аннулирована гарантия на Das к этому располагала. Поэтому я самостоятельно сделаю беспроводную механическую клавиатуру, шаг за шагом.
Этот журнал сборки может служить в качестве руководства для создания беспроводных модов в целом. Этот процесс будет одинаковым для большинства клавиатур.
Фаза 0: Планирование
После небольшого исследования, я решил опробировать метод: замена внутренностей механической платы на беспроводную. Механические переключатели будут подключены к репликации мембраны матрицы беспроводной платы и подключены к контроллеру беспроводного платы. Это мне показалось простым, надежным и экономически эффективным подходом.
Поскольку это была моя первая попытка, я решил взять самую дешевую плату, которую я только мог найти. В конечном итоге мой выбор остановился на HP K2500, донорской клавиатуре. Поскольку она была такой же (104-клавишной), как Дас, и с минимальным количеством дополнительных функций. Небольшой USB-порт — также приятно.
Донорская клавиатура — HP K2500
Этап 1: Демонтаж
Особенно нечего сказать о беспроводной клавиатуре, все распалась после снятия винтов.
Процесс усложнился в случае с Дас, так как все переключатели должны были быть отпаяны, чтобы их можно было отделить от платы.
Есть и другие способы изоляции выключателей друг от друга, например, снять все соединения, которые могут быть более практичным на других клавиатурах. Я решил снять всю печатную плату только в целях безопасности. Это также позволит сохранить функциональность клавиатуры контроллера и печатной платы, если это когда-нибудь понадобится в будущем.
В этот момент, вместе с отключением PCB, я заметил, что переключатели немного ослабли с пластиной, которая держит их, так что я обработал их горячим клеем. Вообще, я должен был сделать это после проводки.
Этап 2: Проводка
ПОдсоединение все переключателей легко может занять большую часть процесса модификации и будет сильно зависеть от умений в пайке. Общая процедура вышлядит следующим образом:
Для каждого из 26 контактов на контроллере:
- Отображение серии клавиш беспроводной мембраны к механическим переключателям с использованием красных стрелок Некоторые полезные советы для этого процесса: Пути соединения на мембране зачастую слишком длинные и извилистые — во избежание их пересечений. Коммутаторы не должны быть соединены в любом конкретном шаблоне, пока они все соединены.
Использование другого цвета провода для каждого прогона будет восприниматься легче. В любом случае, проверьте все до и после пайки.
В зависимости от клавиатуры, пространство за задней панели может быть жестким. Чем аккуратней проводка, тем лучше. Тонкая проволока тоже помогает.
После пайки все, я подключил батарею и сделал быстрый тест, чтобы убедиться, что все было правильно проведено. После того, как я это сделал, что каждая клавиша работала как положено, я сделал шаг к окончательной сборке.
Этап 3: Сборка
Во-первых, я сделал быструю сборку, чтобы убедиться, что есть место для всего внутри корпуса и завершить размещение внутренних запчастей.
Как вы видите, все очень хорошо работает (и с достаточно места, чтобы сэкономить, благодаря «горбу» Das).
Теперь о вопросе расположения контроллера и батареи. Я изначально планировал 3d-печать кронштейна. Однако, поскольку у меня не было доступа к принтеру в то время, я обратился к старой доброй импровизационной изобретательности.
После очистки вокруг дома, я установил два пластиковых зажима, которые держали ручку в упаковке и крышки для конца DVI-кабеля. Вместе они сделали сформировали эффективный батарейный отсек.
Далее, я взял старый кулер видеокарты, который лежал рядом, и вырезал прямоугольный кусок пластика. Я приклеил его к задней панели так чтобы он давил на контроллере, и далее закрепил его.
Наконец, я хотел сделать что-то для решения проблемы пустых слотов, первоначально используемых для USB, а также верхних отверстий.
Заметив, что пластик из кулера видеокарты достаточно похож, я вырезал и отшлифовал эти части, чтобы заполнить пробелы. Они на самом деле оказалось лучше, чем я ожидал, так как цвет и текстура аналогичны.
Я был очень доволен этим, пока я не удалось получить клей по всему краю, как вы можете посмотреть здесь. Я закончил, отшлифовав и потеряв текстурированную отделку на пластике. (Ну что ж.)
Заключительные мысли
Для тех, кто ищет список инструментов и материалов, используемых, вот обзор материалов:
- Комплект для пайки (паяльник, припой, припой для удаления, зачистки проводов, пинцет)
- Много проволоки (я использую AWG 30)
- Клей, лента, электроинструменты и т.д.
Как сделать беспроводную Bluetooth клавиатуру на ESP32
Обычно решение задачи создания самодельных средств ввода (клавиатура, мышь, геймпад) для ПК решается на специально предназначенных для этого платах — Arduino Leonardo. На моем канале есть несколько реализованных проектов на этой платформе: самодельный руль и велотренажёр предназначенные для игры в авто или вело симуляторы.
Arduino Leonardo отличается от всех предыдущих плат тем, что микроконтроллер ATmega32u4 имеет встроенный интерфейс USB. С точки зрения компьютера Arduino Leonardo является HID устройством (вроде клавиатуры или мыши), поэтому сделать на основе Arduino Leonardo новый компьютерный эмулятор проще, чем с другими платами.
Однако вышедшая 6 сентября 2016 плата ESP32, имеет на борту не только Wi-Fi но и Bluetooth. А это означает, что можно «запилить» беспроводные:
В этой статье разберем пример создания беспроводной клавиатуры.
Для начала необходимо скачать и установить библиотеку:
(будет в архиве с примерами из этой статьи)
У библиотеки богатый функционал:
- Отправить нажатия клавиш
- Послать текст
- Нажать / отпустить отдельные клавиши
- Поддерживаются медиа-клавиши
- Чтение состояния Numlock / Capslock / Scrolllock
- Отображения уровня заряда (в основном работает, но не отображается в строке состояния Android)
- Совместим с Android
- Совместимость с Windows
- Совместим с Linux
- Совместим с MacOS X (нестабильно, у некоторых возникают проблемы, не работает со старыми устройствами)
- Совместимость с iOS (нестабильна, у некоторых возникают проблемы, не работает со старыми устройствами)
Для тестирования соберем макет и напишем несколько примеров. Потребуется: плата ESP32 WROOM DevKit v1, две кнопки и макетная плата.
Если у вас не ноутбук, а стационарный ПК, то еще и bluetooth адаптер.
Первый пример простой. Если клавиатура подключена к ПК, встроенный светодиод горит, если нет — то не горит. bleKeyboard.isConnected()
После загрузки скетча идем в Windows, и добавляем устройство.
Встроенный в плату ESP32 светодиод светится, можно двигаться дальше.
Все функции библиотеки аналогичны Ардуиновским, так что если у Вас есть готовый проект проводной клавиатуры на Arduino, его легко можно сделать беспроводным переписав только «шапку» программы подменив библиотеку и метод создания объекта.
Разберем несколько примеров работы с библиотекой. Метод press() нажимает клавишу, метод releaseAll() отпускает все клавиши.
Для нажатий Ctrl, Alt, ENTER и других функциональных клавиш существует специальная таблица модификаторов:
Вот пример нажатия клавиши ENTER
Реализацию нажатий сочетаний клавиш, можно реализовать следующим способом:
Получилось универсальное устройство для написания любых статей, курсовых и дипломных работ:
- кнопка BT1 копирует информацию в буфер обмена
- кнопка BT2 вставляет информацию из буфера обмена
Набор текста осуществляется следующим образом.
Библиотека поддерживает работу с мультимедийными клавишами
Существует также специальная информация Bluetooth, которую вы можно установить при создании объекта клавиатура(необязательно):
- Вместо BleKeyboard bleKeyboard;
- BleKeyboard bleKeyboard(«Bluetooth Device Name», «Bluetooth Device Manufacturer», 100); (Максимальная длина — 15 символов, все остальное будет усечено.)
Третий параметр — это начальный уровень заряда батареи вашего устройства. Чтобы отрегулировать уровень заряда батареи позже, вы можете просто отправить команду, например:
По умолчанию уровень заряда батареи установлен на 100%, имя устройства ESP32 Bluetooth Keyboard и производитель Espressif.
Также существует setDelayметод установки задержки между каждым ключевым событием. Например:
bleKeyboard.setDelay(10) — 10 миллисекунд. (по умолчанию это 8.)
Эта функция предназначена для компенсации некоторых приложений и устройств, которые не могут обрабатывать быстрый ввод и будут пропускать буквы, если за короткий промежуток времени будет отправлено слишком много ключей.
Все функции библиотеки работают как нужно, а Arduino Leonardo пожалуй можно отправлять на свалку истории, особенно учитывая то, что ESP32 стоит дешевле даже Китайской реплики платы Arduino Leonardo, не говоря уже о фирменных платах Arduino.
Беспроводная клавиатура своими руками
В этой заметке речь пойдет о том как собрать беспроводную клавиатуру для ПК или ноутбука. Данную мини клавиатуру можно использовать для управления проигрывателем Windows Media, либо её не сложно перепрограммировать под любое другое приложение.
Для сборки приемника клавиатуры который будет подключаться к ПК понадобиться плата Ардуино LEONARDO. Обычная плата Ардуино тут не подойдет. Ардуино LEONARDO может прикидываться для ПК клавиатурой, мышкой или джойстиком. Я буду использовать в проекте плату Arduino Micro, которая является аналогом платы Ардуино LEONARDO, но имеет более удобный форм-фактор для работы с макетной платой.
Для сборки передатчика. Подойдет любая плата Arduino – я буду использовать Arduino Nano. Также понадобиться пара UART модулей – для этого проекта я буду использовать HC-11 – они обеспечивают уверенную связь внутри небольшой квартиры – управлять компьютером с расстояния 2 км я думаю, особой необходимости нет, и поэтому использовать дальнобойные UART модули типа HC-12 или APC 220 в таком проекте смысла особого не имеет. Ну и 5 кнопок. 2 кнопки для управления громкостью 2 для переключения треков и одна для старта/приостановки воспроизведения. Приемник будет питься от разъема USB компьютера. Сама клавиатура от PowerBank. Схема подключения простая – она приведена ниже.
Для того чтобы плата Ардуино Leonardo превратилась в клавиатуру потребуется библиотека Keyboard.
Как пользоваться библиотекой Kyboard
Для организации связи я буду использовать свою библиотеку Serial27b. Пример использования этой библиотеки вы сможете найти в этой статье:
Как пользоваться библиотекой Serial27b
Разумеется перед заливкой прошивки необходимо, чтобы обе эти библиотеки были установлены в среду программирования Arduino IDE – как это сделать можно узнать здесь:
Как установить библиотеку в среду Arduino IDE
Все библиотеки можно скачать по этим ссылкам.
Библиотека Serial27b
Библиотека Keyboard
Скетч клавиатуры и приемника вы найдете после установки библиотеки Serial27b в среду Arduino IDE в демонстрационных примерах.
Демонстрацию работы и разбор скетча смотрите в этом видео.
В примере используются битовые операции — чтобы писать эффективный и быстродействующий код для машины необходимо думать как машина — поэтому ни каких сообщений типа battonON и battonOFF передаваться не должно. Кнопка имеет только два состояния включено/выключено поэтому достаточно передавать только 1 или 0.
Список железок вы найдете в описании под видео – если статья Вам понравилась не забывайте ставить лайки и оставлять комментарии, чтобы её смогли увидеть другие люди. Приятного просмотра.