Найти в Дзене
Паяльник

ИК пульт для компьютера

Пользуясь компьютером в качестве "кинотеатра" стало влом вставать с дивана и отключать комп. Подумал и решил изобрести очередной велосипед. Нашёл в загашнике плату на STM32 bluepill и пульт управления: Потыкав осциллографом, выяснил что у пульта протокол NEC. На скриншоте ниже представленна осциллограма кнопки выключения. В интернете много описания. Таймер настроен на измерение ширины импульса, только "верхеней" части. То есть, по первому восходящему фронту таймер обнуляется, по нисходящему вызывается коллбек. В соответствии с шириной импульса соответственно "1" или "0". В интернете нашел описание протокола, подумав немного, привязал выход инфракрасного приёмника TSOP4838 ко входу второго канала 3-его таймера STM32. Тут надо быть немного внимательным, есть разные синие таблетки с STM32F103C8 и STM32F103C6, у первой есть 4-ый таймер (изначально пытался использовать его), у моего экземпляра STM32F103C6 только 3 таймера, соответственно используется вывод RB5. Также показаны стандартные вы

Пользуясь компьютером в качестве "кинотеатра" стало влом вставать с дивана и отключать комп. Подумал и решил изобрести очередной велосипед. Нашёл в загашнике плату на STM32 bluepill и пульт управления:

Потыкав осциллографом, выяснил что у пульта протокол NEC. На скриншоте ниже представленна осциллограма кнопки выключения. В интернете много описания. Таймер настроен на измерение ширины импульса, только "верхеней" части. То есть, по первому восходящему фронту таймер обнуляется, по нисходящему вызывается коллбек. В соответствии с шириной импульса соответственно "1" или "0".

-2

В интернете нашел описание протокола, подумав немного, привязал выход инфракрасного приёмника TSOP4838 ко входу второго канала 3-его таймера STM32. Тут надо быть немного внимательным, есть разные синие таблетки с STM32F103C8 и STM32F103C6, у первой есть 4-ый таймер (изначально пытался использовать его), у моего экземпляра STM32F103C6 только 3 таймера, соответственно используется вывод RB5. Также показаны стандартные выводы: подключение светодида PC13, два кристалла, USB и выводы второго UARTа - их использовал для отладки. Во второй вкладке изменил частоту шины на 24 МГц. На рисунке показан скриншот из CubeMx.

-3

Спаяв инфракрасный приёмник к плате, получилось следующее:

-4
Полазив по интернету нашел проект где человек сделал похожий проект, но на энкодере. Взяв оттуда дискриптор HID устройства, немного его изменив получил два устройства 
Полазив по интернету нашел проект где человек сделал похожий проект, но на энкодере. Взяв оттуда дискриптор HID устройства, немного его изменив получил два устройства 

USB Input Device позволяет регулировать громкость, функцию mute. На клавиатуру возложены следуюшие функции:

  • кнопка выключения, через функцию Shutdown,
  • кнопка SEL - это пробел, пауза в Media Player
  • кнопка перемотка назад и вперёд - Ctrl+Left и Ctrl+Right соответственно в Media Player.

Я не стал замарачиваться со всеми остальными кнопками и командой повтора от пульта. Кто хочет тот может изменить самостоятельно. Единственно, что надо сказать, если компилировать проект из куба то он затрёт все USB файлы, потому открывайте файл сразу в Keil.

В приложении полный проект в Keil, а также бинарник который можно загрузить напрямую, благо в интернете много примеров как загрузить программу в чип. Единственно, не стоит программу запускать через Куб, иначе он потрёт файлы дискритора. Вот думаю добывить энкодер и перекомпилировать на маленький stm. Если кому-то иетересно - дайте знать.

Прикрепленные файлы:

Автор: Mesha