
Всё началось с того, что моя жена любит вязать.
Однажды я заметил, что во время вязания она постоянно записывает количество рядов и петель в обычный блокнот. Я спросил: «А есть какое-нибудь приложение для этого? Наверняка уже всё придумали».
Оказалось, что приложения действительно есть, но пользоваться ими не так удобно, как хотелось бы. Нужно брать телефон, открывать приложение, переключаться между экранами — в процессе вязания это скорее отвлекает, чем помогает.
Тогда я решил посмотреть, какие ещё есть варианты. Открыл маркетплейсы и быстро нашёл множество простых механических счётчиков рядов стоимостью около ста рублей. Казалось бы, проблема решена.
Но в какой-то момент я понял, что это отличный повод наконец разобрать накопившуюся коллекцию электроники, которая годами лежала без дела, и сделать что-то своё.
Так вместо покупки готового счётчика появилась идея собрать небольшой электронный помощник для вязания — устройство, которое будет удобно использовать именно в процессе работы.
Идея проекта
После того как появилась мысль сделать свой счётчик рядов, нужно было понять, каким он вообще должен быть.
На самом деле задача достаточно простая — нужно всего лишь удобно увеличивать и уменьшать номер текущего ряда. Никакого сложного функционала здесь не требовалось.
Но хотелось сделать устройство, которым действительно приятно пользоваться:
-
чтобы оно всегда было под рукой;
-
чтобы не нужно было отвлекаться на телефон;
-
чтобы номер ряда был хорошо виден;
-
чтобы управление занимало одно нажатие кнопки;
-
чтобы устройство работало автономно от аккумулятора.
Конечно, можно было остановиться на обычном механическом счётчике за пару сотен рублей. Но в таком случае терялось самое интересное — возможность сделать что-то своё.
Так появился небольшой DIY-проект: электронный счётчик рядов под названием KAST (Knitting Assistant).
Оставалось только выбрать железо, разобраться с формой устройства и понять, насколько далеко можно зайти в создании такой простой, на первый взгляд, вещи.
После этого цель стала намного понятнее — нужен был небольшой автономный гаджет, который можно держать в руке или закрепить на запястье, с крупным отображением текущего ряда и максимально простым управлением.
Выбор платформы
С выбором железа всё оказалось достаточно просто.
Под рукой уже достаточно давно лежала плата Waveshare ESP32-S3-LCD-1.69. Сколько именно она ждала своего часа — месяц или год — уже сложно сказать, но наконец появился подходящий проект.
На ней было практически всё необходимое:
-
ESP32-S3 в качестве основного микроконтроллера;
-
встроенный цветной экран;
-
доступные GPIO;
-
компактный размер
То есть половина устройства уже была готова.
Для управления я нашёл несколько тактовых кнопок размером 12×12 мм. Да, они получились немного крупнее, чем хотелось бы, но зато есть и небольшой бонус — нажимать их можно почти как на антистресс:)
Единственной деталью, которую пришлось заказать отдельно, стал аккумулятор ёмкостью 340 мА·ч.
До этого с аккумуляторами я практически не работал, поэтому это был, можно сказать, первый опыт. Как оказалось, в случае с этой платой всё оказалось гораздо проще, чем я ожидал: нужно было всего лишь подключить аккумулятор в соответствующий разъём.
После этого собрал небольшой макет и написал первую тестовую прошивку, чтобы проверить, как всё это будет работать.
Фото тестовой прошивки

Кажется, живёт.
Значит, с этим уже можно работать дальше.
Разработка корпуса
После того как стало понятно, что электроника работает, появился следующий вопрос: а как всё это превратить в устройство?
Оставлять плату с подключенными кнопками и аккумулятором на проводах, конечно, можно было бы. Но это был бы скорее очередной тестовый стенд, а не готовый гаджет.
Хотелось сделать что-то компактное, аккуратное и приятное в использовании.
Основная сложность была в том, что нужно было разместить внутри корпуса кучу штук:
-
саму плату;
-
аккумулятор;
-
дополнительные кнопки;
-
крепление ремешка;
-
доступ к USB-разъёму.
Первый вариант был достаточно прямолинейным — обычный компактный корпус вокруг платы. Но довольно быстро стало понятно, что просто уменьшить размеры недостаточно.
Устройство должно было удобно лежать в руке, не мешать во время вязания и при этом выглядеть не как очередной инженерный прототип с AliExpress.
Пораскинув мозгами, набросал первый референс. Получилось как в лучших домах Франции:
Получилось приемлемо -_-

После нескольких итераций моделирования появился первый более-менее законченный вариант корпуса.
CAD изображение корпуса

Корпус полностью разработан самостоятельно и напечатан на 3D-принтере.
В итоге KAST получил:
-
компактный корпус под конкретную электронику;
-
крупные физические кнопки;
-
место под аккумулятор;
-
крепление для ремешка;
-
возможность самостоятельной печати корпуса.
Как обычно бывает с 3D-печатью, первая версия была далека от идеала. Где-то не хватало места, где-то хотелось изменить расположение элементов, а какие-то решения хорошо выглядели только в CAD, но не в реальности.
В итоге я остановился на варианте корпуса, который уже выглядел достаточно неплохо.
Фото собранного корпуса

Но, как это обычно бывает, на этом остановиться уже было сложно.
Когда корпус был готов, появилась следующая гениальная мысль: а почему бы не сделать ещё и нормальный ремешок самому?
Так появилась идея самостоятельно изготовить силиконовый ремешок.
Для этого разработал 3D-печатный молд, в который можно было заливать силикон.
Скрин молда


Дальше начался классический цикл разработки:
моделирование → печать → заливка → поиск проблем → переделка → повтор.
После нескольких достаточно мучительных итераций удалось получить рабочий вариант.
Распечатанный молд

Правда, первый опыт литья тоже не обошёлся без ошибок.
Молд получился практически одноразовым — по неопытности я решил разместить часть воздуховода только в одной из половинок формы. В результате разобрать его аккуратно после заливки оказалось сложнее, чем планировалось.
Но, несмотря на это, результат меня полностью устроил.
Готовый ремешок

В итоге простая идея “сделать счётчик рядов” получила не только электронику и корпус, но и собственный кастомный ремешок.
Разработка прошивки
После того как корпус был готов, а электроника собрана, оставалась самая важная часть — заставить всё это работать.
Для разработки прошивки был выбран ESP-IDF. Хотелось использовать более “нативный” подход для ESP32 и получить полный контроль над работой устройства.
А дальше я решил немного схитрить.
В этот момент на работе я как раз готовил внутренний воркшоп по агентной разработке с использованием ИИ, и появился отличный повод проверить всё это не на учебном примере, а на +- отстраненном проекте, с ним не связанным.
Тем более после нескольких итераций с 3D-печатью молда для ремешка хотелось немного разгрузить себя и часть рутины переложить на “железного коллегу”.
Первый результат выглядел многообещающе:
Он честно пытался

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

После нескольких итераций, исправлений и пары вечеров совместной работы результат уже стал гораздо ближе к задуманному.
В итоге мой цифровой помощник научился:
-
вести версию кода;
-
самостоятельно собирать и прошивать ESP32;
-
помогать с отладкой устройства;
-
работать с LVGL;
-
создавать экраны интерфейса (все равно не без пинков, но приемлемо).
Конечно, полностью автономным разработчиком он не стал — без проверки, постановки задач и корректировок всё ещё никуда. Но для рутинных задач это оказалось достаточно мощным инструментом.
А дальше стало даже интересно экспериментировать. Помимо основного интерфейса появились небольшие анимации — например, простое ASCII-лицо на главном экране, иногда моргающее или умиляющееся 🙂
Первый тест в реальных условиях
К этому моменту устройство уже выглядело как законченный гаджет: был корпус, экран, кнопки, аккумулятор и прошивка.
Но оставался самый главный тест — проверить его не на столе, а в реальном сценарии использования.
Потому что одно дело — сделать устройство, которое технически работает, и совсем другое — сделать устройство, которым удобно пользоваться каждый день.
Как бы это выглядело, если бы я не забыл всё это сфотографировать:
ИИ генерация

В процессе тестирования почти сразу всплыли моменты, которые было сложно заметить во время разработки.
Например:
-
время работы от аккумулятора оказалось совсем небольшим — его хватало всего на пару часов;
-
силиконовый ремешок поначалу казался хорошей идеей, но при долгом использовании оказался не самым удобным вариантом + в ходе обсуждений на реддите были выявлены светлые идеи адаптации под покупной ремешок.
И вот это, наверное, одна из самых интересных частей: когда устройство выходит из мира CAD-моделей, паяльника и прошивки в реальную жизнь.
На этом этапе стало понятно, что первая версия получилась рабочей, но до действительно удобного устройства ей ещё нужно немного эволюции.
Я взял небольшую паузу, налил стакан пенного и сел думать, как именно исправлять недостатки первой версии.

И тут случился довольно неожиданный поворот.
Пока я размышлял над доработками, в issue моего GitHub-репозитория внезапно пришёл менеджер Waveshare.


Он попросил записать небольшое видео с демонстрацией работы устройства.
Обычное дело, подумал я.
Через некоторое время KAST появился в официальной документации Waveshare для платы ESP32-S3-LCD-1.69 в разделе с примерами проектов.
Честно говоря, такой поворот событий неплохо добавил мотивации.
Если уж проектом заинтересовались не только дома, но и у производителя самой платы, значит точно стоит довести его до более аккуратного и продуманного состояния.
Так что после короткой паузы началась работа над следующими доработками.
Доработка второй версии
После первого реального теста стало понятно, что устройство в целом работает именно так, как и задумывалось, но некоторые моменты всё же требовали доработки.
Первая версия была классическим прототипом: она выполняла свою задачу, но при ежедневном использовании быстро начали проявляться нюансы.
Во-первых, аккумулятора на 340 мА·ч оказалось маловато. Для демонстрации и тестов его хватало, но хотелось получить устройство, которое можно спокойно использовать длительное время без постоянной мысли “а не пора ли его зарядить”.
Во-вторых, ремешок, который на этапе разработки казался хорошей идеей, в реальном использовании оказался не таким удобным, как представлялось изначально.
Так началась вторая итерация KAST — уже не в формате “собрать, чтобы работало”, а в формате “доработать, чтобы этим действительно было удобно пользоваться”.
Основные изменения второй версии:
-
улучшение автономности;
-
доработка корпуса и крепления ремешка;
-
небольшие улучшения прошивки и интерфейса.
Но, конечно, просто исправить недостатки было бы слишком скучно.
В какой-то момент появилась новая “гениальная” идея — добавить в устройство режим точки доступа с веб-интерфейсом настроек и captive portal.
Почему бы не наделить простой счётчик рядов ещё и собственной страницей настроек?
К счастью, эту часть работы можно было снова частично доверить моему “железному коллеге” — благо после прошлых экспериментов он уже был более-менее обучен работать с ESP32.
Для увеличения времени работы я добавил:
-
настройку яркости дисплея;
-
автоматическое отключение экрана при бездействии;
-
режим сна для снижения энергопотребления.
Также изменил конструкцию корпуса — добавил стандартное крепление под ремешок шириной 22 мм. Такие ремешки часто используются в умных часах Xiaomi, Huawei и других производителей, поэтому подобрать замену или другой вариант стало намного проще.
Ну и, конечно, чтобы визуально было заметно, что это новая версия, пришлось сделать самое важное обновление:
поменять цвет корпуса 🙂
Новый корпус с ремешком и сайт с настройками


Вот и сказочке конец
На этом история KAST подходит к концу. *до следующего бокала пенного
Небольшой видосик с демонстрацией работы и процессом сборки
В итоге получилось устройство, которое вряд ли станет массовым продуктом — да и не было такой цели. KAST создавался для решения конкретной задачи конкретного человека.
Но именно в этом и был весь интерес проекта: взять простую бытовую проблему и довести идею от первых набросков до полностью работающего устройства — с собственным корпусом, прошивкой и открытым исходным кодом.
Но самое ценное в этом проекте для меня даже не сам счётчик рядов.
В процессе разработки накопилось много различных наработок, которые могут пригодиться уже для других проектов:
-
CAD-модель корпуса, которую можно использовать как основу для своих устройств;
-
материалы по автоматизации разработки с помощью AI-агентов;
-
различные инструкции и артефакты, которые появились в процессе создания проекта.
Если вам интересна тема DIY, 3D-печати и создания собственных устройств — возможно, какие-то из этих материалов помогут с вашими проектами.
Все материалы доступны здесь и они полностью открыты:
-
Обсуждение проекта на Reddit: первая версия
Также отдельно оставлю материалы по агентной разработке, может кому пригодится. Во время создания KAST я использовал этот воркшоп как практический пример для проверки подхода: где AI-агенты действительно помогают в разработке, а где без инженерного контроля всё ещё никуда — ссылка
ссылка на оригинал статьи https://habr.com/ru/articles/1057774/