- KeeBee. Изготовление с нуля собственной USB-клавиатуры
- Исследование и макет CAD
- Прототипирование платы и проектирование прошивки
- Схема и печатная плата
- Заказ печатной платы и компонентов
- Окончательная сборка
- Итоги
- Нужна небольшая клавиатура – сделайте её сами
- Различные типы силиконовых и мембранных переключателей
- Текущие проекты
- С экономической точки зрения всё это имеет смысл при тиражах порядка 10 000
KeeBee. Изготовление с нуля собственной USB-клавиатуры
Несколько месяцев назад завершился мой проект по изготовлению USB-клавиатуры. Среди прочего, я выполнил дизайн электронных схем, спроектировал печатную плат, запрограммировал прошивку, сделал макет в CAD и произвёл сборку устройства. В результате получилась удобная клавиатура, которую я использую ежедневно и ласково называю KeeBee:
Клавиатура KeeBee в окончательном виде
Несколько целей проекта:
- Самостоятельное создание схемы.
- Написание прошивки клавиатуры.
- Узнать, как работает протокол USB.
На работе я в основном разрабатываю программное обеспечение для облачных сервисов, где отсутствует много слоёв реального оборудования. Поэтому очень приятно избавиться от некоторых абстракций и опуститься на аппаратный уровень: здесь реальные электронные устройства, которые можно потрогать и использовать.
Исследование и макет CAD
Мне очень нравятся минималистичные клавиатуры в стиле OLKB Planck и Preonic, которые за счёт ортолинейного расположения клавиш получаются очень компактными. Ещё я сразу знал, что хочу использовать переключатели Cherry MX Brown. Имея виду эти два компонента дизайна, я начал играть с ключевыми макетами в OpenSCAD. Это отличный инструмент с открытым исходным кодом, который работает скорее как язык программирования, чем WYSIWYG-интерфейс для мышки.
Взяв размеры элементов из документации Cherry MX, я сделал макет верхней пластины, затем добавил переключатели и клавиши, чтобы получить представление о том, как будет выглядеть окончательный результат. Верхняя пластина находится над печатной платой клавиатуры и служит хорошим стабилизатором для переключателей.
Дизайн верхней пластины:
После добавления клавиш:
Прототипирование платы и проектирование прошивки
В качестве основного микроконтроллера я выбрал STM32F042K6T6. Это около трёх долларов за чип, если брать от одной штуки. У него достаточно контактов для матрицы сканирования 69 клавиш (всего 32 контакта). Он работает на процессоре ARM Cortex M0 и содержит специальную USB-периферию для отправки USB-сигнала, не загружая этой задачей основной процессор. Я купил dev-плату Nucleo для прототипирования с этим чипом, прежде чем интегрировать его в дизайн своей печатной платы. Nucleo очень удобно легла на макетную плату и запиталась по USB.
Я разместил на макетной плате маленькую цепь на четыре клавиши, чтобы протестировать диодный контур, который я изучал. Игнорируя USB-сторону уравнения, на первом шаге требовалось заставить переключатели Cherry надёжно включать и выключать четыре соответствующих светодиода при нажатии кнопок.
Матрица сканирования — это такая техника, которую нужно использовать, когда у вас больше переключателей, чем контактов на микроконтроллере.
Когда матрица удовлетворительно заработала, пришло время поработать над USB.
Встроенный цикл прошивки по сути такой:
- Просканировать все клавиши в матрице.
- Сопоставить расположение кнопок с соответствующими символами в выбранной раскладке (QWERTY, Dvorak и т. д.).
- Взять результат сопоставления, сгенерировать пакеты USB HID Report и отправить на периферийное устройство USB.
- Включить светодиод на клавиатуре, если клавиша нажата, выключить — если нет.
Из main.cc:
Компонент keyboard.SendReport фактически передаёт пакеты USB-хосту. Я упорно пытался заставить USB правильно работать. В этом протоколе много нетривиальных слоёв, которые требуют точного тайминга и правильной идентификации устройства. В итоге пришлось запустить Wireshark, чтобы прослушать все USB-пакеты, поступающие на мой ноутбук Linux и выяснить, где что потерялось. Поиск в интернете практически ничего не дал, на большинство вопросов отвечают примерно так: «Вероятно, ваше USB-устройство сломалось, нужно купить новое». Если вы на самом деле пытаетесь сконструировать USB-устройство, такие ответы не очень полезны. Мне оставалось только погрузиться в объёмные спецификации USB с большим количеством незнакомой терминологии.
Повозившись некоторое время, я всё-таки заставил клавиатуру с четырьмя клавишами корректно идентифицировать себя как USB HID (Human Interface Device) и все нажатия правильно передавались на ноутбук:
Регистрация в качестве USB-вендора и получение официального device id дорого стоит. Если у вас просто любительский проект, то придётся захватить идентификатор какого-нибудь похожего устройства. Я подумал, что “Gear Head” звучит круто, тем более они выпускают клавиатуры, поэтому выбрал их.
Схема и печатная плата
Получив более-менее работающую прошивку и рабочий прототип, пришло время составить схему и дизайн печатной платы в KiCAD и сделать реальную печатную плату. Когда я добился, что схема для 4 кнопок работает, осталась относительно простая задача соединить всё вместе:
После разработки схему и установки площадок для компонентов нужно произвести макет реальной печатной платы:
KiCAD умеет красиво рендерить будущую плату в 3D:
Есть много отличных учебников по KiCAD. Я начал с отличной видеосерии Getting to Blinkey 4.0 от Криса Гэммела, где он подробно разъясняет все этапы создания схемы светодиодного юлинкера в KiCAD от начала до конца.
Заказ печатной платы и компонентов
Доведя схему и дизайн печатной платы до удовлетворительного уровня, я начал размещать кучу заказов:
- Все компоненты из списка материалов: переключатели, светодиоды, диоды, микроконтроллеры и т. д. Я обычно заказываю такие штуки на DigiKey.
- Сама печатная плата. Довольно много сервисов готовы недорого изготовить вам прототип. У меня отличный опыт работы с OshPark и JLCPCB. Для этого проекта я выбрал JLCPCB из-за цены на такой размер, а ещё потому что они разрешили выбрать синее покрытие.
- Все остальные детали: крышки и прочее. Для этого проекта мой шурин помог лазером вырезать верхнюю и нижнюю клавиатурные пластины из 1/4” акриловых листов. Для остальных частей можно использовать онлайновые сервисы лазерной резки и 3D-печати, если нет доступа к оборудованию.
День, когда пришла посылка с платой, самый лучший:
JLCPCB очень доступный сервис. Этот дизайн с доставкой DHL из Китая обошёлся менее чем в $30, а весь процесс от загрузки файлов до прихода посылки занял чуть больше недели.
Шурин взял DXF-файлы из OpenSCAD и забросил их в лазерный резак:
Окончательная сборка
Получив все детали, я начал сборку. Первый шаг — сборка компонентов печатной платы: паяльник для больших электронных компонентов и паяльная станция для поверхностного монтажа маленьких компонентов, таких как микроконтроллер STM32.
Общее время сборки платы составило около трёх часов — большую часть заняла пайка 70 диодов и переключателей.
Я добавил хедер для JTAG-отладки, через который подключил JLINK Edu mini для прошивки микроконтроллера с помощью OpenOCD.
Затем пришло время окончательного тестирования и финальной сборки:
Сын решил, что это отличный поезд для его животных:
Итоги
От первоначальной идеи до окончательной сборки проект занял около трёх месяцев. Было исключительно полезно в качестве хобби сделать то, что я до сих пор ежедневно использую на работе.
Все файлы проекта опубликованы на GitHub, в том числе исходники прошивки, схемы печатных плат, список материалов и модели CAD.
Источник
Нужна небольшая клавиатура – сделайте её сами
Если вам нужна клавиатура, вы можете её приобрести. Если вам нужна небольшая клавиатура, то тут всё сложнее. Кроме вариантов с переделкой клавиатуры от Blackberry или возни с крохотными тактильными переключателями, нормальных решений для получения небольших, тонких и специализированных клавиатур нет. Однако есть один вариант: силиконовые клавиатуры. Пока этого никто не делал, поэтому я решил – почему бы и не попробовать.
К сожалению, готовой информации по проектированию, созданию или производству собственных силиконовых клавиатур не существует. Документации крайне мало, и все изготавливающие их фабрики, судя по всему, копируют информацию друг у друга. Спрашивать у китайской компании, как это делается – всё равно, что играть в «испорченный телефон». Но, несмотря на всё это, я сумел сделать собственную силиконовую клавиатуру, и теперь делюсь информацией о том, как это делается.
Цель проекта – создать очень маленькую компьютерную клавиатуру для носимых устройств, электронных бейджей, игры в Fortnite на переносном компьютере, или просто для использования в качестве USB-клавиатуры. Такое уже делали раньше. Бейджик для конференции 2018 Hackaday Belgrade Conference использовал 55 стандартных тактильных переключателей, выстроенных в виде клавиатуры. Ещё один проект с Hackaday.io под названием (Pi)QWERTY тоже использовал несколько десятков стандартных тактовых переключателей. Однако у подобных устройств есть свои недостатки.
PiMiniQWERTY – наилучшая из самодельных миниатюрных клавиатур
Во-первых, стандартные тактильные кнопки на 4 мм весьма дороги. Это не проблема, если вы используете небольшое их количество для одного проекта, но если вам требуется 60-70 кнопок на устройство, стоимость начинает расти. Самые дешёвые из тех, что я нашёл, стоят по $70 за рулон из 4000, или пару центов за штуку. Возьмём 70 штук и получим $1,25 на устройство – только за кнопки. Может получиться, что кнопки будут стоить дороже микроконтроллера.
Во-вторых, тактильные кнопки надо собирать вместе. Количество отказов может быть не очень большим, но если вы собираете целые платы из переключателей, оно будет больше, чем если бы это были единые устройства. По сравнению с SMD-резисторами и колпачками кнопки большие и толстые, что увеличивает количество брака при их размещении. Также, поскольку на сборку такой клавиатуры тратится много времени, приходится платить за сборку из кнопок больше, чем за установку готового устройства. Это увеличивает стоимость клавиатуры на основе тактильных переключателей.
Наконец, на кнопках нет маркировки. Если вы будете собирать клавиатуру из 4 мм кнопок, вам придётся делать маркировку на плате. На белградской конференции это было сделано довольно неплохо, а у mini (Pi)QWERTY – блестяще, поскольку там использовали две платы, одну для электроники, вторую для подписей. Можно представить нанесение надписей на кнопки, однако их поверхность и так весьма мала.
Решение: использовать силиконовые клавиатуры, изготовленные методом литья под давлением [injection molding]. Такие клавиатуры есть почти во всех пультах дистанционного управления, они использовались в старых телефонах Nokia типа «кирпич». Силиконовые клавиатуры повсюду, и есть фабрики, изготавливающие их на заказ.
Силиконовые клавиатуры с TaoBao и AliExpress. Продающие их компании изготавливают их и на заказ.
В использовании силиконовых клавиатур есть много преимуществ. Во-первых, большинство из них используют метки на кнопках. Во-вторых, вы не ограничены 4 мм кнопками. Кнопки могут быть любого размера и любой формы. Собирать их легко; чтобы использовать такую клавиатуру с платой, нужно просто поместить её на плату; всё остальное уже сделано за вас. Наконец, силиконовая клавиатура выглядит круче чем любые кнопки. Так почему же их не используют? В основном, из-за стоимости, однако есть и некоторые проблемы инженерного характера.
Различные типы силиконовых и мембранных переключателей
Мембранная клавиатура ZX Spectrum
Перед тем, как углубиться в проектирование силиконовых клавиатур, нужно обсудить схемы небольших клавиатур и наборов клавиш. Первые – это клавиатуры Metal Dome, или мембранные. Лучшими примерами таких тактильных мембранных кнопок будут клавиатуры от популярных домашних компьютеров 1980-х, ZX Spectrum или Atari 400. Если посмотреть в других местах квартиры, возможно, такая клавиатура стоит у вас на микроволновке.
Такие клавиатуры располагают кнопки матрицей. Электрическая схема состоит из дорожек, нарисованных токопроводящими чернилами на двух листах полиэстера. Купол из нержавейки располагается под каждой кнопкой. Нажатие на кнопку сжимает купол, и замыкает два слоя полиэстера.
Лучшие изображения мембранной клавиатуры можно взять с одного из своих проектов. Таким мембранам всё равно, как был нажат металлический купол. Простейший вариант – расположить кнопки и буквы прямо поверх мембраны. Кусочек пластика можно наклеить на массив тактильных переключателей. Именно так сделаны клавиатуры в игрушках Speak N Spell и Big Trak [в СССР был аналог такой игрушки, «Луноход» / прим. перев.]. Именно так можно сделать клавиатуру для трёхлетнего малыша, защищённую от арахисового масла.
Однако чистые мембранные переключатели на ощупь очень дешёвые и не дают обратной тактильной связи. Один из вариантов – расположить пластиковые кнопки над мембранным переключателем. Клавиатуры Metal Dome (с металлическим куполом) используют клавиши из жёсткого пластика, нажимающие на небольшие металлические купола, зажатые между двумя слоями полиэстера с проводящими чернилами:
Но мембранным клавиатурам не обязательны жёсткие пластиковые кнопки. Можно использовать мягкие силиконовые, поверх мембранной клавиатуры, как сделано на ZX Spectrum. Вместо жёстких пластиковых прямоугольников, как у меня в проекте Metal Dome, Speccy использовали единое полотно из силиконовых кнопок. ZX Spectrum использовал силиконовые кнопки на своей клавиатуре, но это всё равно была мембранная клавиатура. Нет разницы, как нажимать металлический купол – через лист пластика с напечатанными символами, или силиконовыми прямоугольниками.
Другой тип клавиатуры – такая, которую я сделал для этой статьи – это силиконовая, или резиновая клавиатура.
Вездесущий мембранный кейпад для Arduino
Резиновая клавиатура использует силиконовые кнопки, изготовленные методом литья под давлением, нажимающие на контакты. Углеродный контакт («таблетка») встроен в силиконовую кнопку, а контакты для клавиатурной матрицы создаются из дорожек на печатной плате. Контакты можно интегрировать в плату (рекомендуется технология ENIG) или напечатать поверх токопроводящими чернилами. В любом случае, клавиатура состоит из печатной платы, силиконовых кнопок с проводящими контактами под каждой кнопкой, маленьких проводящих углеродных контактов в каждой кнопке, и гнёзд для закрепления силикона на плате.
Выбирая между мембранной и резиновой клавиатурой, стоит рассмотреть несколько моментов, и многие из них способны перевесить чашу весов в пользу мембранной. Хотя резиновые клавиатуры можно делать многих цветов, символы на мембранной клавиатуре, по сути, печатаются; на мембраной клавиатуре можно сделать любые символы любых цветов. Мембранные клавиатуры дешевле, поскольку им не нужна форма для литья. Резиновым клавиатурам требуется полоска, содержащая монолитный блок силиконовых клавиш, что означает дополнительная стоимость второй формы для литья. И выигрывает резиновая клавиатура только по тактильным ощущениям. Если вы когда-нибудь пробовали использовать Atari 400, вы согласитесь: на резиновых клавиатурах гораздо проще печатать. А ещё они более стильные, чем мембранные.
Текущие проекты
Не специализированная резиновая клавиатура, которую можно использовать хоть сейчас
На сегодня мне неизвестны случаи использования специализированных резиновых клавиатур малыми тиражами. Они, конечно, существуют в DIY-сообществе: Adafruit продаёт клавиатуры 4х4 (у Sparkfun есть то же самое), и подобные кнопки можно заказать на AliExpress и eBay. Да, конечно, Sparkfun и Adafruit потратились на разработку плат, но сами кнопки, скорее всего, делают где-то далеко-далеко. Это не специализированные клавиатуры; это стандартные готовые клавиатуры для специализированных проектов.
И эти резиновые кнопки использовались много где: для создания клона Monome, шагового секвенсора, MIDI-устройства. Именно для этого силиконовые кнопки с подсветкой и были разработаны: из них получаются крутые MIDI-контроллеры. Но поскольку на них нет меток, они мало для чего ещё подходят.
И это единственные, насколько мне известно, DIY-проекты, в которых используются силиконовые клавиатуры 4х4. Люди, конечно, пытаются делать что-то ещё. Некоторые из них ищут на форумах резиновые клавиатуры, а кое-кто экспериментирует с алюминиевыми формами для литья, но пока что никому не удалось достичь успеха. Дэйв Джонс отверг идею резиновых клавиатур для своего проекта uSupply и перешёл на специализированные мембранные переключатели.
Разработка клавиатуры, бобышки и отверстия для воздуха
Так из чего же строится создание резиновой клавиатуры? По сути, мы разрабатываем стальную или алюминиевую форму для литья. Форма отправляется в машину для литья под давлением, где её заполняют углеродными шариками, заливают горячим силиконом, который потом вулканизируют. Возможна дальнейшая обработка кнопок – лазерное нанесение меток, шелкография или нанесение эпоксидного покрытия. Проектирование резиновой клавиатуры – это проектирование формы для литья, но базовые компоненты довольно просты. Ниже приведён пример – клавиатура из единственной клавиши – которую я за несколько минут сделал в Fusion360.
Внешняя форма клавиатуры зависит от назначения, а базой служит слой силикона. На углах основы есть четыре бобышки, для крепления на плате. Они нужны для выравнивания кнопки и предотвращения её скольжения.
Внутренняя структура клавиши состоит из большой углеродной таблетки, того контакта, который будет нажимать на плату. На клавиатуре просто расположено больше клавиш, но форма одной клавиши, по сути, одна и та же. Отметьте промежутки снизу клавиши, позволяющие воздуху проходить под ней. Если их не сделать, клавиатура будет подпукивать при нажатии.
Силиконовая клавиша в разрезе. Чёрный объект – углеродная таблетка, служащая мостиком между двумя контактами на плате.
Размеры моей клавиатуры, в мм.
После того, как проект клавиатуры был готов, а файлы отправлены на фабрику для изготовления формы и производства нескольких пробных образцов, настало время разработать печатную плату. Для моего проекта схема особого значения не имела – главное, чтобы на плате были близко расположены две дорожки, соединённые с противоположными сторонами клавиатурной матрицы. Для этого рекомендуется технология ENIG. Имеют значение и производственные ограничения: стандартный минимум ширины дорожки и расстояния между ними составляет 0,15 — 0,20 мм, и я разработал плату с дорожками в 0,25 мм и таким же расстоянием между ними.
Закончив клавиатуру и плату, можно переходить к крепёжной полоске. Это перфорированный пластик, прикручивающийся к плате. Резиновая клавиатура зажимается между ним и платой. Я сделал следующий прототип, просто затем, чтобы протестировать клавиатуру. Электроника – просто Teensy LC (была у меня под рукой), с вырезом, дающим доступ к плате для прототипирования:
Я отправил эту модель в Shapeways, и клавиатура была собрана. Прошивка на Teensy использует стандартную библиотеку Keypad и представляется компьютеру, как устройство USB HID. Получилась специализированная резиновая клавиатура именно той формы, что мне надо. Это не окончательный вариант, поскольку USB-клавиатура – это просто рабочая концепция для проверки резиновых клавиш, однако она реально работает.
Раскрою стоимость проекта; стоит учитывать, что выборка тут очень маленькая – я обращался лишь к одному производителю только с одной моделью. Однако из-за сильной конкуренции на рынке, я думаю, что эти цены будут достаточно репрезентативными для средней стоимости специализированной резиновой клавиатуры.
Стоимость получилась следующей:
Изготовление | $2 219 |
Проектирование | $600 |
Банковская комиссия | $58 |
ИТОГО | $2 877 |
С экономической точки зрения всё это имеет смысл при тиражах порядка 10 000
Общая стоимость небольшого количества образцов получилась равной $2877. Это стоимость формы для литья и проверки инженером CAD-файлов. Десять клавиатур за три тысячи баксов.
Однако после всех этапов проектирования и подготовки фабрика способна выдавать клавиатуры пачками. После этого стоимость одной штуки становится равной от $1,3 при тираже в 1000 до $0,79 при тираже в 5000. Так что в сумме тысяча клавиатур обойдётся мне в $4 177, то есть по $4,18 за штуку. Пять тысяч клавиатур обойдутся в $6 827, или по $1,36 за штуку. Такая цена, меньше $1,5, делает эту технологию жизнеспособной для мелкомасштабного производства.
Резиновые клавиатуры подходят для крупных производителей: Samsung продаёт миллионы телевизоров, и у всех них один пульт д/у. Вопрос изготовления резиновой клавиатуры для DIY-проекта всегда оставался открытым. Проекты мелкого масштаба не используют эту технологию, поэтому некого было спросить, имеют ли смысл специализированные силиконовые переключатели. Я говорю, что смысл есть, если вы делаете тысячу клавиатур. На тираже в пять тысяч стоимость резиновой клавиатуры и пластикового крепежа может опуститься меньше стоимости микроконтроллера.
Источник