Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare

в 8:40, , рубрики: 3D-печать, DIY, embedded, esp32, Носимая электроника, сезон DIY и IT
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 1

Всё началось с того, что моя жена любит вязать.

Однажды я заметил, что во время вязания она постоянно записывает количество рядов и петель в обычный блокнот. Я спросил: «А есть какое-нибудь приложение для этого? Наверняка уже всё придумали».

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

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

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

Так вместо покупки готового счётчика появилась идея собрать небольшой электронный помощник для вязания — устройство, которое будет удобно использовать именно в процессе работы.

Идея проекта

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

На самом деле задача достаточно простая - нужно всего лишь удобно увеличивать и уменьшать номер текущего ряда. Никакого сложного функционала здесь не требовалось.

Но хотелось сделать устройство, которым действительно приятно пользоваться:

  • чтобы оно всегда было под рукой;

  • чтобы не нужно было отвлекаться на телефон;

  • чтобы номер ряда был хорошо виден;

  • чтобы управление занимало одно нажатие кнопки;

  • чтобы устройство работало автономно от аккумулятора.

Конечно, можно было остановиться на обычном механическом счётчике за пару сотен рублей. Но в таком случае терялось самое интересное — возможность сделать что-то своё.

Так появился небольшой DIY-проект: электронный счётчик рядов под названием KAST (Knitting Assistant).

Оставалось только выбрать железо, разобраться с формой устройства и понять, насколько далеко можно зайти в создании такой простой, на первый взгляд, вещи.

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

Выбор платформы

С выбором железа всё оказалось достаточно просто.

Под рукой уже достаточно давно лежала плата Waveshare ESP32-S3-LCD-1.69. Сколько именно она ждала своего часа — месяц или год — уже сложно сказать, но наконец появился подходящий проект.

На ней было практически всё необходимое:

  • ESP32-S3 в качестве основного микроконтроллера;

  • встроенный цветной экран;

  • доступные GPIO;

  • компактный размер

То есть половина устройства уже была готова.

Для управления я нашёл несколько тактовых кнопок размером 12×12 мм. Да, они получились немного крупнее, чем хотелось бы, но зато есть и небольшой бонус - нажимать их можно почти как на антистресс:)

Единственной деталью, которую пришлось заказать отдельно, стал аккумулятор ёмкостью 340 мА·ч.

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

После этого собрал небольшой макет и написал первую тестовую прошивку, чтобы проверить, как всё это будет работать.

Фото тестовой прошивки
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 2

Кажется, живёт.

Значит, с этим уже можно работать дальше.

Разработка корпуса

После того как стало понятно, что электроника работает, появился следующий вопрос: а как всё это превратить в устройство?

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

Хотелось сделать что-то компактное, аккуратное и приятное в использовании.

Основная сложность была в том, что нужно было разместить внутри корпуса кучу штук:

  • саму плату;

  • аккумулятор;

  • дополнительные кнопки;

  • крепление ремешка;

  • доступ к USB-разъёму.

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

Устройство должно было удобно лежать в руке, не мешать во время вязания и при этом выглядеть не как очередной инженерный прототип с AliExpress.

Пораскинув мозгами, набросал первый референс. Получилось как в лучших домах Франции:

Получилось приемлемо -_-
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 3

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

CAD изображение корпуса
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 4

Корпус полностью разработан самостоятельно и напечатан на 3D-принтере.

В итоге KAST получил:

  • компактный корпус под конкретную электронику;

  • крупные физические кнопки;

  • место под аккумулятор;

  • крепление для ремешка;

  • возможность самостоятельной печати корпуса.

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

В итоге я остановился на варианте корпуса, который уже выглядел достаточно неплохо.

Фото собранного корпуса
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 5

Но, как это обычно бывает, на этом остановиться уже было сложно.

Когда корпус был готов, появилась следующая гениальная мысль: а почему бы не сделать ещё и нормальный ремешок самому?

Так появилась идея самостоятельно изготовить силиконовый ремешок.

Для этого разработал 3D-печатный молд, в который можно было заливать силикон.

Скрин молда
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 6
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 7

Дальше начался классический цикл разработки:

моделирование → печать → заливка → поиск проблем → переделка → повтор.

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

Распечатанный молд
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 8

Правда, первый опыт литья тоже не обошёлся без ошибок.

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

Но, несмотря на это, результат меня полностью устроил.

Готовый ремешок
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 9

В итоге простая идея “сделать счётчик рядов” получила не только электронику и корпус, но и собственный кастомный ремешок.

Разработка прошивки

После того как корпус был готов, а электроника собрана, оставалась самая важная часть — заставить всё это работать.

Для разработки прошивки был выбран ESP-IDF. Хотелось использовать более “нативный” подход для ESP32 и получить полный контроль над работой устройства.

А дальше я решил немного схитрить.

В этот момент на работе я как раз готовил внутренний воркшоп по агентной разработке с использованием ИИ, и появился отличный повод проверить всё это не на учебном примере, а на +- отстраненном проекте, с ним не связанным.

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

Первый результат выглядел многообещающе:

Он честно пытался
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 10

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

Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 11

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

В итоге мой цифровой помощник научился:

  • вести версию кода;

  • самостоятельно собирать и прошивать ESP32;

  • помогать с отладкой устройства;

  • работать с LVGL;

  • создавать экраны интерфейса (все равно не без пинков, но приемлемо).

Конечно, полностью автономным разработчиком он не стал — без проверки, постановки задач и корректировок всё ещё никуда. Но для рутинных задач это оказалось достаточно мощным инструментом.

А дальше стало даже интересно экспериментировать. Помимо основного интерфейса появились небольшие анимации — например, простое ASCII-лицо на главном экране, иногда моргающее или умиляющееся :)

Первый тест в реальных условиях

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

Но оставался самый главный тест — проверить его не на столе, а в реальном сценарии использования.

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

Как бы это выглядело, если бы я не забыл всё это сфотографировать:

ИИ генерация
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 12

В процессе тестирования почти сразу всплыли моменты, которые было сложно заметить во время разработки.

Например:

  • время работы от аккумулятора оказалось совсем небольшим — его хватало всего на пару часов;

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

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

На этом этапе стало понятно, что первая версия получилась рабочей, но до действительно удобного устройства ей ещё нужно немного эволюции.

Я взял небольшую паузу, налил стакан пенного и сел думать, как именно исправлять недостатки первой версии.

Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 13

И тут случился довольно неожиданный поворот.

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

Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 14
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 15

Он попросил записать небольшое видео с демонстрацией работы устройства.

Обычное дело, подумал я.

Через некоторое время KAST появился в официальной документации Waveshare для платы ESP32-S3-LCD-1.69 в разделе с примерами проектов.

Честно говоря, такой поворот событий неплохо добавил мотивации.

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

Так что после короткой паузы началась работа над следующими доработками.

Доработка второй версии

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

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

Во-первых, аккумулятора на 340 мА·ч оказалось маловато. Для демонстрации и тестов его хватало, но хотелось получить устройство, которое можно спокойно использовать длительное время без постоянной мысли “а не пора ли его зарядить”.

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

Так началась вторая итерация KAST — уже не в формате “собрать, чтобы работало”, а в формате “доработать, чтобы этим действительно было удобно пользоваться”.

Основные изменения второй версии:

  • улучшение автономности;

  • доработка корпуса и крепления ремешка;

  • небольшие улучшения прошивки и интерфейса.

Но, конечно, просто исправить недостатки было бы слишком скучно.

В какой-то момент появилась новая “гениальная” идея — добавить в устройство режим точки доступа с веб-интерфейсом настроек и captive portal.

Почему бы не наделить простой счётчик рядов ещё и собственной страницей настроек?

К счастью, эту часть работы можно было снова частично доверить моему “железному коллеге” — благо после прошлых экспериментов он уже был более-менее обучен работать с ESP32.

Для увеличения времени работы я добавил:

  • настройку яркости дисплея;

  • автоматическое отключение экрана при бездействии;

  • режим сна для снижения энергопотребления.

Также изменил конструкцию корпуса — добавил стандартное крепление под ремешок шириной 22 мм. Такие ремешки часто используются в умных часах Xiaomi, Huawei и других производителей, поэтому подобрать замену или другой вариант стало намного проще.

Ну и, конечно, чтобы визуально было заметно, что это новая версия, пришлось сделать самое важное обновление:

поменять цвет корпуса :)

Новый корпус с ремешком и сайт с настройками
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 16
Я сделал жене счётчик рядов. Теперь он живёт в документации Waveshare - 17

Вот и сказочке конец

На этом история KAST подходит к концу. *до следующего бокала пенного

Небольшой видосик с демонстрацией работы и процессом сборки

В итоге получилось устройство, которое вряд ли станет массовым продуктом — да и не было такой цели. KAST создавался для решения конкретной задачи конкретного человека.

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

Но самое ценное в этом проекте для меня даже не сам счётчик рядов.

В процессе разработки накопилось много различных наработок, которые могут пригодиться уже для других проектов:

  • CAD-модель корпуса, которую можно использовать как основу для своих устройств;

  • материалы по автоматизации разработки с помощью AI-агентов;

  • различные инструкции и артефакты, которые появились в процессе создания проекта.

Если вам интересна тема DIY, 3D-печати и создания собственных устройств — возможно, какие-то из этих материалов помогут с вашими проектами.

Все материалы доступны здесь и они полностью открыты:

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

Автор: Nikolay-Tyulkin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js