МАРСОХОД

Open Source Hardware Project

Проекты Altera Quartus II для платы Марсоход

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

Управление компьютером ИК пультом от телевизова

В принципе, управлять компьютером с пульта ДУ (дистанционного управления) - это не бог весть какая задача. Даже более того, плата Марсоход для этой задачи несколько избыточна. Все из-за того, что существует такой open-source проект LIRC (Linux Infrared Remote Control). Есть подобный проект и для Windows. Он называется WinLIRC.
Проект LIRC - это набор программ и простейшего аппаратного устройства для приема сигналов от пультов дистанционного управления. Я думаю в интернете вы без труда найдете схемы такого приемника.

Тем не менее, позвольте мне все таки выполнить свой проект. Возможно я изобретаю велосипед, но в процессе этой работы мы поймем, как все это работает. Ведь нам это самое главное? Кроме того, этот мой проект - это ступенька к следующему проекту, который я уже готовлю (и скоро вы о нем узнаете)...

Я предлагаю следующее. У нас уже был проект "Последовательный порт". В нем был реализован Verilog модуль приемо-передатчика последовательного порта - он нам пригодится. В том проекте плата Марсоход подключалась к последовательному порту компьютера через преобразователь уровней, который еще тогда я спаял. Там же есть его фото и  схема. Еще у нас был проект "ИК приемник". В той статье как раз рассказывалось, что из себя представляет сигнал, принятый приемником ИК излучения от пульта ДУ. Я сделаю новый проект платы Марсоход, в котором соединю ИК приемник и последовательный порт. Наше устройство будет передавать в компьютер уже готовые "коды" нажатых клавиш. Для компьютера я напишу на "С" (Microsoft Visual Studio) простую программку, которая будет печатать принятые коды, ну и выполнять на компьютере какие-то назначенные действия.

Как и раньше, я буду использовать микросхему ИК приемника ILMS5360 (icon Описание на приемник инфракрасного излучения ILMS5360 (277.75 Кбайт). Она прямо вставляется в специальный разъемчик на плате Марсоход (смотри icon Схема платы Марсоход (52.82 Кбайт)). Таким образом, выход микросхемы подключается ко входу ПЛИС, который в большинстве проектов у нас называется key[3].

Итак, как же выглядит сигнал принятый от ИК пульта приемником? Формат пакета был подробно описан в нашей статье "ИК приемник":

Сигнал ИК приемника

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

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

Весь проект для платы Марсоход вот здесь: icon Управление компьютером с пульта телевизора (102.3 Кбайт)

В этом же архиве есть и программка для Windows (ir_ctrl.exe) с исходниками, которая открывает последовательный порт и читает из него коды от пульта. Программа печатает принятые коды и на некоторые из них выполняет действие на компьютере. Я симулирую нажатие некоторых клавиш компьютера, связанных с программой плеера. Я использую пульт от телевизора Samsung, посмотрел какие он присылает коды. Обрабатываются следующие коды:

0xE0E0E01F volume up
0xE0E0D02F volume down
0xE0E052AD pause
0xE0E0A25D prev
0xE0E012ED next
0xE0E0E21D play
0xE0E0629D stop

Программа ir_ctrl.exe принимает имя последовательного порта, например, COM4 в коммандной строке.

Я написал код приемника ИК сигнала на Verilog, там есть много комментариев и я думаю вы сможете разобраться.

Код приемника-передатчика для последовательного порта вот здесь.

Чтобы была возможность получше понять, что там внутри этих двух модулей происходит я написал Verilog "тестбенч". Я опять использую программу Icarus Verilog для симуляции модулей проекта.

Ниже несколько снимков экрана симулированных сигналов (просмотр сигналов был сделан с помощью программы GtkWave). Кликните на картинку, что бы увеличить ее:

Сигнал от ИК приемника

Обратите внимание, что ИК сигнал гораздо "медленнее", чем интерфейс последовательного порта, который я запрограммировал на скорость 38400 бит/секунду. Именно по этому я не стал принимать 32-х битный код от пульта, а сразу передаю байт за байтом по мере их прихода от ИК приемника. Вот здесь видно крупнее: от ИК приемника принят 3-й байт 0x52 и передается в последовательный порт:

Сигнал от ИК приемника

Теперь, чтобы продемонстрировать, что у меня получилось я покажу небольшое видео:

Комментарии  

0 #3 Anton 16.12.2011 07:22
Интересный довод - чтобы познакомиться с микроскопом, попробуем забить им гвоздь :P
-1 #2 chirik 20.03.2011 10:02
Цитирую Sworfly:
А зачем для этого использовать ПЛИС??? Там нескольких резисторов, конденсатора и транзистора хватает за глаза :-)

Согласен, проще сделать как вы сказали. Однако, это прошлый век) День сегодняшний это FPGA, IP блоки. Цель автора показать современные инструменты разработки электроники, а начинать это лучше с простых проектов, например как этот. 8)
PS хотя проект не самый простой)
+1 #1 Sworfly 08.03.2011 15:37
А зачем для этого использовать ПЛИС??? Там нескольких резисторов, конденсатора и транзистора хватает за глаза :-)

Добавить комментарий


Защитный код
Обновить


GitHub YouTube Twitter
Вы здесь: Начало Проекты Проект Марсоход ИК пульт к компьютеру