До сих пор мы работали только с Arduino UNO. Да вот только то, что я сегодня покажу не работает с Arduino UNO. На самом деле можно, конечно, но в таком случае нужно кое-чего подшаманить, а это кое-чего не так-то и просто. Что же тогда делать? А вот что.
Кроме Arduino UNO существует множество других версий Arduino. Это и Arduino Nano или Mini, когда размер имеет значение, и Arduino Mega, когда пинов и ресурсов на UNO уже не хватает, а еще нужно подключить килограмм датчиков. А если форм-фактор UNO уж больно нравится, а аналоговых пинов не хватает, то на помощь придет Leonardo.
На Leonardo мы сегодня и остановимся. Отличие Leonardo от UNO не только в дополнительных аналоговых пинах, но и в архитектуре. На Leonardo доступен виртуальный Serial port. Что это нам дает? Как минимум то, что 1 и 0 пины, которые отвечают за соединение с компьютером на UNO остаются свободными, а при открытии Serial соединения плата не перезагружается. Примите это во внимание. И главный козырь – компьютер считает Leonardo за HID устройство (Human interface device), а это говорит о том, что Leonardo может притвориться клавиатурой или мышью. Это свойство то мы и будем использовать.
Я люблю играть на электрогитаре. Часто играю в программе Guitar rig. Эта программа является виртуальным гитарным процессором, то есть обрабатывает звук с гитары. К чему все это. При игре нужно переключаться между пресетами, а руки то заняты. Есть решение – приобрести контроллер для этой программы, вот только он больше не выпускается, да и стоит прилично. А что если соорудить педаль самому? Вот что из этого получилось.
Arduino Leonardo или его аналоги
Главное – чтобы плата определялась как HID устройство
Тут уж по вашему вкусу
Тут есть где разгуляться дизайнерской мысли. Я решил не заморачиваться особо и соорудил подобие педали из двух фанерок, обильно смазанных термоклеем. Побаловаться – в самый раз.
Пол царства за термоклей.
Как я уже и говорил, Leonardo может притворяться клавиатурой или мышью. Это осуществляется с помощью встроенной библиотеки. Ниже приведен пример кода. Попробуйте запустить его у себя на компьютере. Должна произойти странная вещь.
Не спешите бежать и рассказывать о восстании машин. Так и было задумано. Теперь разберемся как это работает.
Keyboard.press(button) – эта команда говорит Leonardo о том, что нужно нажать кнопку на клавиатуре. Аргументом принимает букву или специальное обозначение клавиши. KEY_LEFT_CTRL – это левый Ctrl, например. Все обозначения можно посмотреть тут.
Можно нажимать комбинации клавиш. Для этого пропишите несколько строк кода с нужными клавишами. Например, чтобы сохранить текст есть комбинация Ctrl + s, Leonardo тоже сможет сохранить текст если выполнить такой код:
Keyboard.releaseAll() – команда говорит Leonardo отпустить клавиши. Заметьте, что предыдущая команда говорит Leonardo только о нажатии клавиши. Если не прописать Keyboard.releaseAll(), то клавиша будет зажата и дальше. Прямо как в реальности. Попробуйте открыть текстовый редактор и зажать клавишу.
Keyboard.println("Some text") – эта команда отвечает за печать текста. Тут все предельно ясно. Работает как Serial.println.
Там есть и другие функции, но эти – самые основные. Их нам хватит, чтобы сделать педаль для гитары. Если кому интересно, что еще есть в этой библиотеке или в похожей для мыши, то можно открыть примеры/USB и почитать тут. Переходим к сборке педали.
С конструкцией можно подумать, а схема устройства крайне проста. Ниже приведена схема на макетке.
На видео показан тест устройства в Microsoft Word и использование в качестве педали для переключения пресетов в guitar Rig 5. Для этого я создал новый контроллер, запомнил клавишу и задал действие.
Оказывается, существуют и другие Arduino, не менее полезные, а где-то и более полезные чем UNO.
Используя Leonardo в качестве клавиатуры или мыши можно создавать интересные вещи. Например, флешку-розыгрыш на 1 апреля, которая будет нажимать клавиши через определенные интервалы. Такая штучка доставит вашей цели кучу незабываемых эмоций. Только тсс, я этого не говорил.
До сих пор мы работали только с Arduino UNO. Да вот только то, что я сегодня покажу не работает с Arduino UNO. На самом деле можно, конечно, но в таком случае нужно кое-чего подшаманить, а это кое-чего не так-то и просто. Что же тогда делать? А вот что.
Кроме Arduino UNO существует множество других версий Arduino. Это и Arduino Nano или Mini, когда размер имеет значение, и Arduino Mega, когда пинов и ресурсов на UNO уже не хватает, а еще нужно подключить килограмм датчиков. А если форм-фактор UNO уж больно нравится, а аналоговых пинов не хватает, то на помощь придет Leonardo.
На Leonardo мы сегодня и остановимся. Отличие Leonardo от UNO не только в дополнительных аналоговых пинах, но и в архитектуре. На Leonardo доступен виртуальный Serial port. Что это нам дает? Как минимум то, что 1 и 0 пины, которые отвечают за соединение с компьютером на UNO остаются свободными, а при открытии Serial соединения плата не перезагружается. Примите это во внимание. И главный козырь – компьютер считает Leonardo за HID устройство (Human interface device), а это говорит о том, что Leonardo может притвориться клавиатурой или мышью. Это свойство то мы и будем использовать.
Я люблю играть на электрогитаре. Часто играю в программе Guitar rig. Эта программа является виртуальным гитарным процессором, то есть обрабатывает звук с гитары. К чему все это. При игре нужно переключаться между пресетами, а руки то заняты. Есть решение – приобрести контроллер для этой программы, вот только он больше не выпускается, да и стоит прилично. А что если соорудить педаль самому? Вот что из этого получилось.
Arduino Leonardo или его аналоги
Главное – чтобы плата определялась как HID устройство
Тут уж по вашему вкусу
Тут есть где разгуляться дизайнерской мысли. Я решил не заморачиваться особо и соорудил подобие педали из двух фанерок, обильно смазанных термоклеем. Побаловаться – в самый раз.
Пол царства за термоклей.
Как я уже и говорил, Leonardo может притворяться клавиатурой или мышью. Это осуществляется с помощью встроенной библиотеки. Ниже приведен пример кода. Попробуйте запустить его у себя на компьютере. Должна произойти странная вещь.
Не спешите бежать и рассказывать о восстании машин. Так и было задумано. Теперь разберемся как это работает.
Keyboard.press(button) – эта команда говорит Leonardo о том, что нужно нажать кнопку на клавиатуре. Аргументом принимает букву или специальное обозначение клавиши. KEY_LEFT_CTRL – это левый Ctrl, например. Все обозначения можно посмотреть тут.
Можно нажимать комбинации клавиш. Для этого пропишите несколько строк кода с нужными клавишами. Например, чтобы сохранить текст есть комбинация Ctrl + s, Leonardo тоже сможет сохранить текст если выполнить такой код:
Keyboard.releaseAll() – команда говорит Leonardo отпустить клавиши. Заметьте, что предыдущая команда говорит Leonardo только о нажатии клавиши. Если не прописать Keyboard.releaseAll(), то клавиша будет зажата и дальше. Прямо как в реальности. Попробуйте открыть текстовый редактор и зажать клавишу.
Keyboard.println("Some text") – эта команда отвечает за печать текста. Тут все предельно ясно. Работает как Serial.println.
Там есть и другие функции, но эти – самые основные. Их нам хватит, чтобы сделать педаль для гитары. Если кому интересно, что еще есть в этой библиотеке или в похожей для мыши, то можно открыть примеры/USB и почитать тут. Переходим к сборке педали.
С конструкцией можно подумать, а схема устройства крайне проста. Ниже приведена схема на макетке.
На видео показан тест устройства в Microsoft Word и использование в качестве педали для переключения пресетов в guitar Rig 5. Для этого я создал новый контроллер, запомнил клавишу и задал действие.
Оказывается, существуют и другие Arduino, не менее полезные, а где-то и более полезные чем UNO.
Используя Leonardo в качестве клавиатуры или мыши можно создавать интересные вещи. Например, флешку-розыгрыш на 1 апреля, которая будет нажимать клавиши через определенные интервалы. Такая штучка доставит вашей цели кучу незабываемых эмоций. Только тсс, я этого не говорил.
Предисловие
Стоит сказать, что область применение данного устройства не так уж и велика. Для работы это мониторинг, контроль за рабочим временем, защита от утечки информации и, наверное, всё.
В быту эта вещь может хорошо облегчить жизнь. Например, нажали определённое сочетание клавиш — Arduino их распознало и… послало сигнал включить чайник. Если не чайник, то что-нибудь другое.
Но всё же, это банальное слежение (возможно, даже скрытое) за сотрудником, что с моральной точки зрения не есть хорошо. Но всё же, юридическая справка даёт «добро», если это прописано в трудовом договоре, если этот мониторинг происходит в трудовое время и на рабочем месте и если, конечно, сотрудник проинформирован и поставил свою галочку.
Ну а в личной жизни вы вольны делать всё, что захочется, пока это касается вашей собственности.
Всё, юридически мы защищены, теперь я расскажу и покажу, что нам необходимо и как собрать вместе, чтобы получился простой перехватчик нажатий клавиш с клавиатуры.
Начнём
Итак, нам понадобится десяток проводов и две платы:
Почему Arduino Leonardo? Потому что она относительно дешёвая и в отличие от своих предшественников на ATmega32u4 имеет встроенную поддержку для USB соединения.
USB протокол определяет два типа устройств: хост (master, server) и периферия (slave, client). USB Host Shield управляет периферийными устройствами и обеспечивает их питанием. Например, когда вы подключаете клавиатуру к ПК, то ПК — это хост, который управляет клиентом, а клиент, в данном случае, — клавиатура.
А поддерживаемой перифирии довольно много. Самые интересные из них это:
1) HID устройства: клавиатура, мышь, джойстик и т. д.
2) Игровые контроллеры
3) ADK-совместимые Android телефоны и планшеты.
А за более подробной информацией прошу на официальный сайт.
В нашем случае – это клавиатура. Она относится к классу HID устройств. HID код для клавиатуры кодируется 8 байтами:
1) 1 байт – каждый бит соответствует своему модификатору (L Ctrl, R Ctrl, L Shift, R Shift и т. д.).
2) 2 байт – зарезервирован и нам не нужен, обычно он занулён.
3) 3-8 байты – содержат коды 6ти клавиш.
Более подробно об этом можно почитать здесь.
Всё, с теорией покончено, теперь можно и схему собрать.
Кстати, очень удобная программа для рисования схем, в которой и была нарисована эта схема, здесь.
Теперь стоит пояснить, что к чему.
У Arduino Leonardo есть небольшая особенность из-за которой мы не можем просто подключить её сверху: SPI разъёмы расположены на ICSP (те 6 разъёмов посередине справа) и из-за этого их приходится выводить на цифровые разъёмы USB Host Shield.
1) Жёлтый провод: пин 4 MOSI (подключён к 11 пину на USB Host shield).
2) Серый провод: пин 1 MISO (подключён к 12 пину на USB Host shield).
3) Зелёный провод: пин 3 SCK (подключён к 13 пину на USB Host shield).
Обеспечиваем питание нижними пятью проводами и одним фиолетовым:
1) Reset к Reset
2) 3.3V к 3.3V
3) 5V к 5V
4) GND к GND
5) VIN к VIN
6) Reset к D7
Теперь нам нужно подключить управляющие пины:
1) D7 к D7
2) D10 к D10
Это необходимый минимум, чтобы заставить её работать.
Так, схема есть, теперь нам нужно её как-то запрограммировать и это делается с помощью IDE от Arduino. Она совершенно бесплатна и находится в открытом доступе. Примеры программ и саму IDE можно найти на официальном сайте.
Для работы с USB Host Shield нам понадобится дополнительная библиотека (здесь).
Сам код максимально прост:
Осталось только подключить через USB Arduino к ПК, а клавиатуру к USB Host Shield, загрузить программу на Arduino при помощи IDE и всё! Key Catcher готов!
1) Arduino даёт множество возможностей при своей низкой цене и множеству разнообразных модулей и датчиков.
2) Данное устройство может позволить превратить вашу клавиатуру в пульт управления, например, телевизором, электрочайником, лампой, только докупить пару модулей придётся.