Модульный проект GraniCubicle.
Модификация блока 4 для 'PS/2'
Рис. 1 Внешний вид универсального сэмпла.
Совместимого с проектом
IgorPlug2.
Вступление.
В соответствии с заданием была разработана самообучающаяся система, включающаяся в разрыв
PS/2 интерфейса, которая позволяет:
- Поддерживать работу с тремя самыми распространёнными кодировками ПДУ, то есть,
совместима с 75% пультов (по умолчанию настроена на RC5).
- По команде с ПДУ система вклиниваться в PS/2 интерфейс и вводить подготовленный
пользователем макрос, эмулируя при этом клавиатуру.
- По команде с ПДУ проводить самообучение (ввод макроса) со штатной клавиатуры (не
подключая дополнительных блоков, модулей и кабелей).
- Во время обучения не отключает клавиатуру от системы (обучение реализовано через
монитор шины), что в свою очередь позволяет пользователю видеть набираемый макрос.
- Экономить память и вводить длинные посылки от 20 до 40 скан кодов на кнопку
(благодаря нескольким режимам ввода макроса с сочетанием кнопок и без - все подряд).
- После обучения использовать систему без внешней клавиатуры (при отсутствии клавиатуры
активируется режим эмуляции ответов клавиатуры).
- Автоматический автодетект подключения внешней клавиатуры (при "неожиданном" появлении
клавиатуры, в обход нормативам HostSwap'ом режим N6 отключается сам).
Как проходила разработка.
Разработка системы была поделена на две неравные части (этапа). В большую первую часть,
длившуюся 4 рабочих недели (20 рабочих дней по 8 часов каждый), были включены:
- Поиск документации на PS/2 интерфейс (как выяснилось в последующем официальной
документации в свободном доступе на PS/2 интерфейс нет, а то что есть "не совсем"
соответствует действительности).
- Разработка схемы коммуникационного модуля, по найденной в сети документации.
- Сборка макетной платы (как выяснилось, первоначально разработанная схема по доступной
в сети документации не позволяла корректно обрабатывать все запросы при эмуляции,
в результате чего пришлось менять схему коммуникационного модуля, поднимать
диагностический RS232 и собирать второй стенд для испытаний).
- Отладка обмена данными с компьютером и отладка алгоритмов эмуляции клавиатуры.
- Поиск схемы, сборка и отладка логического анализатора (так как в последствии
выяснилось, что доступная в Интернете документация на PS/2 не во всём соответствует
реальности, а для обслуживания аппаратной части логического анализатора потребовалось
установить Win98 на два компьютера и бегать с системником под мышкой к "не типичным"
обладателям PS/2 интерфейса).
- Разработка алгоритма работы с ЕПРОМ'ом и нескольких структур хранения в ЕПРОМ'е
данных (для поддержки нескольких режимов ввода макроса).
- Создание прозрачного режима обучения на основе перехвата скан кодов.
- Создание системы декодирования 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) - загорается при:
- правильно декодированных командах.
- сразу после старта, если клавиатура была удачно найдена (до прихода репорта об
окончании инициализации клавиатуры).
- во время перехвата команд клавиатурой. (сразу после перехвата загорается красный
светодиод)
- попарно перемигиваются с красным во время обучения новым кнопкам.
Красный светодиод (LedR) - загорается при:
- во время приёма с фотоприёмника
- сразу после старта, если клавиатура не ответила на команду инициализации.
- сразу после перехвата байта с шины
- попарно перемигиваются с Жёлтым во время обучения новым кнопкам.
Описание режимов работы.
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" (находятся рядом с пробелом).
Ограничение демонстрационной версии.
Функциональность демонстрационной версии практически соответствует полной, за исключением
функциональности изъятых блоков.
А именно:
- отсутствует блок навигации по содержимому EPROM. В результате обучение любой кнопки приводит к обучению кнопки номер 6
- Все остальные цифровые кнопки возвращают номер цифры 0-9.
- Для хранения описания кнопок используется EPROM процессора, а не ПЗУ. В результате доступны только кнопка включения PW и цифровые 0 - 9 (остальные не поместились)
- Реализован только один из двух режимов обучения. (во втором кнопок 40, но без применения комбинаций)
- Отсутствует режим обучения произвольному пульту (доступен только базовый - RC5)
То есть, демонстрационная прошивка предназначена, для тестирования интерфейса связи с
компьютером (в этой части она полнофункциональна) и проведения демонстрации возможности
блока.
Ограничения.
Устройство разработано по принципу КАК ЕСТЬ и автор не несёт ответственности за явный
(или не явный) ущерб, причинённый в результате повторения.
То есть все эксперименты вы делаете на свой страх и риск.
Комментарии
>