Оглавление:

ИК-пульт дистанционного управления компьютером: 4 шага
ИК-пульт дистанционного управления компьютером: 4 шага

Видео: ИК-пульт дистанционного управления компьютером: 4 шага

Видео: ИК-пульт дистанционного управления компьютером: 4 шага
Видео: ИК-управление на ардуино с любого пульта 2024, Ноябрь
Anonim
ИК-пульт дистанционного управления компьютером
ИК-пульт дистанционного управления компьютером

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

Проект состоит из нескольких частей:

  1. Дистанционное управление
  2. Программное обеспечение для ПК
  3. Модуль ИК-приемника

Шаг 1. Пульт дистанционного управления

Пульт дистанционного управления
Пульт дистанционного управления

С первым элементом - пультом дистанционного управления - разобраться несложно. Просто используйте любой ИК-пульт, который вам нравится. Тот, что продается, я использовал в комплекте с ИК-приемником - см. Рисунок. Единственная причина, по которой я выбрал этот тип, - это просто потому, что он у меня уже был дома.

Шаг 2: Программное обеспечение

Я создал программу для ОС GNU / Linux, работающую в терминале. Исходный код можно бесплатно скачать / использовать / поделиться / изменить. Чтобы скомпилировать код, просто введите в терминале команду типа gcc -o remotePC remotePC.c. Для запуска программы введите./remotePC.

Следующая информация на этом этапе адресована тем, кому интересно, как все работает.

Описание программы

Программа сначала проверяет, существует ли файл / dev / ttyACM0 или ttyACM1. Если это так, то проверяется, что идентификатор группы файла отличен от нуля. Это означает, что последовательный порт может считываться и записываться обычным пользователем. Затем в порт записываются два байта со значениями 0xAA 0x55, чтобы сигнализировать, что программа готова к приему данных. Входящие данные сравниваются с сохраненными значениями. Если совпадение найдено, выполняется предопределенное действие.

Регулятор громкости

Программа умеет включать / выключать звук, увеличивать / уменьшать уровень громкости на системном уровне. Это достигается с помощью программы pactl. Тогда команды выглядят так:

pactl set-раковина-mute 0 переключить

pactl набор-мойка-объем 0 + 10%

pactl набор-мойка-объем 0-10%

При необходимости установите требуемые пакеты.

Элемент управления VLC Media Player

Программа также может запускать / приостанавливать воспроизведение аудио / видео и менять дорожку на предыдущую / следующую в списке воспроизведения VLC Media Player. В этом случае используется шина рабочего стола. Команды:

dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc

/ org / mpris / MediaPlayer2 org.mpris. MediaPlayer2. Player. PlayPause

dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc

/ org / mpris / MediaPlayer2 org.mpris. MediaPlayer2. Player. Next

dbus-send --type = method_call --dest = org.mpris. MediaPlayer2.vlc

/ org / mpris / MediaPlayer2 org.mpris. MediaPlayer2. Player. Previous

Шаг 3: модуль ИК-приемника

Модуль ИК-приемника
Модуль ИК-приемника
Модуль ИК-приемника
Модуль ИК-приемника
Модуль ИК-приемника
Модуль ИК-приемника

Третья часть проекта самая сложная, но все же довольно простая. Идея состоит в том, что ИК-приемник будет выводить сигнал на MCU, который преобразует его в уникальный номер. Затем этот номер будет передан на ПК через USB.

Модуль предназначен для установки внутри корпуса ПК и подключения кабеля к USB-разъему на материнской плате. Если вы предпочитаете внешнее подключение к USB, вам придется внести незначительные изменения.

MCU

Я построил модуль на микроконтроллере PIC16F1829. Выбор MCU не критичен, вы можете использовать любой другой MCU, если у вас есть возможность настроить исходный код. Я выбрал этот ПОС по двум причинам. Во-первых, он у меня был в наличии, а во-вторых, его контакты были частично повреждены из-за интенсивного использования в различных тестовых проектах. Поэтому я хотел использовать его в постоянном проекте, прежде чем он станет полностью непригодным для использования.:-)

ИК-приемник

Вторая часть, на которой основан модуль, - это ИК-приемник VS1838B, упомянутый в первом шаге.

Конвертер UART / USB

Третья часть - это MCP2221, который представляет собой преобразователь UART / I2C / USB.

Задача состоит в том, чтобы объединить эти 3 части для создания модуля, который сможет принимать сигналы от ИК-пульта дистанционного управления и передавать их на ПК.

Проводка

На первом рисунке - схема тестирования на макетной плате. Во втором - схема подключения.

Перечень запчастей

1 шт. PIC16F1829 (или любой другой MCU)

1 шт. VS1838B (или любой другой ИК-приемник)

1 шт. MCP2221 (или любой другой конвертер UART / USB)

2 шт. 4-контактный разъем

6-контактный разъем - 1 шт.

Резистор 100R - 1 шт.

2 шт резистор 10 кОм

2 шт резистор 330R

Конденсатор 470 нФ - 1 шт.

2 шт. Электролитический конденсатор 4,7 мкФ

Переключатель 1 шт. (Опционально)

Сборка печатной платы

Соберите модуль, используя схему. Вы можете использовать универсальную плату или создать собственную печатную плату. В последнем случае я предоставил файлы KiCad в архиве ниже.

Прошивка

Исходный код PIC, написанный с использованием MPLAB X IDE и компилятора XC8, доступен для загрузки ниже.

Примечания к исходному коду

Для тех, кто хотел бы знать, что именно делает программа, это следующие строки.

После завершения всех настроек горит красный светодиод, и MCU ожидает данных 0x55AA. После этого светодиод загорится зеленым, и MCU начнет обнаруживать сигнал от ИК-приемника с использованием прерываний. Он измеряет и записывает временные интервалы, в течение которых сигнал находится на высоком и низком уровнях. Затем это время преобразуется в 32-битное число, которое отправляется на ПК.

Соотношение между временем и окончательным числом определяется протоколом NEC.

Шаг 4: Как использовать устройство

Как пользоваться устройством
Как пользоваться устройством
Как пользоваться устройством
Как пользоваться устройством
Как пользоваться устройством
Как пользоваться устройством

Прошивка

Загрузите прошивку на PIC. Использую программатор PICkit 3.

Аппаратное обеспечение

Установите модуль ИК-приемника, как показано на рисунках:

  1. Подключите USB-разъем либо к внутреннему USB-разъему на материнской плате внутри корпуса ПК с помощью соответствующего 4-проводного кабеля, либо к внешнему USB-разъему с помощью стандартного USB-кабеля. Во втором случае вам нужно чем-то помочь себе, например как показано на 3-м рисунке для вдохновения.
  2. Подключите силовой кабель 5 В от источника питания внутри корпуса ПК к 4-контактному разъему. Или запитать модуль другим способом в случае внешнего использования.

Найдите описание контактов разъема USB на материнской плате. Я не уверен, соответствует ли проводка каким-либо стандартам, поэтому лучше убедиться. В моем случае есть два ряда контактов, по 5 контактов в верхнем ряду и 4 контакта в нижнем. Слева направо контакты: + 5 В, D-, D +, Gnd. 5-й пин в первом ряду не подключен. Я подключил кабель, как показано на второй картинке.

Программное обеспечение

Запускаем программу в терминале. Если все пойдет правильно, последним сообщением программы будет «ожидание данных…». Теперь, когда вы нажмете кнопку на пульте дистанционного управления, полученный код появится в терминале. Таким образом, вы будете знать, какая кнопка издает какой код.

Теперь вас ждут кое-какие вещи по программированию, но не беспокойтесь. В исходном коде программы нужно изменить всего несколько вещей, чтобы программа реагировала на ваш пульт дистанционного управления. Откройте файл remotePC.c в текстовом редакторе или в какой-нибудь IDE, если хотите, и замените мои коды на свои. Просто нажимайте кнопки, которые вы собираетесь использовать для каждого действия, одну за другой. Просто скопируйте коды, которые появляются в терминале, и вставьте их в исходный код в место с соответствующим действием.

Когда вы закончите, завершите программу и перекомпилируйте код с помощью команды gcc -o remotePC remotePC.c. Запустите программу еще раз, и с этого момента она будет реагировать на ваш пульт дистанционного управления.

Я использую этот способ с жестко запрограммированными действиями в программе, поскольку считаю бессмысленным тратить свое время на дальнейшее развитие проекта до состояния, когда можно добавлять / изменять коды / действия, например, в удобной для пользователя графической среде. Но если вы хотите сделать это или даже больше, вы можете.

Рекомендуемые: