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

Переходник из PS/2 в RS232 и в IRout
на ATTiny45 или AT89C2051.

       Материал был создан господином Klev, впервые был выложен в начале 2006 года на форуме 4PDA и активно дорабатывался энтузиастами до конца 2008 года.
       После многочисленных просьб пользователей (и при содействии господина Klev) нами была переработана прошивка (переписана более чем на 50%, от оригинала осталось только два блока) и после изменений оригинал и модификация выложены тут.
       По всем вопросам, возникающим при повторении на AT89C2051, обращаться к господину Klev (его можно найти на форуме).
       По всем вопросам, возникающим при повторении по AVR части, обращаться к господину QuickWitted на адрес внизу страницы.

Рис. 1 В сборе на ATTiny45.
Увеличить


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

План.

       1) Вступление.
       2) Модернизация существующей системы (на AT89Схх).
       3) Схемы для AT89С2051.
       4) Прошивки для AT89Схх.
       5) Переход на своё железо с ATTiny45.
       6) Описание возможностей и перспектив.
       7) Новая система на ATTiny45.
       8) Прошивки для ATTiny45.
       9) Прошивки расширенного функционала.
       A) Методика прошивки и Fuse биты.

Вступление.

       После покупки мобильных (карманных) гаджетов большинство пользователей сталкиваются с трудностями набора текста на них.
       И если в полевых условиях набор текстовой информации с помощью стилуса или мини Qwerty клавиатуры зачастую является единственной возможностью, то в комнатных условиях процесс ввода и редактирования текста, встроенными в гаджет средствами, начинает потихоньку раздражать даже самых терпеливых пользователей.
       А нормально управлять авиасимуляторами или гоночным болидом формулы N1 с помощью стилуса не совсем удобно.
       В интернет - магазинах, конечно, продаются Bluetooth и IR клавиатуры, но во-первых, они не дёшевы, во-вторых, не всегда есть в наличии (приходится заказывать и ждать), а в третьих, в большинстве случаев, к сожалению, они имеют относительно небольшой размер (по сравнению с компьютерными клавиатурами) и не всегда лучше по износоустойчивости.
       Поэтому, немного поискав в интернете, я пришёл к выводу, что для меня проще, удобнее и намного дешевле сделать переходник для стандартной PS/2 клавиатуры самому, чем связываться с заказом готовой и полмесяца ждать результата.
       После непродолжительных поисков я наткнулся на форум 4PDA, на котором обсуждалась данная тема и вникнув, я начал переписку с господином Klev, который описывал создание такого переходника в домашних условиях и положительно характеризовал его со всех сторон.
       Программатор для AT89Cхх микропроцессоров у меня давно лежал в шкафу без дела, а пара AT89C2051 уже давно пылилась на полке (отступая от темы скажу, что AT89C2051 у нас уже года два как не продают, так как они вымерли вслед за динозаврами). Схема простейшая и особых проблем при повторении она у меня не вызвала.
       Но каково же было моё удивление, когда после сборки обнаружилось, что проект отказывается нормально работать и проявляет разнотипные "недокументированные особенности", которые в народе прозвали багофичами и пользователи обычно ищут разнотипные супер - пупер - мега твикалки для их устранения в дырявых проектах (шутка).
       На практике в программу приходится вникать и, на основе понимания работы интерфейса, устранять найденные недочёты.        Забегая вперёд, скажу, что Господин Klev подтвердил, что система иногда сыплет мусором вместо букв и временами виснет, но уточнил при этом, что ему не составляет труда её изредко перезагружать и текста он много не печатает.

Модернизация существующей системы,
построенной на AT89Схх.

       Проверив схему, я пришёл к выводу, что собрал её правильно и ошибок не наделал. Даже плохого контакта не нашёл.
       Увиденное меня удивило ещё больше (ошибок нет, а глюки есть и много), вот я и решил написать автору прошивки - господину Klev.
       В ответ получил фразу, смысл которой сводился к: "Писали как есть, собирали из кусков, а главное у нас на нашей клавиатуре (которая осталась ещё с прошлого тысячелетия) всё работает, а кнопки мы нажимаем по одной, поэтому завал маловероятен, а если и случается, то мы её перезагружаем".
       Я искренне рад за тех, у кого данный проект работает как есть, а встречающие раз в 10 минут глюки не нервируют, но меня лично не устраивает уход в неуправляемое состояние при попытке ввода сочетания клавиш. На что мне господин Klev ответил, что ИР часть разрабатывал не он и неуправляемое состояние (из-за выхода на середину цикла передачи байта клавиатурой) он просто не предвидел, а защиту для упрощения конструкции в проекте не делали.
       Ну раз железо проекта было уже собрано, то я по быстрому заменил все вспомогательные функции и процедуру инициализации проверенным и обкатанным скелетом программы для AT89C51, который я позаимствовал из своих старых обкатанных разработок.
       Написал недостающие части: обработчик сброса параметров при отсутствии активности более 3х секунд, встроил механизм отправки состояния Busy на клавиатуру, активировал приём по RS232, а в случае молчания клавиатуры - в течении последних 3х секунд, разрешил передачу принятых байт от RS232 по IR каналу.
       От старой системы осталась только ИР часть и часть, отвечающая за приём байт от клавиатуры по прерыванию. Я их не менял не потому, что они "хорошие", а потому, что времени подробно вникать в чужой код у меня не было. А если их переписывать, то проще собрать на AVR заново. Например, на ATMega48 - с использованием блоков от проекта GraniCubicle, а точнее наработок Блока 4 для 'PS/2'.
       Спустя неделю функционал "Переходника из PS/2 в RS232 и в IRout" уже был доступен на базе железа проекта Блока 4 для 'PS/2'. А о мобильной его версии будет рассказано ниже в рамках подраздела "Переход на своё железо с ATTiny45".

Схемы для AT89С2051.

Для более стабильной работы схема была изменена.
Модифицированный вариант схемы.
Оригинальный вариант схемы лежит в архиве с исходником.

Прошивки для AT89Схх.

Модифицированный вариант прошивки
для процессора AT89Схх и кварца 24,000 Mhz.
В архиве есть инструкция как собрать прошивку
под другие частоты.

Вторая версия прошивки от Klev
для процессора AT89Схх и кварца 24,000 Mhz.
После изучения нашей прошивки Господин Klev
используя блоки из неё, косметически подправил свою.

Переход на своё железо с ATTiny45.

       После прочтения данной статьи, господин Klev подтвердил описанные недостатки и обещал их устранить и на основе моего блока доработать свои две коммуникационные функции.
       А попутно внёс предложение к усовершенствованию: "Постарайся написать новую прошивку под ATTiny - самый маленький и универсальный контроллер. Все встроено, ничего придумывать не надо. Подключаешь питание и вперед! Правда там нет UART. Где-то в Интернете встречал программную реализацию, только не помню где."
       Если рассматривать идею глобально, то придумывать софтовый UART всё же придётся, но всё реализуемо. Как обкатаю функции на ATMega88 в рамках проекта GraniCubicle - Блока 4 для 'PS/2', так сразу и перенесу их на другой процессор - ATTiny45.
       Но ещё раз напомню, пользователи просят ATTiny только из-за его габаритных параметров, а функционал "Переходника из PS/2 в RS232 и в IRout" уже доступен на базе железа проекта Блока 4 для 'PS/2'.
       И ещё добавлю, у меня все функции рассчитаны (по тактам) и обкатаны на кварце 11,0592Мгц, поэтому для упрощения настройки и увеличения точности (если верить документации, у IR макс допустимая погрешность составляет всего 1%), при разработке нового железа, кварц лучше оставить в схеме, а не мучить пользователей калибровкой встроенного 8Мгц генератора индивидуально для каждого экземпляра процессора. Про переписывание функций с падением точности (т.к. существующие в 8Мгц не впишутся) я уже не вспоминаю.
       И через неделю был готов первый демонстрационный образец, превосходивший первоначальную версию AT89Схх по всем основным параметрам, главными из которых являются: габариты, энергоэффективность, стабильность и точность генерирования сигнала IRDA.

Описание возможностей и перспектив.

       На данный момент система поддерживает один вход PS/2 порта для клавиатуры и два выхода IRDA и RS232 (он же UART, он же COM порт) для вывода информации. Выдача данных из обоих выходов происходит на скорости 9600 бод. После включения система определяет тип подключённых коммуникаций.
       Через три секунды после завершения прогрева, начинается инициализация системы, инициализируется клавиатура (об удачной инициализации свидетельствует мигание служебных светодиодов клавиатуры), а после в выбранный перемычкой JP1 коммуникационный интерфейс, выдаёт сообщение об удачной инициализации.
       После инициализации устройство начинает опрашивать клавиатуру и в случае получения скан кода от клавиатуры, декодирует его по таблице (на данный момент доступны 3 варианта кодировки, если надо четвёртую - пишите) и, в соответствии с выбранной системой, передаёт полученные данные во внешний мир.
       Дополнительно уточню, если вам нужны макросы или вы хотели бы видеть в проекте что - либо или переместить, дописать, исправить что то, то пишите на почту, указанную внизу страницы или в крайнем случае на форум сайта (находится в гостевой).
       Первоначально (в начале 2006 года) на форуме обсуждалось создание системы с двумя входными интерфейсами - для клавиатуры и для мыши, но эта тема потихоньку сошла на нет, по причине отсутствия драйвера, поддерживающего и клавиатуру и мышь.
       Одной из причин, способствующих этому, явилось то, что для использования мыши требовалось наличие плоской поверхности, по которой её можно было бы катать, а так же наличие программиста, способного написать драйвер.
       Хотя позже господин Klev приводил исходники программы "драйвера", написанной на СИ, для подключения шариковой мыши, но дополнять его клавиатурой было некому. Эти исходники драйвера мы прикладываем и если у кого есть желание создать клаво-мышь, постараемся помочь с аппаратной частью.
       От себя добавлю, что в полевых условиях более удобно использовать не мышь в прямом смысле, а джойстик, подключённый к МК. То есть, нечто - наподобие джойстика в ноутбуке или джойстика в сотовом телефоне, доработанного второй кнопкой.
       Есть идея попробовать джойстик от игровой приставки, о результатах эксперимента дополнительно уточню по завершению тестов системы.

Новая система на ATTiny45.

Рис. 2 Подключение ATTiny45.
Увеличить

       Создаваемая система была создана на доступной в нашей местности ATTiny45. Но если у вас нет ATTiny45 в наличии, то схему можно собрать на более больших процессорах ATMega88, ATMega8, ATMega48 или даже сороконожек ATMega16, ATMega32, загрузив в них при этом соответствующую версию прошивки.

Основная схема проекта под ATTiny45.
Эскиз печатной платы под DIP ATTiny45.

Альтернативная схема под ATMega88/8/48.
Эскиз печатной платы под DIP ATMega88/8/48.

Альтернативная схема под ATMega16/32.
Эскиз печатной платы под DIP ATMega16/32.

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

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

       Если требуется система с питанием от батарей, то можно заменить простейший, штатный стабилизатор +5В, собранный на интегральной схеме Крен5А на более экономичный, но и более сложный ШИМ стабилизатор. Выбор схемы ШИМ стабилизатора зависит от параметров входного питающего напряжения.

Cхема ШИМ контроллера.

       Если требуется понижающий стабилизатор, работающий в диапазоне от 8-24В, тогда оптимальнее выбрать схему на ШИМ контроллере MS34063.
       Если входное напряжение - питание лежит в диапазоне 3-24В, тогда следует собирать SEPIC преобразователь на ШИМ контроллере LM3488.
       Если питать требуется от двух пальчиковых батареек, то надо собирать повышающую схему на MS34063 с дополнительным стартовым генератором +8В для питания ШИМ контроллера MS34063.
       Говоря простым языком, схема ШИМ стабилизатора зависит от доступных в вашей местности компонентов и предъявляемых к устройству требований.

Прошивки для ATTiny45.

       Ещё раз напомню, основным железом для данного проекта является модификация на ATTiny45. Но если вы, по каким-либо причинам, не можете собирать на ней, то по просьбе пользователей мы сделали вариации с использованием других процессоров, то есть для ATMega48, ATMega88, ATMega8, ATMega16, ATMega32.
       Проще говоря для всех легкодоступных процессоров AVR, имеющих на борту не менее 4х килобайт ПЗУ.

Прошивка для ATTiny45 и кварц 11,0592Мгц.

Альтернатива ATMega48 и кварц 11,0592Мгц.
Альтернатива ATMega88 и кварц 11,0592Мгц.
Альтернатива ATMega8   и кварц 11,0592Мгц.
Альтернатива ATMega16 и кварц 11,0592Мгц.
Альтернатива ATMega32 и кварц 11,0592Мгц.

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

Прошивки расширенного функционала.

       По многочисленным просьбам пользователей, мы разработали альтернативные прошивки, под это железо, предназначенные для эмуляции разнотипных IR протоколов. Все прошивки разработаны под кварц 11,0592. Кроме основного процессора ATTiny45 поддерживаются также все и альтернативные на ATMega48, ATMega88, ATMega8 и даже ATMega16 с ATMega32.
       Эти прошивки, кроме управления бытовой техникой, позволяют управлять настольным компьютером по средствам проекта IgorPlug2 (Быстрый старт по проекту IgorPlug2 - тут).
       Говоря простым языком позволяют сделать 7 метровый универсальный* IR удлинитель клавиатуры для настольного ПК.

* - Под универсальностью подразумевается возможность тонкой настройки действий на каждую кнопку (вплоть до эмуляции мыши).


Прототип - Пульт от аудио центра Pioner.
Количество импульсов в посылке постоянно - 34.
Длительность посылки постоянна - 63,98 МиллиСек.
Хвоста - не имеет.
На одну кнопку приходится один уникальный скан код.

Набор прошивок под эту диаграмму - тут.


Прототип - IR клавиатура SWK-8630.
Раскладка на стандартные кнопки вида.
Длительность посылки переменная!!!
Хвоста - не имеет.
На одну кнопку приходится один уникальный скан код.

Набор прошивок под эту диаграмму - тут.


Прототип - Отсутствует.
Это посылка для "совместимости" со старыми программами контроля.
Количество импульсов в посылке постоянно - 15.
Длительность посылки постоянна - 14,91 МиллиСек.
Хвоста - не имеет.
На одну кнопку приходится один уникальный скан код.

Набор прошивок под эту диаграмму - тут.

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

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

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

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

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

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

       Если у вас возникли вопросы и предложения по AT89C2051 -
пишите Автору проекта - господину Klev
(его можно найти на форуме).

Если у вас возникли вопросы и предложения по AVR части -
пишите Автору проекта - господину QuickWitted
(по адресу grani "символ собачки" mindrunway "поставь точку" ru ).


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



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