IR comp control — это легковесная утилита для ОС Windows, написанная на языке Go, которая позволяет управлять компьютером с помощью обычного ИК-пульта через последовательный порт (COM-порт).
Программа превращает ваш ИК-пульт в полноценный контроллер для мультимедиа и навигации. Она поддерживает эмуляцию нажатий клавиш, системные команды (выключение) и "умное" управление курсором мыши с логарифмическим ускорением. Утилита работает в системном трее, не занимает места на экране и имеет встроенную систему защиты от случайного выключения ПК.
- Эмуляция клавиатуры: Поддержка большинства мультимедийных и стандартных клавиш (Volume, Play/Pause, Win+D и др.).
- Умная мышь: Плавное перемещение курсора кнопками ИК-пульта.
- Безопасное выключение: Таймер на 10 секунд с возможностью отмены любой кнопкой пульта или закрытием окна.
- Работа в трее: Удобное меню для перезагрузки конфига, открытия настроек и режима отладки.
- Zero-GUI: Отсутствие лишних окон консоли при работе.
- Плата Arduino (Uno, Nano и подобные).
- Инфракрасный приёмник с тремя выводами (например, TSOP4838, VS1838B и аналоги).
- ИК-пульт, USB-кабель для подключения Arduino к компьютеру, Arduino IDE.
| Вывод приёмника | Куда подключить |
|---|---|
| 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 — иначе порт будет занят и программа не сможет его открыть.
Конфигурационный файл создается автоматически при первом запуске.
| Параметр | Описание | Пример |
|---|---|---|
| port | Имя COM-порта, к которому подключен ИК-приемник | "COM4" |
| baud | Скорость передачи данных (обычно 115200) | 115200 |
В этой секции сопоставляются коды, приходящие от пульта, и действия в системе.
[buttons]
"KEY_36" = "SYSTEM_SHUTDOWN" # Команда выключения
"KEY_B" = "VK_SPACE" # Эмуляция пробела
"KEY_3D" = "MOUSE_UP" # Движение мыши вверх
- Системные: SYSTEM_SHUTDOWN, WIN_D, ALT_TAB, ALT_F4.
- Мышь: MOUSE_UP, MOUSE_DOWN, MOUSE_LEFT, MOUSE_RIGHT, L_CLICK.
- Медиа: VK_VOLUME_UP, VK_VOLUME_DOWN, VK_VOLUME_MUTE, VK_PLAY_PAUSE, VK_NEXT, VK_PREV.
- Клавиши: VK_SPACE, VK_ENTER, VK_ESC, VK_BACKSPACE, VK_TAB, VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN.
Программа использует адаптивный алгоритм перемещения:
- Короткое нажатие: Мышь движется с фиксированной скоростью (5 пикселей за шаг).
- Удержание > 0.3 сек: Чем дольше вы держите кнопку, тем быстрее летит курсор.
- При получении команды SYSTEM_SHUTDOWN проигрывается резкий системный звук.
- Появляется окно с 10-секундным обратным отсчетом.
- Для отмены:
- Нажмите любую кнопку на ИК-пульте.
- Или нажмите ОК / Закрыть в окне на экране.
- При отмене прозвучит мягкий сигнал уведомления, и таймер будет остановлен.
Если кнопки пульта не реагируют, включите "Режим отладки" через меню в трее. При нажатии кнопок на пульте программа будет выводить окна с кодами (например, Получен: 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.sysoBSD Zero Clause License
Для микроконтроллера используется библиотека из https://github.com/GyverLibs/NecDecoder