ИК-приёмник на ПЛИС

ПЛИС, ик-приемникМаленькая заметка про клевые штуки под названием «ПЛИС» (кто не знает отправляю на википедию: Что такое ПЛИС?). Привлекают они меня своей компактностью, возможностями и гибкостью программирования! Обычно делается схема, ставится микроконтроллер, всё это паяется, отлаживается, ковыряется… В ПЛИС всё программируется, в том числе и схема =), конечно устройство из одной ПЛИС невозможно, но она здорово упрощает процесс создания. Особенно проектирование логики.

Недавно, примерно, месяца два назад ко мне в руки попала «учебная» плата с ПЛИСиной ACEX. ПЛИСинка слабенькая, но мне для эксперимента её хватило выше головы. На экспериментировался будь здоров. Идея заключалась в том, чтобы хватать ик-сигнал и передавать его на компьютер с компа.  Ик-сигнал хватался после приказа компьютера. В проекте использовался модуль юсб с микросхемой ftdi FT245RL на борту, ик-приёмник на 38КГц (взял наобум, где то прочитал что самые распространённые 36-40КГц вот и решил взять золотую середину).

Аппаратная часть

Собственной вот сам модуль, скажу сразу что в документации есть опечатка по управляющим входам, поэтому курите родной даташит на английском к микросхеме FT245RL. Модуль может работать как от 5В так и от 3.3В (выставляется перемычкой на нём). Вторая перемычка задаёт выбор питания модуля: либо с платы либо от самого юсб.

На плате стоит генератор на 10Мгц, который подключен к самой ПЛИС и к юсб модулю. Необходим он для правильного обмена данными между ними.

Вот вся плата в сборе. Находится на жестком «прессинге»(aka «изучением ПЛИС на практике») под моими тестами =). Ик приёмник тут ещё не впаян, он паявится потом, когда возникнет идея не останавливаться на изучении обмена ПЛИС с компом по юсб. А появится он прям таки через несколько дней помоему… =)

Припаивал ик-приёмник по схеме которую нашел в интернете, впервые работал с ик-сигналами поэтому для меня это был дремучий лес. Ещё не мог понять как работает сам приёмник и что он преобразует. Оказалось всё просто: с пульта идет сигнал определенной частоты, собственно или идёт или не идёт. Если есть этот сигнал, то с ик-приёмника идет единица, нет — ноль. Всё больше нет никаких заморочек. Диаграммы этого сигнала можно увидеть ниже. Теперь на счет протоколов… Тут вообще, как мне показалось, полная свобода — сколько фирм столько и протоколов. У меня под рукой были пульты трёх фирм: Sony(TV), Elenberg(DVD player) и Beholder(TV tuner). Их же диаграммы ик-сигнала можно видеть в конце статьи.

Программа на комп

Для работы с микросхемой FT245RL есть библиотеки. Документация есть на сайте ftdi с отличными примерами. Программа для компа сначала писалась на С++, по причине того, что я как то не подумал посмотреть библиотеки для работы с FT245RL под dot Net… А потом посмотрел и был очень рад, сразу оставил проект на С++ и написал прогу на C#.

Итоги всей заварушки

Закончив программить можно насладиться результатами, которых я очень долго ждал. И в итоге всё таки дождался, хотя первая попытка «аппаратно-программного комплекса» не заработала… Да-да, когда я в первый раз дописал свою задумку на VHDL для ПЛИС и прогу на комп на С++, то ничего дельного не получилось, прилетела какая-то непонятная фигня. Помучился около недели, если мне не изменяет память, потом закинул всё это дело и думал почему же не работает. В итоге, через некоторое время всё переписал заново… Получилось намного быстрее и всё заработало! Вот такие чудеса. Ниже представлены результаты. Первые из них сделал с пульта sony. На этих трёх скриншотах можно отследить не только сигнал, но и эволюцию программы =). На первом видно, четкие сигналы, но расстояние между ними малое, это я не учел старшие биты… Да в тот момент мне нужны были хоть какие-то результаты, а потом уже начал приводить всё в порядок. На среднем скришноте добавил учет старших бит. А на правом, не помню почему такое маленькое расстояние между импульсами… Наверно опять что-то перемудрил… А может и наоборот так и должно быть, может на среднем намудрил… Дело не в этом, главное же всё работает! =) Циферки на правом скриншоте это время импульсов в микросекундах. Можете сравнить со спецификацией на пульт sony. Ну и описание данных: стартовый бит, команда, и адрес. Адрес — устройство  на которое отправляется сигнал, подробнее читайте на www.sbprojects.com .

ТВ-тюнер Beholder. Отличия от импульсов sony заметно. Заключаются они в том,  что нужный сигнал приходит только при нажатии на кнопку, а потом идут «бестолковые» сигналы, на которые устройства не влияют.

С того же пульта от тюнера, кнопки от  1 до 0, сверху вниз.

Подробно отскриншотил один сигнал, просто было интересно какой длительности импульсы.

DVD плеер Elenberg, очень похоже на сигналы с пульта от тв-тюнера.

Вот и всё, в заключение могу лишь сказать что опыта я нахватался прилично, судя по тем меркам что я до этого знал. =) Было безумно интересно и конечно положительны результат дал мне новой энергии для продолжения, чего и всем желаю.

Запись опубликована в рубрике программирование, цифровая электроника. Добавьте в закладки постоянную ссылку.

Один комментарий на «ИК-приёмник на ПЛИС»

  1. Санек говорит:

    Жестишь мегапроггер стал=)

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*