Amateur Radio Station R9AL

Модульный проект GraniCubicle.

Модификация блока 4 для 'PS/2'





Рис. 1 Внешний вид универсального сэмпла.

Совместимого с проектом IgorPlug2.



Вступление.

В соответствии с заданием была разработана самообучающаяся система, включающаяся в разрыв PS/2 интерфейса, которая позволяет:

  1. Поддерживать работу с тремя самыми распространёнными кодировками ПДУ, то есть, совместима с 75% пультов (по умолчанию настроена на RC5).
  2. По команде с ПДУ система вклиниваться в PS/2 интерфейс и вводить подготовленный пользователем макрос, эмулируя при этом клавиатуру.
  3. По команде с ПДУ проводить самообучение (ввод макроса) со штатной клавиатуры (не подключая дополнительных блоков, модулей и кабелей).
  4. Во время обучения не отключает клавиатуру от системы (обучение реализовано через монитор шины), что в свою очередь позволяет пользователю видеть набираемый макрос.
  5. Экономить память и вводить длинные посылки от 20 до 40 скан кодов на кнопку (благодаря нескольким режимам ввода макроса с сочетанием кнопок и без - все подряд).
  6. После обучения использовать систему без внешней клавиатуры (при отсутствии клавиатуры активируется режим эмуляции ответов клавиатуры).
  7. Автоматический автодетект подключения внешней клавиатуры (при "неожиданном" появлении клавиатуры, в обход нормативам HostSwap'ом режим N6 отключается сам).

Как проходила разработка.

Разработка системы была поделена на две неравные части (этапа). В большую первую часть, длившуюся 4 рабочих недели (20 рабочих дней по 8 часов каждый), были включены:

  1. Поиск документации на PS/2 интерфейс (как выяснилось в последующем официальной документации в свободном доступе на PS/2 интерфейс нет, а то что есть "не совсем" соответствует действительности).
  2. Разработка схемы коммуникационного модуля, по найденной в сети документации.
  3. Сборка макетной платы (как выяснилось, первоначально разработанная схема по доступной в сети документации не позволяла корректно обрабатывать все запросы при эмуляции, в результате чего пришлось менять схему коммуникационного модуля, поднимать диагностический RS232 и собирать второй стенд для испытаний).
  4. Отладка обмена данными с компьютером и отладка алгоритмов эмуляции клавиатуры.
  5. Поиск схемы, сборка и отладка логического анализатора (так как в последствии выяснилось, что доступная в Интернете документация на PS/2 не во всём соответствует реальности, а для обслуживания аппаратной части логического анализатора потребовалось установить Win98 на два компьютера и бегать с системником под мышкой к "не типичным" обладателям PS/2 интерфейса).
  6. Разработка алгоритма работы с ЕПРОМ'ом и нескольких структур хранения в ЕПРОМ'е данных (для поддержки нескольких режимов ввода макроса).
  7. Создание прозрачного режима обучения на основе перехвата скан кодов.
  8. Создание системы декодирования RC5, М96, М99 протоколов IR (покрывает 75% пультов от бытовой техники).

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

     В первый этап вошла вся работа по PS/2 интерфейсу, для проведения полнофункциональной демонстрации работы системы.

Прошивка к модулю.

Демонстрационная прошивка для демонстрации.
для процессора ATMega88 и кварца 11.0592 Mhz.
(Кварц 12 Mhz тоже подходит, при этом можно залить прош. с USB, но без диагностического RS232 в этой прошивке).

     Ко второму этапу не переходили, по причине отсутствия обоюдного подтверждения завершения первого этапа.





Рис. 2 Универсальный сэмпл с коммуникационной платой.


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

Описание схемы.

     Чтобы максимально унифицировать систему и упростить разработку системы, было принято решение разрабатывать проект на базе обкатанного годами железа IgorPlug2, сменив кварц для согласования со скоростями RS232 и применив дополнительно разработанный модуль стыковки с PS/2 интерфейсом.

Плюсы такого решения очевидны - можно использовать наработанные и проверенные решения, применяемые в унифицированном модуле - перевёртыш.

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

А для упрощения смены зашитого набора ХЭШей кнопок можно залить прошивку от проекта IgorPlug2 и использовать комплектные к нему, штатно наработанные средства захвата и сохранения таймингов.

Универсальный вариант - перевёртыш.
(это схема стандартной реализации проекта IgorPlug2) - для просмотра, для печати.

Упрощённый вариант схемы под данную ветвь - для печати.

Для упрощения конструкции можно не устанавливать весь набор компонентов, а просто установить требуемые.

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

Своего дизайна печатной платы у этого проекта на данный момент нет, но есть подходящая вариация от универсального варианта.

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

Немного пояснений по сборке.

ДО ВКЛЮЧЕНИЯ прозвонить тестером.

НУМЕРАЦИИ в разъёмах PS2 - НЕ ДОВЕРЯТЬ!!!

Мы чертили под тот разъём PS2, что под рукой был, какой у вас МЫ НЕ ЗНАЕМ (и видели разные модификации и нумерации пинов)!!!

Предвидя вопрос невнимательных читателей о двух платах:

"Почему там две платы"?
Поясню - это универсальный сэмпл и коммуникационный модуль. Что должно получиться - бутерброд из двух односторонних плат фольгой наружу, соединять или разъёмами или проводами до 5 см.

Следующим вопросом обычно спрашивают:
"А разве на одной сделать было нельзя"?
Почему нельзя - можно, её создание внесено вовторой этап разработки - "разработка эскиза дизайна печатной платы под заданный корпус".

И далее по теме:
"А для чего RS232, разве он нужен"?
Для наладки и дебагинга - сверх необходим.
Для настройки под ВАШ пульт нужен или RS232, или USB.
После завершения налад.работ и настройки на ВАШ пульт - НЕТ.

Вопрос новичков:
"А для чего нужно внешнее +5, разве от компа взять нельзя"?
Это дополнительная защита, от случайностей. Если перепутать два конца или поставить МАЛЕНЬКУЮ КЛЯКСУ ОЛОВОМ, то в лучшем случае девайс не заведётся, а в худшем ВЫГОРИТ МАТЕРИНСКАЯ плата.

И финальный вопрос:
"А на макетке собрать и соединить проводами можно"?
Хоть на картонке, надёжно скрепив скотчем и окончательно зафиксировав китайским термоклеем. Только провода на I2C шину должны быть не длиннее 5 см и замыканий из-за гибкой основы быть не должно.





Рис. 3 Работаю с логическим анализатором. (выясняю тайминги экспериментальным путём).


Назначение светодиодов.

Зелёный светодиод (LedG) - включается при захвате устройством шины. Устройство размыкает связь "компьютер - клавиатура" и начинает передавать данные в один из них, эмулируя при этом второй.

Жёлтый светодиод (LedY) - загорается при:
  1. правильно декодированных командах.
  2. сразу после старта, если клавиатура была удачно найдена (до прихода репорта об окончании инициализации клавиатуры).
  3. во время перехвата команд клавиатурой. (сразу после перехвата загорается красный светодиод)
  4. попарно перемигиваются с красным во время обучения новым кнопкам.
Красный светодиод (LedR) - загорается при:
  1. во время приёма с фотоприёмника
  2. сразу после старта, если клавиатура не ответила на команду инициализации.
  3. сразу после перехвата байта с шины
  4. попарно перемигиваются с Жёлтым во время обучения новым кнопкам.

Описание режимов работы.

1) Сразу после включения - 1 секунду горят все три светодиода, потом принимается попытка инициализации клавиатуры.

1А) если клавиатура удачно инициализировалась - зажигается жёлтый и переключаем управление на клавиатуру, которая через секунду отправляет посылку свидетельствующую об удачной инициализации, тогда жёлтый светодиод сменяет красный светодиод.

1B) если клавиатура не ответила - зажигается красный и включается режим эмуляции клавиатуры.

1С) Если в обход стандарта (а стандарт HOT-Swap запрещает) пользователь подключил клавиатуру, то система инициализирует клавиатуру (горят секунду красный и зелёный), после удачной инициализации загорается жёлтый светодиод и отключается режим эмуляции клавиатуры.

2А) принятие посылки с ИР от известного пульта: горит жёлтый светодиод и в такт приёма посылок подмигивает красный светодиод. А зелёный включается при врезках в шину и отправке скан кода.

2В) принятие посылки с ИР от неизвестного пульта: в такт приёма посылок подмигивает красный, зелёный и желтый не горят.

Обучение новым кнопкам.

Этот режим используется для смены скан-кодов, выдаваемых при нажатии кнопки на пульте (режим становится доступным только при наличии клавиатуры).

1) Для входа в режим обучения надо на пульте последовательно нажать 5 кнопок (для верности каждую кнопку рекомендовано нажимать не менее одной секунды)


PW - Управляющая кнопка
Key0 - Цифровая кнопка "0"
Key1 - Цифровая кнопка "1"
PW - Управляющая кнопка
?? - Обучаемая кнопка

"Обучаемая кнопка" - это та кнопка, у которой вы хотите сменить скан коды.

2) Если сочетание было набрано правильно, то система начинает по очереди мигать красным и жёлтым светодиодами.

2А) Если в течении 35 секунд не было введено ни одной кнопки - система выходит из этого режима без сохранения набранных кнопок (35 секундный интервал отсчитывается от последней нажатой кнопки).

2B) При вводе более 20 кнопок система выходит из этого режима с сохранением.

2С) При нажатии одновременно двух "ALT" (находятся рядом с пробелом).

Ограничение демонстрационной версии.

Функциональность демонстрационной версии практически соответствует полной, за исключением функциональности изъятых блоков.

А именно:
  1. отсутствует блок навигации по содержимому EPROM. В результате обучение любой кнопки приводит к обучению кнопки номер 6
  2. Все остальные цифровые кнопки возвращают номер цифры 0-9.
  3. Для хранения описания кнопок используется EPROM процессора, а не ПЗУ. В результате доступны только кнопка включения PW и цифровые 0 - 9 (остальные не поместились)
  4. Реализован только один из двух режимов обучения. (во втором кнопок 40, но без применения комбинаций)
  5. Отсутствует режим обучения произвольному пульту (доступен только базовый - RC5)


То есть, демонстрационная прошивка предназначена, для тестирования интерфейса связи с компьютером (в этой части она полнофункциональна) и проведения демонстрации возможности блока.

Ограничения.

Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный (или не явный) ущерб, причинённый в результате повторения.

То есть все эксперименты вы делаете на свой страх и риск.



Комментарии







Copyright © R9AL 2009 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования