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

Модульный проект GraniCubicle.
Блок 4 для 'PS/2'.

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

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

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

План.

       1) Вступление.
       2) Выбор интерфейса.
       3) Немного истории.
       4) А что у нас на шине необычного?
       5) Создание системы.
       6) Прошивки к модулю.
       7) Методика прошивки и Fuse биты.

Описание блоков.

       A) Общее описание. - тут.
       Б) Блок 1 для 'RS 232'. - тут.
       В) Блок 2 для 'IR'. - В разработке.
       Г) Блок 3 для 'LCD'. - В разработке.
       Д) Блок 4 для 'PS/2'. - Эта страница.
       Е) Блок 5 для 'USB HID'. - тут.
       Ж) Блок 6 для 'DAC/ADC'. - В разработке.
       З) Блок 7 для 'DISEqC'. - тут.
       И) Блок 8 для 'Print Server'. - тут.
       К) Блок 9 для 'Lan Bridge'. - тут.

Соединение блоков в набор.

       А) Набор "Panorama Sat Scaner". - тут.

       X) Обратная связь - тут.

Вступление.

       Часто мне приходят письма: "А нельзя ли организовать управление клавиатурой напрямик без эмуляторов нажатия"?
       После углубления в тему этого вопроса становится понятно, что некоторым пользователям требуется создавать событие нажатия клавиши в нестандартных ситуациях. Например, в играх или в экзотических операционных системах (или просто в сверх старых, например, MS DOS) или операционных системах, к которым нет драйвера для системы IgorPlug2. Проще говоря, возникали такие случаи, когда по каким - либо причинам не было возможности подключиться по USB (например, не получалось подгрузить драйвер IgorPlug2 или не было доступа к эмулятору USB HID клавиатуры, или вообще USB был недоступен).
       В случае с использованием MS DOS, подключение нескольких USB устройств управления может стать сильно проблематичным. А про отсутствие программ настройки и драйвера IgorPlug2 под MS DOS (или Linux, или MS Windows 64bit, или любую другую ОС, отличную от MS Windows 32bit) я уже не вспоминаю (но в ветке IgorPlug2 есть клавиатурная версия которая после настройки работает везде где есть мышь или клавиатура).
       Подводя краткий итог вышесказанному можно сказать, что в таких случаях требуется врезка в какой - либо существующий интерфейс управления. С одной оговоркой, для использования которого не требуется установка драйверов, прав администратора и программ контроля.

Выбор интерфейса.

       Просмотрев интерфейсы компьютера, можно придти к выводу, что врезаться придётся в PS/2 интерфейс клавиатуры, так как другого, доступного интерфейса, просто нет.
       К тому же существуют самодельные программно - технические комплексы*, ввод данных в которые возможен ТОЛЬКО через PS/2 интерфейс, так как другие интерфейсы или не документированы, или, в силу кустарности устройства, отсутствуют (не предусмотрены разработчиком вовсе).

       *- Самый распространённый пример - произведённая кустарным образом "бегущая строка" на светодиодах, продаваемая умельцами на большинстве радиорынках.

       И к тому же пульт дистанционного управления у таких устройств в 90% случаев отсутствует, но иногда наличие пульта может оказаться очень полезным при проведении презентаций... Например, в нужный момент вывести фразу: "Приветствуем спортсменов спорткомплекса ХХХ".

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

Немного истории.

       Стандарт РС/2 существует со времен 86 компьютеров (были до 286, 386 и задолго до первых пентиумов).
       Для удешевления расходных материалов в стандарт было заложено упрощение передающей части (клавиатуры) за счет приемной (компьютера). Передающая часть тактировала передачу данных в обе стороны и начинала передавать данные без предупреждения, а возможные коллизии на шине решались ведомой частью (компьютером). Компьютер изредка проверял наличие клавиатуры, а при необходимости настраивал ее характеристики (инициализация, включение светодиодов и т.д.).
       Коллизии происходили при одновременной попытке передать данные обоими устройствами, но они были относительно редки, т.к. компьютер передавал данные только по необходимости, а большую часть времени слушал клавиатуру.
       Скорость опроса наличия клавиатуры и частота передачи домашних по интерфейсу варьируется в зависимости от типа системы. Например, у первых пентиумов наблюдались задержки до 0.1 сек между двухбайтовыми командами, а у допотопных клавиатур удавалось засечь пару пауз до 0.05 сек. Проработав эти данные можно сделать вывод, что если в течении 0.25 секунд шина свободна, то скорее всего все данные уже переданы, то есть можно сделать вывод, что шина свободна (можно врезаться).
       Но бывают и исключения. На одной из материнских плат Асус был замечен интересный случай - передача данных от чипсета материнской платы к клавиатуре не прерывалась даже на 0.25 сек.
       Мы нашли его по свечению светодиода занятости, который должен отключатся по таймеру через 0.25 секунды после последней передачи данных. И на этой материнской плате светодиод не гас совсем. Автоматически уменьшить таймаут (который по умолчанию 0.25) конечно можно, при этом система сможет врезаться в шину данных, но при данной реализации, для эмуляции клавиатуры надо сидеть на шине и передавать данные. Ресурсов одного МК может просто не хватить на клавиатуру и IR.
       Если исходить из идеи делать на двух процессорах - один на ир, второй на РС/2, то в принципе проблем никаких нет: один следит за ир, а второй за компьютером и клавиатурой, но это ведёт к удорожанию конструкции в целом.
       Свободность шины определяется документацией, т.к. при постоянных передачах со стороны чипсета при нажатии на кнопку возможны коллизии, что приводит к повторным пересылкам.

Рис. 3 Осциллограмма передачи клавиатурой "скан кода".
(кнопка "1") Данные полученные с логичекского анализатора.

Рис. 4 Осциллограмма снятая при нажатии но кнопку NumLock.
Данные полученные с логичекского анализатора.

Увеличить

       И тут мы подходим к самому интересному вопросу:
       "А где же эта документация спросите вы"?

       Ответ ещё более интересен: "А её нет".

       То есть, где то она конечно есть, но в свободный доступ в Интернет она не выложена. И найти её там мне так и не удалось. В Интернете есть описания созданные пользователями, но они не объясняют значения таймингов при передаче данных и таймингов дэдлайнов при инициализации.
       Скажите, что слишком много хочу от самодельного описания?
Ну во первых - другого просто нет (хотя давно ищу), а во вторых - в том что есть отсутствует даже элементарное. Например, расшифровка значения Keyboard ID, большой скважности сигнала о "не готовности" на некоторых машинах, не говоря уже о всём прочем.

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

А что у нас на шине необычного?

Рис. 6 А такое выдаёт ноутбук Samsung Sens.
(отдалённо напоминает "Start условие")

Рис. 7 Постоянно повторяющийся сигнал "о не готовности".
(встречается не на всех машинах).

Рис. 8 А так прыгает сигнал на линии Data при тактировании.
(встречается не на всех машинах).

Рис. 9 А в редких случаях встречается и такое.
(не успел обработать - поймаешь мусор).

Рис. 10 Вариант А работает на всех машинах, вариант В - местами.

Создание системы.

       Идея врезки в PS/2 интерфейс уже не нова, однако нормальных многофункциональных самонастраивающихся устройств, готовых к повторению пользователем на современной элементарной базе в Интернете, практически нет.
       Есть только пара платных конструкций, совместимых с одним единственным пультом, причем недоступных для повторения радиолюбителями по определению (продаются только в сборе).
       Обдумывая функциональность данного устройства еще на первом этапе его разработки, прорисовывается два варианта его применения:

       1 - в качестве самостоятельного устройства.
       2 - в качестве ведомого блока, управляемого ведущим блоком.

       С реализацией ведомого решения всё относительно понятно - по любому, из доступных аппаратно - реализованных интерфейсов (RS232, I2C, SPI) или реализованных программно, но с потерей некоторой функциональности (например, USB), можно загружать или выгружать принятые данные.
       Как выяснилось, с помощью микросхемы электронных ключей (наш аналог К561КТ3А) МК не обязан участвовать в пересылке данных от ПК к клавиатуре и обратно, а включаться в обмен только при необходимости что - либо передать в компьютер по протоколу PS/2 (с эмулировать нажатие клавиши).
       А в реализации самостоятельного блока всплывает море возможностей:

       1 При использовании самостоятельного опроса клавиатуры блоком.

       1.1 Переходник PS/2 <-> RS232
       Для подключения стандартной PS/2 AT клавиатуры к карманным компьютерам, не имеющим USB хоста, через RS232.
       1.2.A Переходник PS/2 <-> IR
       Тоже, что и в первом случае, но через IR интерфейс, оставляя RS232 свободным для подключения сотового телефона (убыстряет написание и отправку SMS).
       1.2.B Переходник PS/2 <-> IR
       IR удлинитель PS/2 клавиатуры (эмуляция swk8630) позволяет использовать стандартную PS/2 AT клавиатуру в качестве БОЛЬШОГО пульта дистанционного управления со 101 кнопкой.

       2 Врезка в существующий интерфейс.

       2.1 Транслятор IR <-> PS/2
       Для дистанционного управления компьютерами в случаях, когда использование IgorPlug2 или эмуляторов USB HID клавиатур затруднено или по каким-либо причинам невозможно.
       2.2 Логер PS/2.
       Ну логер он и в Африке логер, правда с припиской - ТОЛЬКО для ознакомительных целей и ни в каких других. То есть, для создания макросов, воспроизводимых устройством в PS/2 по внешнему событию (например, нажатию кнопки на пульте).
       2.3 Транслятор из PS/2 в RS232.
       Это разновидность логера, но главное отличие заключается в возможности самостоятельного декодирования устройством посылок на шине и отправкой в RS232 уже обработанного значения (ну например с учётом состояния клавиши Shift).
       А гибридная его версия при отсутствии компьютера может самостоятельно инициализировать клавиатуру и полностью повторять функции переходника PS/2 клавиатура <=> RS232.
       Проще говоря клавиатура может быть одна и для КПК и для настольного компьютера, а в походных условиях устройство само переключается в режим переходника PS/2 клавиатура <=> RS232.
       2.4 Программатор I2C
       Просто применение в качестве IR приёмника воспроизведения макросов и PS/2 логера (для создания макросов) подразумевает хранение полученных данных во внешнем I2C или внутреннем EPROM'е. Соответственно устройство должно уметь самообучаться, а при смене прошивки становиться USB-I2C программатором.
       2.5 Врезка нажатий клавиш, принятых извне.
       Для эмуляции нажатия клавиш на клавиатуре от прихода внешних событий (самая заоблачная - самодельная сигнализация проникновения или пожара в серверной, для серверов домашних сетей) или по данным, пришедшим по внешним интерфейсам.

Рис. 11 Пример работы транслятора из PS/2 в RS232.
(устройство включено в разрыв PS/2, а его RS232 подкл. к COM1)

       Тоже, с аппаратной точки зрения, можно сказать, но в двух словах:
       Данный блок включаем в разрыв между PS/2 приёмником (не обязателен) и PS/2 клавиатурой.
       Он служит для: Сохранения нажатых символов в Eprom, опрашивания клавиатуры и передачи этих символов в RS 232 (или PS/2). Отправки по PS/2 символов, пришедших из RS 232 (или PS/2), по командам из RS 232 (или PS/2), отправлять набор команд из Eprom в PS/2.
       Из описанного железа, большая часть (Микропроцессор, IR приёмо-передатчик, с распаянным интерфейсом USB) установлена на разработанной мной плате для проекта IgorPlug2.
       Иными словами, чтобы не изобретать велосипед заново, сделаем конструкцию на двух платах: одна плата - это плата созданная мной для проекта IgorPlug2, а вторая - интерфейсная плата, содержащая минимум деталей (одна микросхема ключа и 5 резисторов к ней) для сопряжения с интерфейсом PS/2 клавиатуры.
       Углубляясь в тему поиска деталей нами было замечено, что в китайской технике встречаются разные модификации нумерации пинов разъёма PS/2. Определиться относительно просто - по питанию. Цифровые пины над и под пином земли, и они легко прозваниваются тестером.

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

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

       При этом, для подключения внешнего I2C EPROM'а, из деталей требуется только панелька под микросхему собственно EPROM'а.
       Но многие переспрашивают: "А что из схемы можно не устанавливать для..."

       ...Для переходника PS/2 клавиатура <=> RS232 схему можно упростить до такого состояния: для просмотра, для печати.

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

       "Прошивка для переходника из PS/2 в Newton Codes, для PDA" написана для работы с КПК. Она опрашивает клавиатуру, переводит номер кнопки по таблице Code-Set2 c't6/88 s.152 (Newton Codes) и передаёт результат в RS232(UART) со скоростью 115 кбод, а по IRDA со скоростью 9600 бод.

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

Тестовая прошивка для "Транслятора IR <-> PS/2".
для процессора ATMega48 и кварца 11-12 Mhz.

Прошивка для переходника "PS/2 клавиатура<=>RS232".
для процессора ATMega88 и кварца 11,0592 Mhz.

Прошивка для транслятора из PS/2 в RS232.
для процессора ATMega88 и кварца 11,0592 Mhz.

Прошивка для переходника из PS/2 в Newton Codes, для PDA.
для процессора ATMega88 и кварца 11,0592 Mhz.

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

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

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


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

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

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

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

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

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

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

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

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


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



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