Сегодня в проекте рассмотрим самое простое и дешёвое дистанционное управление ПК, которое можно сделать самостоятельно буквально за 20-30 минут. В этом нам помогут знания, которые были получены из предыдущих статей и Arduino уроков:
Устройств управления ПК позволит выполнять следующие функции: управление звуком, переключать видео, аудио композиций. Также данное устройство можно запрограммировать для выполнения системных команд: перезагрузка компьютера, переход в режим сна и пр. Но и, конечно же, можно сделать беспроводной джойстик, который позволит играть в простые игры.
Для проекта управления компьютером через USB нам понадобятся достаточно дешёвые и простые комплектующие:
Как видим, для проекта нужно минимум комплектующих и если их покупать в Китае, то можно уложиться в 2-5 $.
Сперва, рассмотрим схему подключения устройства удаленного управления ПК с использованием модуля KY-022. Данный вариант более простой в подключении и можно обойтись без пайки.
Второй вариант схемы устройства удаленного управления ПК более компактный и представляется в виде девайса, у которого нет дополнительных проводов.
Все элементы распаиваются на плате и устройство можно подключить в любой доступный USB разъем. Главное, чтобы IR приемник был в пределах видимости.
Также пригодятся знания о распиновке IR приемника.
Код управления компьютером с помощью пульта дистанционного управления сделан на основе урока: DigiSpark attiny85 считываем код пульта ДУ. Поэтому подробно рассказывать про библиотеку и что откуда берётся не буду. Если вам интересно посмотрите урок.
//отладка. Установите значение 0 после поиска ваших кодов #define DEBUG 1
Для получения кода кнопок в скетче есть переменная DEBUG, если установить значение данной переменой 1 и загрузить прошивку в DigiSpark то при нажатии на клавиши на пульте в текстовом документе увидим код данной кнопки. Можно установить курсов в скетче, где нужно задать код кнопки пульта, и нажать на кнопку и у вас автоматически заполнятся нужные поля.
Таким образом, можно добавить все коды с пульта.
//Укажите свои коды здесь: #define REMOTE_OK 0x61D66897 #define REMOTE_LEFT 0x61D618E7 #define REMOTE_RIGHT 0x61D630CF #define REMOTE_DOWN 0x61D6A857 #define REMOTE_UP 0x61D6D02F #define REMOTE_ESC 0x61D638C7 #define REMOTE_VOL_UP 0x61D650AF #define REMOTE_VOL_DOWN 0x61D628D7 #define REMOTE_RETURN 0x61D6B04F #define REMOTE_PLAYPAUSE 0x61D6D827 #define REMOTE_NEXT 0x61D67887 #define REMOTE_PREV 0x61D6F807
После того как все коды вашего пульта указаны в скетче, верните значение переменой #define DEBUG 0. И загрузите код повторно. После чего можно управлять вашим компьютером с помощью пульта ДУ.
//отладка. Установите значение 0 после поиска ваших кодов #define DEBUG 1 //Укажите свои коды здесь: #define REMOTE_OK 0x61D66897 #define REMOTE_LEFT 0x61D618E7 #define REMOTE_RIGHT 0x61D630CF #define REMOTE_DOWN 0x61D6A857 #define REMOTE_UP 0x61D6D02F #define REMOTE_ESC 0x61D638C7 #define REMOTE_VOL_UP 0x61D650AF #define REMOTE_VOL_DOWN 0x61D628D7 #define REMOTE_RETURN 0x61D6B04F #define REMOTE_PLAYPAUSE 0x61D6D827 #define REMOTE_NEXT 0x61D67887 #define REMOTE_PREV 0x61D6F807
Первое и самое распространённое, чем можно управлять это музыка. Причем ограничений тут нет. Управлять можно как вашим встроенным музыкальным плеером. Например, я использую VLС.
Так и управление музыкой, которую включили в браузере. Например, на сайте Вконтакте.
Также без проблем можно регулировать общую громкость на компьютере.
Второе, что приходит на ум это игры. Да, можно настроить для беспроводного управления в некоторых играх. Но тут есть свои ограничения. Устройство не может предавать удержание клавиши. Что приводит к уменьшению спектра игр, где можно было бы использовать данное устройства.
Третье применение это управление системой: можно выключить ПК, перезагрузить или перевести в режим сна.
case REMOTE_OK: TrinketHidCombo.pressKey(0, KEYCODE_ENTER); break; case REMOTE_LEFT: TrinketHidCombo.pressKey(0, KEYCODE_ARROW_LEFT); break; case REMOTE_RIGHT: TrinketHidCombo.pressKey(0, KEYCODE_ARROW_RIGHT); break; case REMOTE_DOWN: TrinketHidCombo.pressKey(0, KEYCODE_ARROW_DOWN); break; case REMOTE_UP: TrinketHidCombo.pressKey(0, KEYCODE_ARROW_UP); break; case REMOTE_ESC: TrinketHidCombo.pressKey(0, KEYCODE_ESC); break; case REMOTE_RETURN: TrinketHidCombo.pressKey(0, KEYCODE_BACKSPACE); break; case REMOTE_VOL_UP: TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP); break; case REMOTE_VOL_DOWN: TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN); break; case REMOTE_PREV: TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_PREV_TRACK); break; case REMOTE_NEXT: TrinketHidCombo.pressMultimediaKey(MMKEY_SCAN_NEXT_TRACK); break; case REMOTE_PLAYPAUSE: TrinketHidCombo.pressMultimediaKey(MMKEY_PLAYPAUSE); break;
Вы можете самостоятельно расширить функционал беспроводного управления ПК. А чтобы вам не пришлось искать команды, которые можно использовать. Ниже приведён файл библиотеки TrinketHidCombo.h в котором расписаны все доступные команды.
// helps translate ASCII characters into keycode and modifier combinations, while taking into account whether or not caps lock is on void ASCII_to_keycode(uint8_t ascii, uint8_t ledState, uint8_t* modifier, uint8_t* keycode); // an instance that the user can use extern Trinket_Hid_Combo TrinketHidCombo; // use these masks with the "move" function #define MOUSEBTN_LEFT_MASK 0x01 #define MOUSEBTN_RIGHT_MASK 0x02 #define MOUSEBTN_MIDDLE_MASK 0x04 // LED state masks #define KB_LED_NUM 0x01 #define KB_LED_CAPS 0x02 #define KB_LED_SCROLL 0x04 // some convenience definitions for modifier keys #define KEYCODE_MOD_LEFT_CONTROL 0x01 #define KEYCODE_MOD_LEFT_SHIFT 0x02 #define KEYCODE_MOD_LEFT_ALT 0x04 #define KEYCODE_MOD_LEFT_GUI 0x08 #define KEYCODE_MOD_RIGHT_CONTROL 0x10 #define KEYCODE_MOD_RIGHT_SHIFT 0x20 #define KEYCODE_MOD_RIGHT_ALT 0x40 #define KEYCODE_MOD_RIGHT_GUI 0x80 // some more keycodes #define KEYCODE_LEFT_CONTROL 0xE0 #define KEYCODE_LEFT_SHIFT 0xE1 #define KEYCODE_LEFT_ALT 0xE2 #define KEYCODE_LEFT_GUI 0xE3 #define KEYCODE_RIGHT_CONTROL 0xE4 #define KEYCODE_RIGHT_SHIFT 0xE5 #define KEYCODE_RIGHT_ALT 0xE6 #define KEYCODE_RIGHT_GUI 0xE7 #define KEYCODE_1 0x1E #define KEYCODE_2 0x1F #define KEYCODE_3 0x20 #define KEYCODE_4 0x21 #define KEYCODE_5 0x22 #define KEYCODE_6 0x23 #define KEYCODE_7 0x24 #define KEYCODE_8 0x25 #define KEYCODE_9 0x26 #define KEYCODE_0 0x27 #define KEYCODE_A 0x04 #define KEYCODE_B 0x05 #define KEYCODE_C 0x06 #define KEYCODE_D 0x07 #define KEYCODE_E 0x08 #define KEYCODE_F 0x09 #define KEYCODE_G 0x0A #define KEYCODE_H 0x0B #define KEYCODE_I 0x0C #define KEYCODE_J 0x0D #define KEYCODE_K 0x0E #define KEYCODE_L 0x0F #define KEYCODE_M 0x10 #define KEYCODE_N 0x11 #define KEYCODE_O 0x12 #define KEYCODE_P 0x13 #define KEYCODE_Q 0x14 #define KEYCODE_R 0x15 #define KEYCODE_S 0x16 #define KEYCODE_T 0x17 #define KEYCODE_U 0x18 #define KEYCODE_V 0x19 #define KEYCODE_W 0x1A #define KEYCODE_X 0x1B #define KEYCODE_Y 0x1C #define KEYCODE_Z 0x1D #define KEYCODE_COMMA 0x36 #define KEYCODE_PERIOD 0x37 #define KEYCODE_MINUS 0x2D #define KEYCODE_EQUAL 0x2E #define KEYCODE_BACKSLASH 0x31 #define KEYCODE_SQBRAK_LEFT 0x2F #define KEYCODE_SQBRAK_RIGHT 0x30 #define KEYCODE_SLASH 0x38 #define KEYCODE_F1 0x3A #define KEYCODE_F2 0x3B #define KEYCODE_F3 0x3C #define KEYCODE_F4 0x3D #define KEYCODE_F5 0x3E #define KEYCODE_F6 0x3F #define KEYCODE_F7 0x40 #define KEYCODE_F8 0x41 #define KEYCODE_F9 0x42 #define KEYCODE_F10 0x43 #define KEYCODE_F11 0x44 #define KEYCODE_F12 0x45 #define KEYCODE_APP 0x65 #define KEYCODE_ENTER 0x28 #define KEYCODE_BACKSPACE 0x2A #define KEYCODE_ESC 0x29 #define KEYCODE_TAB 0x2B #define KEYCODE_SPACE 0x2C #define KEYCODE_INSERT 0x49 #define KEYCODE_HOME 0x4A #define KEYCODE_PAGE_UP 0x4B #define KEYCODE_DELETE 0x4C #define KEYCODE_END 0x4D #define KEYCODE_PAGE_DOWN 0x4E #define KEYCODE_PRINTSCREEN 0x46 #define KEYCODE_ARROW_RIGHT 0x4F #define KEYCODE_ARROW_LEFT 0x50 #define KEYCODE_ARROW_DOWN 0x51 #define KEYCODE_ARROW_UP 0x52 // multimedia keys #define MMKEY_KB_VOL_UP 0x80 // do not use #define MMKEY_KB_VOL_DOWN 0x81 // do not use #define MMKEY_VOL_UP 0xE9 #define MMKEY_VOL_DOWN 0xEA #define MMKEY_SCAN_NEXT_TRACK 0xB5 #define MMKEY_SCAN_PREV_TRACK 0xB6 #define MMKEY_STOP 0xB7 #define MMKEY_PLAYPAUSE 0xCD #define MMKEY_MUTE 0xE2 #define MMKEY_BASSBOOST 0xE5 #define MMKEY_LOUDNESS 0xE7 #define MMKEY_KB_EXECUTE 0x74 #define MMKEY_KB_HELP 0x75 #define MMKEY_KB_MENU 0x76 #define MMKEY_KB_SELECT 0x77 #define MMKEY_KB_STOP 0x78 #define MMKEY_KB_AGAIN 0x79 #define MMKEY_KB_UNDO 0x7A #define MMKEY_KB_CUT 0x7B #define MMKEY_KB_COPY 0x7C #define MMKEY_KB_PASTE 0x7D #define MMKEY_KB_FIND 0x7E #define MMKEY_KB_MUTE 0x7F // do not use // system control keys #define SYSCTRLKEY_POWER 0x01 #define SYSCTRLKEY_SLEEP 0x02 #define SYSCTRLKEY_WAKE 0x03 #endif
И по аналогии вы можете сделать любое количество функциональных клавиш. При желании можно сделать полноценную клавиатуру или мышь.
В следующем проекте расскажу про создания устройства для целевого применения, о котором не рассказал в данной статье.
Понравился проект Дешёвое и простое дистанционное управление ПК? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
![]() |
Код управления компьютером с помощью пульта ДУ.ino | 4 Kb | 475 | Скачать |
![]() |
Библиотека Adafruit Trinket USB.zip | 3457 Kb | 451 | Скачать |
![]() |
файл библиотеки TrinketHidCombo.zip | 2 Kb | 435 | Скачать |
Кстати включить комп с пульта тоже можно если одну из ног тиньки прикрутить к кнопке включения
Arduino проекты
20 августа , 2021
Комментариев:1
Файлов для скачивания:3
Фото:9
Понравилась статья? Нажми
Cлучайные товары
Mosfet 0-24 В IRF520
SIM800L GSM модуль
Читайте также
Мы в соц сетях
Комментарии