Дешёвое и простое дистанционное управление ПК.

Разработка проектов под заказ

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

Устройств управления ПК позволит выполнять следующие функции: управление звуком, переключать видео, аудио композиций. Также данное устройство можно запрограммировать для выполнения системных команд: перезагрузка компьютера, переход в режим сна и пр. Но и, конечно же, можно сделать беспроводной джойстик, который позволит играть в простые игры.

Сегодня в проекте рассмотрим самое простое и дешёвое дистанционное управление ПК

Что понадобится для управления компьютером через USB?

Для проекта управления компьютером через USB нам понадобятся достаточно дешёвые и простые комплектующие:

Что понадобится для управления компьютером через USB

Как видим, для проекта нужно минимум комплектующих и если их покупать в Китае, то можно уложиться в 2-5 $.

Схема подключения устройства удаленного управления ПК.

Сперва, рассмотрим схему подключения устройства удаленного управления ПК с использованием модуля KY-022. Данный вариант более простой в подключении и можно обойтись без пайки.

Схема подключения устройства удаленного управления ПК.

Второй вариант схемы устройства удаленного управления ПК более компактный и представляется в виде девайса, у которого нет дополнительных проводов.

Второй вариант схемы устройства удаленного управления ПК более компактный

Все элементы распаиваются на плате и устройство можно подключить в любой доступный USB разъем. Главное, чтобы IR приемник был в пределах видимости.

Также пригодятся знания о распиновке 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

И по аналогии вы можете сделать любое количество функциональных клавиш. При желании можно сделать полноценную клавиатуру или мышь.

Плюсы самодельного устройства:

  • Небольшой размер
  • Небольшая стоимость
  • Простота сборки
  • Можно сделать устройства под конкретные задачи.

Минусы удаленного управления компьютером.

  • Самый основной минус это канал связи. С помощью IR пульта можно управлять только в приделах видимости приемника и относительно на небольшом расстоянии. (Можно реализовать связь и по другим каналам связи).
  • Нет возможности передавать удержание клавиши. Что уменьшает спектр применения. (возможно можно передавать, но я не нашел в документации к библиотеки об этом информации. Если у вас есть информация по данному вопросу, пишите в комментарии.)

Минусы удаленного управления компьютером.

В следующем проекте расскажу про создания устройства для целевого применения, о котором не рассказал в данной статье.

Понравился проект Дешёвое и простое дистанционное управление ПК? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Код управления компьютером с помощью пульта ДУ Код управления компьютером с помощью пульта ДУ.ino4 Kb 19 Скачать
Библиотека Adafruit Trinket USB Библиотека Adafruit Trinket USB.zip3457 Kb 17 Скачать
файл библиотеки TrinketHidCombo файл библиотеки TrinketHidCombo.zip2 Kb 14 Скачать

Комментарии

Ваше Имя*