Главная Проекты Идеи Soft О авторе
 

Модульный проект GraniCubicle.
Модификация блока 4 для 'PS/2'.

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

Совместимого, как с проектом IgorPlug2, так и с Управляемым реле, а также с Блоком 4 для 'PS/2' проекта GraniCubicle.

На тему PS/2 клавиатур подготовлено ещё два устройства:
PS/2 часть проекта GraniCubicle    и    Переходник из PS/2 в RS232 и в IRout.

План.

       1) Вступление.
       2) Как проходила разработка.
       3) Прошивка к модулю.
       4) Методика прошивки и Fuse биты.
       5) Описание схемы.
       6) Немного пояснений по сборке.
       7) Назначение светодиодов.
       8) Описание режимов работы.
       9) Обучение новым кнопкам.
       10) Ограничение демонстрационной версии.

Вступление.

       В соответствии с заданием была разработана самообучающаяся система, включающаяся в разрыв 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 Универсальный сэмпл с коммуникационной платой.
Увеличить

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

Методика прошивки и Fuse биты.

       В комплекте с прошивкой идёт файл автоматизированной прошивки для PonyProg. Если вы пользуетесь другим программатором - напомню у Atmel "1" это НЕ запрограммировано, а у PonyProg наоборот, так-что будьте внимательны... (в случае использования PonyProg необходимо только запустить файл и ответить "OK" для LPT-SPI программатора).

Как работать с программатором под управлением PonyProg. - тут.
А как с USB программатором 'AvrUsb500 by Petka' - тут.

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

       Чтобы максимально унифицировать систему и упростить разработку системы, было принято решение разрабатывать проект на базе обкатанного годами железа IgorPlug2, сменив кварц для согласования со скоростями RS232 и применив дополнительно разработанный модуль стыковки с PS/2 интерфейсом.
       Плюсы такого решения очевидны - можно использовать наработанные и проверенные решения, применяемые в унифицированном модуле - перевёртыш.
       Также одним из плюсов является то, что наработанный архив дизайна печатных плат от унифицированного модуля подходит к этой разработке.
       Для упрощения смены зашитого набора ХЭШей кнопок можно залить прошивку от проекта IgorPlug2 и использовать комплектные к нему, штатно наработанные средства захвата и сохранения таймингов.

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

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

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

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

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

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

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

       Углубляясь в тему поиска деталей, нами было замечено, что в китайской технике встречаются разные модификации нумерации пинов разъёма PS/2. Определиться относительно просто - по питанию. Цифровые пины над и под пином земли, и они легко прозваниваются тестером.

Рис. 3 Гнездо для клавиатуры выглядит примерно так.

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

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

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

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

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

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

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

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

       Жёлтый светодиод (LedG) - загорается при:
       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)

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

Ну вот, пока ВСЁ!!!

       Быстро, просто, максимально понятно и унифицировано.

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

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

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

       Если у вас возникли вопросы и предложения - пишите мне по адресу внизу страницы

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

       Кошелёк для оплаты накладных расходов на сайт Z158779319858 в системе WebMoney.

       Принимаю только безвозмездную помощь :)


       Все статьи, опубликованные на этом сайте защищены Частью 4 Гражданского Кодекса Российской Федерации. Запрещено полное или частичное копирование материалов без согласия их авторов. Незаконное использование материалов сайта влечет за собой административную ответственность в виде компенсации в размере от 10.000 рублей до 5.000.000 рублей [Ст. 1301, 1250, 1252, 1253 ГК РФ]. При согласованном использовании материалов сайта обязательна активная ссылка на www.mindrunway.ru и указание авторства.



Copyright© 2007-2012 QuickWitted Почта     grani СОБАКА mindrunway РУ
Ссылки
Гостевая
Форум