Skip to content

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

IR comp control

IR comp control — это легковесная утилита для ОС Windows, написанная на языке Go, которая позволяет управлять компьютером с помощью обычного ИК-пульта через последовательный порт (COM-порт).

О программе

Программа превращает ваш ИК-пульт в полноценный контроллер для мультимедиа и навигации. Она поддерживает эмуляцию нажатий клавиш, системные команды (выключение) и "умное" управление курсором мыши с логарифмическим ускорением. Утилита работает в системном трее, не занимает места на экране и имеет встроенную систему защиты от случайного выключения ПК.

Возможности

  • Эмуляция клавиатуры: Поддержка большинства мультимедийных и стандартных клавиш (Volume, Play/Pause, Win+D и др.).
  • Умная мышь: Плавное перемещение курсора кнопками ИК-пульта.
  • Безопасное выключение: Таймер на 10 секунд с возможностью отмены любой кнопкой пульта или закрытием окна.
  • Работа в трее: Удобное меню для перезагрузки конфига, открытия настроек и режима отладки.
  • Zero-GUI: Отсутствие лишних окон консоли при работе.

Подготовка

Что понадобится

  • Плата Arduino (Uno, Nano и подобные).
  • Инфракрасный приёмник с тремя выводами (например, TSOP4838, VS1838B и аналоги).
  • ИК-пульт, USB-кабель для подключения Arduino к компьютеру, Arduino IDE.

Подключение приёмника к Arduino

Вывод приёмника Куда подключить
OUT (сигнал) D2
VCC (питание) 5V
GND (земля) GND

Оба скетча ждут сигнал именно на пине D2. Перед подключением сверьтесь с распиновкой вашего конкретного датчика — расположение ног у разных моделей отличается. Питания от USB достаточно, внешний блок не нужен.

Выбор и загрузка скетча

В папке for_arduino_controller/ два скетча — под разные протоколы пультов:

  • IR-controler-nec.ino — для пультов с протоколом NEC (большинство бытовых пультов от телевизоров, приставок, DVD).
  • IR-controler-rc5.ino — для пультов с протоколом RC5 (часто встречается у Philips).

Как понять, какой нужен: залейте сначала NEC-вариант, откройте Монитор порта и понажимайте кнопки пульта. Если идут строки вида KEY_36 — протокол угадан. Если тишина — пробуйте RC5.

Нужные библиотеки:

  • Для NEC — NecDecoder (GyverLibs): архив уже лежит в for_arduino_controller/lib/NecDecoder-main.zip, устанавливается в Arduino IDE через Скетч → Подключить библиотеку → Добавить .ZIP-библиотеку.
  • Для RC5 — IRremote (IRremote.hpp): ставится через менеджер библиотек Arduino IDE (Инструменты → Управлять библиотеками…, найти IRremote).

Далее в Arduino IDE выберите вашу плату и её порт и загрузите скетч. Для проверки откройте Монитор порта на скорости 115200 и понажимайте кнопки пульта — должны приходить строки KEY_xx в шестнадцатеричном формате. Нюанс RC5-варианта: при старте он печатает служебную строку Arduino IR to Serial Bridge Ready (RC5) — программа её молча пропускает, это нормально.

Подключение к компьютеру

Подключите Arduino USB-кабелем к ПК — она появится в системе как COM-порт. Номер порта посмотрите в Диспетчере устройств Windows (раздел «Порты (COM и LPT)») и впишите его в параметр port файла config.toml. Скорость baud оставьте 115200 — она должна совпадать со скоростью в скетче.

Важно: перед запуском ir-comp-control_v0.0.5-win64.exe закройте Монитор порта Arduino IDE — иначе порт будет занят и программа не сможет его открыть.

Настройка (config.toml)

Конфигурационный файл создается автоматически при первом запуске.

Основные параметры:

Параметр Описание Пример
port Имя COM-порта, к которому подключен ИК-приемник "COM4"
baud Скорость передачи данных (обычно 115200) 115200

Секция [buttons]:

В этой секции сопоставляются коды, приходящие от пульта, и действия в системе.

[buttons]
"KEY_36" = "SYSTEM_SHUTDOWN" # Команда выключения
"KEY_B" = "VK_SPACE" # Эмуляция пробела
"KEY_3D" = "MOUSE_UP" # Движение мыши вверх

Доступные команды:

  1. Системные: SYSTEM_SHUTDOWN, WIN_D, ALT_TAB, ALT_F4.
  2. Мышь: MOUSE_UP, MOUSE_DOWN, MOUSE_LEFT, MOUSE_RIGHT, L_CLICK.
  3. Медиа: VK_VOLUME_UP, VK_VOLUME_DOWN, VK_VOLUME_MUTE, VK_PLAY_PAUSE, VK_NEXT, VK_PREV.
  4. Клавиши: VK_SPACE, VK_ENTER, VK_ESC, VK_BACKSPACE, VK_TAB, VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN.

Ускорение мыши

Программа использует адаптивный алгоритм перемещения:

  • Короткое нажатие: Мышь движется с фиксированной скоростью (5 пикселей за шаг).
  • Удержание > 0.3 сек: Чем дольше вы держите кнопку, тем быстрее летит курсор.

Алгоритм выключения

  1. При получении команды SYSTEM_SHUTDOWN проигрывается резкий системный звук.
  2. Появляется окно с 10-секундным обратным отсчетом.
  3. Для отмены:
    • Нажмите любую кнопку на ИК-пульте.
    • Или нажмите ОК / Закрыть в окне на экране.
  4. При отмене прозвучит мягкий сигнал уведомления, и таймер будет остановлен.

Режим отладки (Debug Mode)

Если кнопки пульта не реагируют, включите "Режим отладки" через меню в трее. При нажатии кнопок на пульте программа будет выводить окна с кодами (например, Получен: KEY_A1). Скопируйте этот код и добавьте его в config.toml.

Сборка из исходников

Требования: Windows, Go 1.26+.

Все зависимости подтянутся автоматически через go mod tidy.

Исходники лежат в src_golang/:

Файл Назначение
main.go Весь код программы
go.mod / go.sum Модуль и зависимости
icon.ico Иконка трея (вшита через go:embed), нарезана из for-icons.png
rsrc_windows_amd64.syso Ресурсы иконки самого exe для Проводника — не удалять, иначе сборка даст exe без иконки
config.toml Пример конфига (он же вшит в exe и создаётся рядом с ним при первом запуске)

Сборка релизного exe (без окна консоли, с ужатым размером):

cd src_golang
go mod tidy
go build -trimpath -ldflags "-s -w -H=windowsgui" -o ..\ir-comp-control_v0.0.5-win64.exe .

Если менялся icon.ico, перед сборкой перегенерируйте ресурсы exe :

rsrc -ico icon.ico -o rsrc_windows_amd64.syso

Лицензия

BSD Zero Clause License

Для микроконтроллера используется библиотека из https://github.com/GyverLibs/NecDecoder

About

Turn any IR remote (NEC/RC5) into a Windows PC controller — keyboard & mouse emulation, media keys, safe shutdown. Arduino + Go, runs in the system tray.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages