- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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


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

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

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

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

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

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

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


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


На этом история KAST подходит к концу. *до следующего бокала пенного
Небольшой видосик с демонстрацией работы и процессом сборки
В итоге получилось устройство, которое вряд ли станет массовым продуктом — да и не было такой цели. KAST создавался для решения конкретной задачи конкретного человека.
Но именно в этом и был весь интерес проекта: взять простую бытовую проблему и довести идею от первых набросков до полностью работающего устройства — с собственным корпусом, прошивкой и открытым исходным кодом.
Но самое ценное в этом проекте для меня даже не сам счётчик рядов.
В процессе разработки накопилось много различных наработок, которые могут пригодиться уже для других проектов:
CAD-модель корпуса, которую можно использовать как основу для своих устройств;
материалы по автоматизации разработки с помощью AI-агентов;
различные инструкции и артефакты, которые появились в процессе создания проекта.
Если вам интересна тема DIY, 3D-печати и создания собственных устройств — возможно, какие-то из этих материалов помогут с вашими проектами.
Все материалы доступны здесь и они полностью открыты:
GitHub KAST [2]
Thingiverse [3]
Обсуждение проекта на Reddit: первая версия [4]
Также отдельно оставлю материалы по агентной разработке, может кому пригодится. Во время создания KAST я использовал этот воркшоп как практический пример для проверки подхода: где AI-агенты действительно помогают в разработке, а где без инженерного контроля всё ещё никуда - ссылка [5]
Автор: Nikolay-Tyulkin
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/454732
Ссылки в тексте:
[1] официальной документации Waveshare: https://www.waveshare.com/wiki/ESP32-S3-LCD-1.69#Project_Resources
[2] GitHub KAST: https://github.com/Nikolay-Tyulkin/KAST
[3] Thingiverse: https://www.thingiverse.com/thing:7380179
[4] первая версия: https://www.reddit.com/r/esp32/comments/1ug2dpb/i_made_a_wearable_knitting_row_counter_for_my/
[5] ссылка: https://github.com/Nikolay-Tyulkin/ai_development_workshop_e2e
[6] Источник: https://habr.com/ru/articles/1057774/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1057774
Нажмите здесь для печати.