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

  • клавиатура елозит по столу/подставке (сокеты плоские) и царапает поверхность (длинными ножками и плохой пайкой) одновременно;

  • сложно задать наклон для нее;

  • сложно искать положение рук относительно клавиш;

  • очень низкая защита от проливания воды и сока на процессор :)

Соответственно следующий разумный шаг это сделать корпус. О, корпусирование это отдельная огромная тема. Кто-то может сделать нечто особенное просто вырезав из картона. Кто-то может выпилить из пенька дремелем. А кто-то может выдолбить прямо из камня. Но это не для меня, так что я смотрю на более реалистичные методы. Это 3D печать из пластика или чего покруче; лазерная резка по акрилу либо дереву либо стали либо еще чего круче. А еще можно заказать фрезеровку из дерева или еще чего... Выбор слишком велик.

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

Короче: тестируем бутерброды чтоб либо исключить либо взять как основной метод для следующей итерации.

Бутерброды собираются из нескольких слоёв, где каждый подходящей для него толщины и выполняет свою роль:

  1. Основание, защищающее всё снизу, а также место для прикрепления ножек от скольжения и регуляторы наклона. Требуемая толщина и материал -- по вкусу, абы хватило пережить ежедневное использование и давление от регуляторов наклона если их ставить.

  2. Нижний слой -- поднимает печатную плату над основанием чтобы детали ничего не цепляли. Толщина требуется больше чем высота самого большого элемента на нижней стороне печатной платы.

  3. Верхний слой -- даёт пространство для элементов на верхней стороне печатной платы (у меня это процессор и разъём ко второй половине). Толщина подбирается аналогично нижнему слою -- выше самого высокого элемента (кроме свичей).

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

Так как мне надо отладить процесс создания, для первого заказа я подготовил верхний и нижний слои. Это не защищает клавиатуру от швепса, но достаточно чтобы ею уже можно было начать пользоваться и проверить как всё собирается вместе. (Да, я знаю, мне следовало бы изучить FreeCAD или налог, сделать 3D модели для всех элементов, экспортировать плату в 3D, сгенерировать модели для слоёв и собрать всё вместе в 3D редакторе. Ну, как это полагается делать по нормальному. Вот только я тут развлекаюсь, и изучение всего этого инструментария в категорию развлечений не входит).

Основные плюсы бутербродов:

  • Цена материала сильно ниже чем у эквивалентного объема пластика для 3D печати;

  • Стоимость резки сильно ниже стоимости печати на этих объёмах;

  • Можно сделать из стали или дерева за почти ту же цену;

  • Можно нанести гравировку, чтоб все обзавидовались.

Основные минусы же:

  • Только плоские элементы;

  • Если нужны углубления (например, сделать вырез под разъём но не разрывать контур) -- придётся переходить от дешевой лазерной резки на гораздо более дорогую фрезеровку

К делу. Для того, чтобы заказать лазерную резку, потребуется файл с вектором -- линии по которым резать, линии по которым гравировать, области гравировки. Всё нужно делать в размер с учетом толщины реза (типично 0.1-0.3мм) и т.п.

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

  • Через "File→Plot" из KiCAD печатаем слои печатной платы в набор раздельных SVG файлов  KiCAD (чтобы проще было совмещать слои позднее, выставляем галочку "plot edge.cuts on all layers" и для "Drill marks" выбираем "Actual size").

  • Создаём новый файл в Inkscape.

  • Импортируем распечатанные выше SVG файлы по одному в отдельные слои файла, так чтобы они все легли точно один поверх другого. Нас интересуют слои: `Edge.Cuts` (граница платы + прорези для стабилизатора), `User.Eco1` (границы свичей), `User.Drawings` (границы кейкапов), `F.Courtyard` (положение процессора и коннектора ко второй половине) и слой `B.Mask` на котором положения фиксирующих отверстий. (совет: если убрать мышь за пределы окна  Inkscae и импортировать файлы через Ctrl+I, они все будут импортированы точно по центру экрана, а потому точно лягут один на другой :)

  • Создаём новый слой, называем "base" и на нём:

    • рисуем круги (или копируем с импортированных слоёв) которые размещаем поверх посадочных отверстий в углах, затем преобразуем их в пути (выделить и нажать "Path→Object to path" либо Shift+Ctrl+C);

    • рисуем прямоугольник, конвертируем в путь, перемещаем угловые точки четко поверх печатной платы (это будет границей всего корпуса);

    • сдвигаем нижнюю границу прямоугольника вниз на 10см, чем создаём пространство для складывания запястий. (совет: чтобы переместить точку точно на X я просто выделял точку используя инструмент выделения, а затем на верхней панели редактировал значение Y или X на сколько нужно. Так же можно точно переместить точку в то же место что любая другая -- выбрать опорную точку, скопировать координату, выбрать целевую точку, вставить координату, если надо изменить на сколько надо, готово);

    • получаем вот такое:

  • Создаём слой "lower", на котором:

    • рисуем области, которые дадут пространство для деталей. Я решил просто сделать два прямоугольника, тем самым создав в центре дополнительное ребро жесткости для защиты от гневной печати :)

    • получаем вот такой слой:

      Да, у слоя нет границы! Это потому, что для получения картины итогового нижнего слоя надо включить два: "base" и "lower", тогда будет правильный вид:

  • Создаём слой "upper", на котором:

    • рисуем область, которая даст поддержку крышке без давления на детали. Поскольку я разместил Пику в углу платы, а разъём на боку без какого либо пространства между ними, сделать одну деталь закрывающую угол не получается… Поэтому мне пришлось сделать копию рамки со слоя "base", "выкусить" угол чтоб получить плату формы "ь". Вероятно можно было бы сделать отдельно еще уголок, который просто вклеить потом, но я ленив.

    • Получаем такое:

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

  • Создаём новый слой "cover", на котором:

    • включаем видимость слоя с кейкапами и рисуем линии по их внешним границам, создавая замкнутые ломаные, а затем через `Path→Outset` раздвигаем их так что у нас будет зазор между кейкапами и крышкой клавиатуры когда кнопки будут нажиматься;

    • как альтернативный вариант, можно скопировать краницы свичей (не кейкапов) и сделать им всем `Outset`, получив крышку с индивидуальными прорезями под каждый свич, главное быть уверенными что крышка не помешает кейкапы нажимать (достаточно тонкая или капы без бортиков и проч);

    • у меня получилась такая крышка (включив "base" и "mounting holes"):

  • Не забываем сконвертировать все нарисованные объекты в пути.

  • Включаем все созданные слои, выделяем всё и задаём линиям правильную толщину и цвет. Конкретные требования зависят от сервиса где заказывать (некоторые хотят линии 0.1мм или 0.2мм, некоторые хотят 0.01мм, некоторые говорят что резка идет по черным линиям, другие говорят что режут по синим... эх)

Когда всё готово, включаем видимость правильных комбинаций слоёв и сохраняем через "Save As Copy" в отдельные файлы правильного формата (я сохранял всё в "Optimized SVG", и это сработало, но опять же -- смотрим требования сервиса. Некоторые только хотят автокад, некоторые только SVG...), грузим файлы в сервис, оплачиваем, ждём.

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

Заказал на Sculpteo нижний и верхний слой для левой половины за $30. Заказал в четверг, в пятницу уже отправили, в понедельник они приехали.

Важно учитывать, что при заказе резки приедет лист чуть больше размером чем заказано с обрезкой. (Да, некоторые сервисы, вроде lasergist, пытаются переиспользовать материал и присылать только "нужную" часть, но это может хорошо работает со сталью -- но не очень с акрилом и деревом...)

Приезжающий лист выглядит как-то вот так (это крышка вырезанная из "POM"):

К моему удивлению, и верх и низ легли идеально с первого раза! Но у меня не нашлось 2мм болтов. Почему? А я не знаю, почему я об этом не подумал. В ближайшем хозяйственном были только начиная от 3мм, зато нашлись шпильки в 2мм, которыми я и воспользовался. Попробовав и посмотрев я приклеил вырезанный кусок с верхнего слоя на двусторонний скотч сверху, а вырезанные снизу на низ, тем самым еще и задав небольшой отрицательный наклон. Вот что получилось:

К сожалению, изготовленные подкладки под стабилизаторы не подошли. Уж не знаю почему, но я их сделал такими же, как они были на плате, и ровно так же они не подошли. Зато я смог рассмотреть почему же они не подходят -- я же использовал готовые библиотечные модели... В общем, на купленных готовых кейкапах крепления сдвинуты (левая это купленная, правая отпечатанная):

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

Что ж, раз уж подготовка вектора работает на ура, можно повторить процесс для правой половины и получить наконец клавиатуру, которую можно будет уже использовать. Я знаю, что надо два варианта суппортов (центрованные и сдвинутые), так что на правой я нарисовал и те и другие адаптеры, чтоб был запас.

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

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

В общем, заказал для правой половины нижний и верхний слои, чтобы убедиться что я не ошибся нигде с размерами. Верхний слой я заказал из МДФ, чтобы посмотреть что это за зверь. Опять всё было шустро -- заказано 22го, приехало 25го, сильно опережая график.

Главное открытие было -- не использовать МДФ. Ужасно воняет после резки. Неприятный на ощупь. Возможно после покраски им и можно будет пользоваться, вот только я не хочу красить :) Впрочем, детали подошли прекрасно, так что можно было собрать всё вместе и, наконец, опробовать в деле.

Итак, дополнительные открытия которые следует учесть для v2:

  • область внизу клавиш не должна быть просто прямоугольником. Для левой половины левая часть должна иметь чуть больше пространства слева от клавиш. Что примечательно, я замечал эту проблему на множестве клавиатур которые я использовал (та же Sculpt прямо по границе тут, не всё плохо только потому, что контрол увеличен в размерах) и совершенно забыл, когда рисовал! В общем, где-то 2см надо добавить слева. Возможно будет ОК сделать клавиатуру в форме трапеции?

  • мне нужно чтобы полностью нажатая клавиша темного торчала над слоем крышки, но не сильно, и определённо не уходила ниже уровня крышки. Иначе я не могу нажать контрол как привык, стрелки просто ощущаются неприятно, а нажатие пробела боком большого пальца не всегда срабатывают.

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

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

С точки зрения удобства использования, я так же выяснил что для моего стиля печати самое важное для позиционирования это не выступы на f/j, а место куда складывать ладони! Поскольку половины не зафиксированы одна относительно другой и в процессе работы двигаются, просто складывать руки не глядя приводит к опечаткам. Так как бутерброд с только верхним слоем для меня слишком низкий, я использовал вырезанные средние части для прослойки и позиционирования рук, прикрепив их двусторонним скотчем. Это неплохо работает, но да, МДФ не пойдёт для верхнего слоя.

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

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

После эксперимента с половинами бутербродов я заказал новый верхний слой (чтобы избавиться от МДФ) и две крышки – на левую и правую половины. Левая крышка с областями под ряды отдельно, правая крышка с одной большой областью в центре (и парой под Fn и проч). А еще заказал на пробу одну из них из фанеры.

Заказал 5го июня, приехало 9го. Что я могу сказать... Фанера это не дерево. Конечно я не ожидал что оно будет прямо уж совсем хорошо, но всё же я ожидал чего-то лучше. Чтобы пользоваться ею (учитывая, что руки на ней предполагают лежать всё время) потребуется обработка -- шлифовка от заноз и водоотталкивающая. Ну то есть опять надо красить. Или просто отполировать хотя бы, но это не спасёт от пота и она станет жутко выглядеть очень быстро.

Извлеченные уроки из этой итерации:

  • Дерево требует постобработки. У Sculpteo нет такой опции, только резка.

  • Тонкие линии на акриле если и не сломаются (к слову: они мне написали письмо перед изготовлением, спросили понимаю ли я риски тонких линий), то точно потеряют форму от нагрева. Чтобы ребра не мешали жать на клавиши мне пришлось их подогреть зажигалкой и пододвинуть…
    ![](case-thin-acryl.jpg)

  • Крышка с одной большой выемкой под все клавиши выглядит не оч. Просто не оч. Эх. См.ниже на фото.

Вот как собирается сендвич:

Вот как выглядит последний вариант левой половины:

Всё, кажется, я закончил эксперименты с лазерной резкой. Ой! Нет, не закончил. У Sculpteo есть еще материал "POM" (полиформальдегид). Так как я сходу не нагуглил что де это за зверь, но утверждалось что стойкий, крепкий, а по фото выглядил матовым. Так что я сделал еще один заказ -- для левой половины "POM natural" 3мм, а для правой "POM black" 2мм -- чтобы посмотреть его в обоих цветах и поглядеть как себя ведёт тонкий материал, на случай, если я решу сделать следующую версию ультра тонкой.

Так вот, на ощупь и на глаз выглядит он так плохо, что я не хочу его даже ставить на пробу. Очень очень плохое ощущение "дешевого пластика". Слегка как мыльный? Скользкий? Что-то неприятное. Точно нет, так же как и MDF. Фото листа в начале статьи как раз "натуральный" POM, а вот как выглядит черный:

Всё, вот теперь точно я перепробовал всё, что хотел для 1й версии клавиатуры. Как я уже писал в прошлых частях, очень важно останавливаться и списывать ошибки раньше в процессе, прекращая затраты на уже известную ошибку. Просто сейчас было дешевле провести эксперименты прямо на месте. Это также означает, что я не буду заканчивать работу над 3D печатью своих кейкапов до второй итерации, пока не закончу с новым вариантом корпуса для второго варианта. А сейчас опять перехожу на шаг 1 и начинаю тюнить раскладку.

Это еще не конец, продолжение следует!

Комментарии (6)


  1. eimrine
    23.07.2022 21:27

    Зачем понадобились напечатанные кейкапы? Они же противно ровные, как в неэргономичных ноутбуках.


    1. datacompboy Автор
      23.07.2022 22:27

      Они не ровные :)

      Hidden text

      На тени можно видеть профиль.


      1. eimrine
        24.07.2022 08:15
        +1

        Интересно узнать про материал клавиш который станет окончательным вариантом и особенности изготовления надписей на клавишах. Из моего опыта, на клавиатуре приятно работать когда клавиши как бы микро-шершавые, и неприятно — когда они заполировываются. Будет ли шершавость на напечатанном пластике устойчивой к затиранию?

        Как насчёт сделать профили клавиш разные на трёх рядах как на «настоящей» клавиатуре? А пустое место на клавишах заполнить шпаргалкой каких-нибудь горячих клавиш, особенно хорошо подойдёт шпаргалка к vim, потому что команды не требуют всяких контролов и альтов.

        Тонкие линии на акриле если и не сломаются (к слову: они мне написали письмо перед изготовлением, спросили понимаю ли я риски тонких линий), то точно потеряют форму от нагрева.
        Важный момент: акрил на морозе теряет эластичность и становится хрупким.
        если это сделано из акрила то при транспортировке зимой без силового каркаса оно гарантированно сломается.
        image


        1. datacompboy Автор
          25.07.2022 14:30

          Интересно узнать про материал клавиш который станет окончательным вариантом и особенности изготовления надписей на клавишах.

          Да, это было запланировано на 5ю часть. Вернусь к ним после экспресс-правки косяков что выяснил уже :)

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

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

          Как насчёт сделать профили клавиш разные на трёх рядах как на «настоящей» клавиатуре?

          Это хорошо для полноразмерных-высоких. Я полюбил слимы и это мне не надо. Но да, разумеется можно.

          Важный момент: акрил на морозе теряет эластичность и становится хрупким.

          Я надеюсь, что дома не будет мороза :)))


  1. vbifkol
    24.07.2022 09:10

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


    1. datacompboy Автор
      25.07.2022 14:23

      А есть сервис где его можно выбрать на резку и пощупать? Я не все перекапывал, хотелось бы еще и не оч дорого (разница между sculpteo и альтернативами что я смотрел доходила до 3х раз)