Lily58 Pro без проводов: как я устранил глюки и увеличил ёмкость аккумуляторов в 37 раз
Привет, SE7EN! Это Денис из Selectel. В предыдущей статье я рассказывал, как превратил проводную сплит-клавиатуру Lily58 Pro в беспроводную. Тогда результат меня порадовал: обе половинки подключались по Bluetooth, OLED-экраны и RGB-подсветка продолжали работать, а на дисплеях появились собственные картинки с котиками и уровнем заряда. Казалось, переделка завершена и о проводах можно забыть.
Однако уже через две-три недели стало понятно, что праздновать победу преждевременно. Аккумуляторы садились подозрительно быстро, при беспроводном вводе ощущалась задержка, а некоторые буквы появлялись дважды. Пришлось вновь браться за инструменты, заказывать комплектующие и искать причину неполадок. В этой статье расскажу, к чему привели эксперименты.
Китайские контроллеры: обратная сторона экономии
Для первого беспроводного варианта Lily58 я выбрал недорогие аналоги nice!nano v2 на базе nRF52840. Заказал их на Amazon по 8 € за штуку. Прошивка установилась без особых сложностей, половинки соединились по Bluetooth, клавиши отзывались на нажатия. Серьезных поводов для беспокойства поначалу не было, тем более что раньше с такими контроллерами я не работал. Но вскоре выяснилось: успешная прошивка еще не гарантирует стабильной работы.

Главным источником проблем стала правая половинка. Она какое-то время работала от батареи, а затем неожиданно выключалась. При подключении USB устройство снова оживало, но после перехода на аккумулятор ситуация повторялась. Индикатор зарядки перестал светиться, хотя сам аккумулятор заряжался — это подтвердили измерения мультиметром. Показания уровня заряда на OLED тоже заметно менялись без очевидной причины. Сначала я подозревал батарею: все-таки аккумуляторы были малой емкости и куплены у непроверенного продавца. Проверенного у меня попросту не было.

Вскоре к этому добавились проблемы с печатью. Нажатия иногда обрабатывались с задержкой, символы пропадали или, наоборот, дублировались. Я подозревал свитчи и периодически менял их. Это вроде бы помогало, но ненадолго. Для клавиатуры, которую используешь для большого объема текста, такие сбои стали серьезным недостатком. Особенно досаждала их непредсказуемость: какое-то время все работало нормально, а затем странности возвращались. Я проверял параметры прошивки, заново подключал половинки и менял конфигурацию, но стабильности добиться не удалось.
В конце концов обе половинки почти постоянно стояли на зарядке. Вместо проводной клавиатуры с одним USB-кабелем я получил «беспроводную» с двумя. Терпение закончилось, и я вернул прежние проводные контроллеры, установленные до переделки. Клавиатура сразу заработала как надо. Хорошо, что старые платы я не выбросил и не перепрошил для других проектов.

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

Поразмыслив, я отказался от идеи снова покупать те же контроллеры на Amazon и заказал на AliExpress другие китайские аналоги nice!nano v2. На этот раз платы были красными, а три штуки стоили около 16 €. Внешне, за исключением цвета, они почти не отличались от прежних, поэтому на чудо я не рассчитывал. План был простой: попробовать новые платы и, если проблемы повторятся, окончательно вернуться к проводному подключению.

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

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

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

Я снова обратился к документации ZMK и изучил параметры конфигурации. Помогло выделение отдельной очереди для обновления дисплея и изменение приоритета соответствующего потока. В конфигурационном файле я раскомментировал первую строку и добавил вторую:
CONFIG_ZMK_DISPLAY_WORK_QUEUE_DEDICATED=y
CONFIG_ZMK_DISPLAY_DEDICATED_THREAD_PRIORITY=10
Под первой строкой находился комментарий # esto creo que ya no es necesario. Испаноговорящий разработчик предполагал, что этот параметр больше не нужен. В моем случае, однако, он оказался важен.
После пересборки прошивки задержки полностью исчезли. Я был очень рад: клавиатура наконец перестала быть источником неполадок и стала тем, чем ей и полагалось быть — рабочим инструментом.
В чем была причина? Насколько я понимаю, прежде обновление изображения могло конкурировать с другими задачами, а после изменения настроек обработка дисплея стала меньше мешать вводу. Это не универсальный рецепт для всех клавиатур на ZMK: многое зависит от оборудования и версии прошивки. Но мне помогли именно эти два параметра.
С 80 до 3000 мА·ч: увеличиваем автономность
В первой беспроводной версии Lily58 стояли небольшие литий-полимерные аккумуляторы на 80 мА·ч. Я выбрал их из-за компактности: они помещались под контроллерами, и переделывать корпус не требовалось. Однако с включенными OLED-дисплеями и RGB-подсветкой заряжать клавиатуру приходилось слишком часто. Быстрее всего разряжалась правая половинка, хотя позже выяснилось, что часть проблем была связана с неисправным контроллером.
Можно было отключить подсветку и существенно уменьшить энергопотребление. Тогда клавиатура работала не несколько часов, а около суток. Полная зарядка аккумуляторов занимала примерно час, так что их можно было подзаряжать во время перекуса или прогулки и затем пользоваться клавиатурой еще день.
Но такой компромисс меня не устраивал: RGB-подсветка была одной из причин, по которым мне понравилась эта клавиатура. В ZMK есть энергосберегающие настройки для отключения отдельных функций при простое, к тому же можно было уменьшить яркость. Однако постоянно следить за зарядом все равно не хотелось. Я решил установить аккумуляторы гораздо большей емкости, тем более что пространство внутри корпуса оставляло место для экспериментов.
Сначала я рассматривал батареи емкостью в несколько сотен миллиампер-часов. Под рукой нашлись две электронные книги с разбитыми экранами, в каждой из которых стоял аккумулятор примерно на 1 000 мА·ч. Этого вполне хватило бы.
Но затем в запасах обнаружились две батареи, оставшиеся, насколько я помню, от внешнего аккумулятора. Это были Li-ion-элементы емкостью 3 000 мА·ч и толщиной 3 мм. Я подключил их — все заработало. Несмотря на пару лет хранения, заряд в них сохранился.

Теперь в каждой половинке установлен отдельный аккумулятор на 3 000 мА·ч. По сравнению с исходными 80 мА·ч емкость выросла более чем в 37 раз. Я рассчитывал, что такой запас позволит перестать постоянно думать о зарядке. На вторые сутки после установки клавиатура с включенной подсветкой все еще работает: индикатор показывает 23% против примерно 40% в начале. Впрочем, показания могут быть неточными.
Прошивка оценивает остаток заряда по напряжению и при этом не учитывает фактическую емкость аккумулятора. Погрешности особенно заметны после перехода от крошечных батарей к гораздо более крупным. Поэтому судить об автономности только по цифрам на экране пока рано.
Полный цикл разрядки я еще не провел — не успел. Но первые наблюдения и расчетное энергопотребление дают надежду на одну-две недели работы при умеренной яркости RGB. Без подсветки автономность должна вырасти в разы и, возможно, достигнет пары месяцев. Правда, увеличивал аккумуляторы я не ради этого. Главное, что необходимость постоянно подключать кабели, похоже, осталась в прошлом: клавиатура стала беспроводной не только по названию.
Новый корпус: место для батарей нашлось, а о подсветке забыли
Для крупных аккумуляторов пришлось переработать корпус. Прежние батареи помещались под контроллерами, но элементы на 3 000 мА·ч туда уже не влезали. Я открыл STL-модели и подготовил достаточно просторные посадочные места. Заодно решил напечатать корпус из полупрозрачного PLA, чтобы RGB светилась не только через отверстия, но и сквозь пластик. Вышло симпатично, хотя равномерно рассеять свет оказалось сложнее, чем я ожидал.

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

После сборки обнаружился забавный просчет. Я предусмотрел место для большого аккумулятора, убрал мешающие крепления и напечатал полупрозрачный корпус, но совсем забыл о светодиодной ленте. В результате батарея заслонила значительную часть RGB-свечения. Подсветка продолжала работать, но эффект от нее заметно уменьшился. Ирония в том, что увеличенная емкость должна была как раз позволить пользоваться светодиодами без постоянной подзарядки. Одну проблему я решил, а другую создал сам.

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

В результате светодиоды снова хорошо подсвечивают полупрозрачный корпус. Новое расположение оказалось удачным: проходя через пластик, свет становится мягче, чем при открытой установке отдельных RGB-элементов.

Арендуйте сервер с доставкой на вашу площадку
Предоставим мощные серверы для запуска проекта on-premise: с помесячной оплатой, полным контролем над оборудованием на этапе запуска и возможностью последующего выкупа.
Итоги переделки
После всех доработок Lily58 Pro заметно отличается от версии, описанной в первой статье. Проблемные китайские контроллеры заменены другими платами на тех же nRF52840, а ZMK корректно работает с OLED-дисплеями и RGB-подсветкой. Емкость аккумуляторов в каждой половинке увеличилась с 80 до 3 000 мА·ч. При этом клавиатура сохранила все, за что я ее ценю: низкопрофильные переключатели, раздельную конструкцию и привычную раскладку. Ради этого все и затевалось.
Основные неполадки, мешавшие пользоваться клавиатурой, удалось устранить. Прежние проблемы с Bluetooth больше не проявляются, задержки при печати исчезли, а запас энергии существенно вырос. Теперь остается проверить реальную автономность и сравнить ее с предварительными расчетами.
С самодельными клавиатурами складывается занятная история. Сначала кажется, что достаточно выбрать переключатели, собрать платы и настроить прошивку — и можно просто пользоваться устройством. Но потом находятся другие контроллеры, появляется желание увеличить емкость аккумуляторов, изменить корпус или добавить новую функцию. Каждая доработка может улучшить клавиатуру, но одновременно есть риск нарушить то, что уже отлично работало. Пока я решил остановиться на достигнутом. Делитесь своим опытом работы с кастомными клавиатурами — с удовольствием почитаю!
1,3 млн Android-приставок превратили в ботнет: китайская Videostrong Technolog намеренно внедрила бэкдор и продавала доступ к нему
«Урал» представил первый за многие годы новый мотоцикл: живые фото Neo 500
Впервые обычный смартфон перешёл с наземной сети на спутниковую связь без потери соединения
Дата-центры оказались под угрозой: в Техасе впервые за 36 лет избран губернатор-демократ
OnePlus Ace 7 Pro и Ace 7 с батареей на 9000 мА·ч, зарядкой 100 Вт, камерой 200 Мп, защитой IP69K и Snapdragon 8 Elite Gen 5 продаются лучше серии Ace 6
В ZipAir подтвердили, что Starlink не только обеспечивает быстрый интернет, но и улучшает финансовые показатели авиакомпаний
Samsung запустила бета-версию One UI 9.5 для Galaxy S26 Ultra
Худшее ещё впереди: по прогнозу Team Group, покупать память скоро станет ещё сложнее