Хабрахабр

[Из песочницы] USB печатная машинка

Сараево. Портативная печатная машинка Unis tbm de Luxe, произведена в Югославии, г. Самый распространенный экземпляр на постсоветском пространстве, клавиши на латинице.

Но, зачем загромождать комнату неиспользуемыми вещами. Сочетание красного и белого цветов корпуса привлекает внимание, и всегда присутствует желание использовать машинку в качестве элемента декора. Поэтому, поставлена цель: приспособить машинку к современным условиям так, чтобы при печати вывод символов производился на ПК.

Электроника

В качестве контактов для клавиш, предусмотрены герконы. Для контроллера управления матрицей контактов выбрано устройство Pro Micro, на базе микроконтроллера ATmega32U4.

Библиотека LUFA написана специально для бесплатного компилятора AVR-GCC. Исходник написан на языке Си, как основа использовался библиотечный код LUFA для клавиатуры. Есть второй вариант прошивки, через загрузчик и по USB, но тогда нужно выводить кнопку сброса на выводы МК (Reset и GND). Прошивка производилась по SPI.

Алгоритм программы, следующий:

  1. Четыре ввода-вывода настраиваются на вывод (сканирующий), двенадцать на ввод (опроса). К вводам (программно) подтягиваются резисторы (PullUp). В прерывании, на каждый вывод, последовательно устанавливаем «0», по циклу 1110-1101-1011-0111 и так далее.
  2. В цикле с бегающим «0», осуществляются проверки условий, если при каком-то условии присутствует «0» (клавиша нажата), то это условие маркируется соответственно нажатой клавише column=х, line=у.
  3. В функции обратного вызова CALLBACK_HID_Device_CreateHIDReport(), осуществляется проверка условий для каждого значения column=х и line=у, а при его выполнении отправляется соответствующий сканкод символа на компьютер.
  4. При одном нажатии должен выводится только один символ, не как на обычной клавиатуре.

Это не совсем изящный вариант алгоритма, но он рабочий!

Это необходимо выполнить, для исключения замыкания при одновременном нажатии нескольких клавиш на разных колонках (column). Обязательно, к выводам сканирования (column) микроконтроллера, должны быть подключены катоды диодов, а аноды на каждую из четырех колонок матрицы клавиатуры.

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

Я сделал ошибку: поместил геркон клавиши «надстрочный», в матрице с остальными. К сожалению, выводов Pro Micro не хватило, буквально для одной клавиши. Но плата была уже собрана и покрашена, пришлось усложнять код. Можно было сделать наоборот, контакт кнопки пробела внедрить в матрицу, а надстрочный вывести отдельной линией! Я мог бы, при количестве 48 клавиш, использовать 8 выводов и 6 вводов опроса, тем самым освободив 2 недостающих ввода. Есть еще одна недоработка, но она продиктована конструктивными особенностями печатной машинки: число выводов 4 и вводов опроса 12, дает нам 4х12=48 клавиш, при используемых 4+12=16 вводов-выводов.

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

Таблица сканирования матрицы контактов, для печатной машинки

В [ ] указаны вводы-выводы PRO MICRO Примечание:
Красным цветом указаны символы для скан кодов.
В ( ) указаны вводы-выводы Atmega32U4.

На ПК включена русская раскладка!

При column 2-4, верхний регистр включается при удерживании или фиксации клавиши «регистр» При column 1 включаются комбинации скан кодов.

Механика

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

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

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

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

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

Это сделано специально, чтобы исключить повреждения герконов, при возможном касании рычагами печатной платы. Герконы расположены с обратной стороны платы, в противоположной стороне от рычагов. решение. Хотя рычаги не касаются платы, но на всякий пожарный, принято такое тех.

Хоть материал и является парамагнетиком, герконы в такой оболочке срабатывают стабильно. Датчики для пробела и регистра в сборе.

Контроллер будет расположен в левом боку (по фотографии), где свободные разъемы. Устройство в сборе, но без контроллера!

Внутри каретки, петля кабеля сворачивается и разворачивается, в зависимости от ее положения. Датчик клавиши «Ввод-перенос на другую строку» устанавливается на каретке и соединяется с неподвижной частью машинки гибким многожильным кабелем.

А если появились новые знания, значит время потрачено не зря! Устройство не несет какую-то прикладную пользу, разве что появилось больше навыков, опыта и знаний, при сопутствующих работах.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть