Болталась у меня клавиатура от “Апогей БК-01Ц”, примерно вот такая, как на картике:
Внутренности были уже давно были проданы-выменяны на какую-то требуху или небольшую денежку. Кстати, если вдруг кому-то попадется объявление о продаже супер-пупер-мега ретродевайса (подобного Апогея) с ценником от 3000 - не ведитесь - в МСК не так давно спасли целую партию от “похорон бульдозером”, с тех пор продают и красная цена в базарный день ему - тысячи полторы или меньше.
Собственно, болталась и болталась, меня уже не особо волнует подобное включать, ибо времени не так много, да и драйва как-то поубавилось. Но “дезигн” из 90ых ещё будет долго не отпускать, ибо эстетика начала 90ых мне как-то приятнее, навевает воспоминания, да и эпплодрочерство рядом с этим выглядит ещё более пидорски, что символизирует.
О чём мы думаем, гляда на этот кирпич ? О том, что “островная клавиатура” была уже тогда, при этом довольно приятного качества. А ещё, что у меня в запасе есть вполне работающий проект “ZX-клавиатуры” с аналогичной схемой подключения, правда в ней всего 13 контактов, а тут целых 16, плюс 4 дополнительных, плюс пара светодиодов, так что ног ARCAdaptor ну никак не хватает, даже если светодиод “питания” подключить сразу на 5в через резистор.
Можно, конечно использовать что-нибудь вроде MCP2307,но эксперименты показали, что при этом перестает работать программное V-USB (хотя, может это и я накосячил) из-за торможения опроса (всё-таки i2c, пока переключит, пока спросит и так 64 раза в цикле).
В барахле нашлась чудо-атмега16, у которой ног, как у дурака фантиков. Правда, на ней почему-то никак не хотел работать бутлоадер, так что пришлось шить по старинке - программатором каждый раз.
Итого:
- Добавил в среду Arduino поддержку Atmega16@12 Mhz совершенно варварским способом, описанном на каком-то румынском сайте.
- Одолжил TrinketKeyboard library, правда и её пришлось патчить, ибо она под attiny изначально.
- Расшифровал схему Апогея, точнее его клавиатуры (ибо там хрен что разберешь), нарисовал матрицу.
- Попробовал proof-of-concept вариант с парой кнопок - вроде успешно.
- Нарисовал новую раскладку, чем видимо расстроил бога старых компов - ЙЦУКЕНа, надеюсь он не особо в обиде.
Дальше было много пайки, оптимизации (хотя в ATMega16 памяти дофига по меркам микроконтроллеров, но тут вопрос принципа), оборванных контактов…
Сама схема довольно проста (похожа на ZX-Spectrum, только побольше), хотя и есть пара нюансов - одно из сочетаний “адрес-данные” не отвечает ни за какую клавишу, однако есть две раздельные кнопки, посаженные на один контакт (ну тупо дублируют себя). Уж не знаю, почему так.
Шина адреса подключена через защитные диоды, данные же “подтянуты” к 5в, однако несколько кнопок на одном адресе подключены через фильтрующие конденсаторы, ну или не фильтрующие, мне вобщем похуй.
Короче, это к тому, что я три дня бодался в поисках ошибки - все кнопки нажимаются, кроме трёх. Эти три - работают через раз и самопроизвольно “отжимаются”. Оказалось - эти самые ёмкости уже давно не ёмкости.
Срезал их - прошивка работает как надо. Ну диод ещё впаял на этот адрес, для единообразия. Вот такая вот отладка методом кусачек. Вы всё ещё хотите что-то затереть про полиморфизм, множественное наследование и лямбды ? Смело пиздуйте на хабр, там вас ждет либо виртуальный отсос, либо позор на всю оставшуюся виртуальную жизнь - они такое любят :).
Дальше была эпопея со Scribus и версткой наклеек. Анфорчунатели, пленка прозрачная и старое тиснение на клавиатуре было не скрыть. К такому повороту я был откровенно не готов и пришлось “грунтовать” кнопки корректором, так что в финале наблюдается некоторая размытость, что, впрочем придает конструкции ещё большую загадочность.
Мандавошки с “ответов Mail.ru” утверждают что замазка смывается ацетоном-спиртом-водой, будем надеяться что это так, если вдруг решусь всё переделать.
Короче, вот что получилось в финале.
В сухом остатке:
- QWERTY
- Кнопка РУС/LAT работает, как клавиша Fn, и даже умеет правильно включать светодиод
- В качестве теста даже поиграл на этой “клаве” - вполне можно жить.
- А, ну вывел ещё ISP-контакты через один из разъемов, чтобы каждый раз не разбирать, да и USB рядом. Теперь у меня есть кабель USB-DIN5 для подключения и DIN6-неведомаяхуйня для программатора.
Ну и не обошлось без OrangePi.
Картинка “найди Orange Pi” - вон она сверху справа - спрятана в коробку из под леденцов. Рядом кЕтайский джойстик от PSX, переделанный с помощью всё той же Атмеги под USB. Очень здорово получается рубиться в Дримкаст при наличии “аналога”. Думаю сделать плоский шлейф подлиннее вместо родного шнура.
Ну и самый главный вопрос - нахуя это всё ?
- Во-первых радует глаз и скрашивает быт.
- Во-вторых в корпусе Апофигея столько места, что можно запихать пару Orange Pi PC2, и получить сука кластер в формфакторе настольного ПК. Только вот OPi PC2 застрял где-то на почте между РФ и Китаем. Уже две недели как, а с ним его друг OPi Zero. Се ля ви.
- Ну а в третьих - придумайте что-нибудь сами. Вы точно в силах раз дочитали этот текст.
Значит так, за паяльник больше не возьмусь до весеннего обострения… :) Теперь только балет и керамика, а также Fallout 4, Doom 2016 ну и крепкий здоровый сон.
P.S. Если кому-то интересны исходники прошивки (в чём я сомневаюсь), пишите в комментарии. Выкладывать не планирую, там всё тривиально - основной трах с настройкой среды, патчем библиотеки TrinketKeyboard и прозвоном кнопок.
P.P.S Сумбурненько получилось, просто в соседнем магазине распродажа RedLabel. Ваше здоровье!