Ещё не сделал свой секундомер?
Ох зря... Сейчас расскажу, зачем это потребовалось мне
У нас уже 2026 год на дворе, представляете? У тебя в кармане лежит тончайший, но такой огромный смартфон со всеми самыми современными благами цивилизации: гигабитный интернет, 16K камера, мессенджер, который ловит везде, и даже моднейший дизайн в стиле глассморфизма. И при всём этом в нём есть часы и секундомер. Но так ли тебе приятно ими пользоваться? А ведь они ревнуют тебя к остальному содержимому комбайна и могут обидеться...
Давайте музычку подставим, тема магазина с PS Vita подойдёт?
И вот я представляю тебе своё решение этой проблемы: свой физический секундомер! Работает надёжно, как часы! И ведь в нём есть всё, что нужно тебе: сочный OLED разрешением 128x64 (причём дешевле твоей жизни)! Две физические тактовые кнопки для импакта! И даже модуль часов реального времени! И всё это работает на базе мощнейшего микроконтроллера ESP32-C3 (за свои ~150 рублей) от наших друзей-китайцев, который даже можно назвать игровым (при условии, что игры — с геймбоя)!
Итак, как я докатился до этого
Прикиньте, не многие знают, но есть такая вещь, как образование. И я, как добропорядочный студент, с целью получения диплома вынужден закрывать дисциплины (сколько канцеляризмов!). Одна из них носит название — «Микроэлектроника и схемотехника ЭВМ», при этом курсовик по ней засчитывали как за «Организацию и архитектуру ЭВМ и вычислительных систем». Короче, я — будущий наносек.
И вот, выбор темы. Естественно, зная некоторую кривизну своих рук, я выбрал кое-что попроще: секундомер (при этом я как-то умудрился сделать картонную модель Metal Gear Rex в детстве, сантиметров 20 высотой). Секундомер — это просто, секундомер — это престижно, секундомер — это эстетично. Столько разных форм-факторов можно напридумать, столько разных реализаций, да и с часами они роднятся.
От механики до электроники, столько идей придумывают люди.
При всём этом даже корпус нам было не обязательно делать, но мы же не ищем лёгких путей, так ведь? И вот, о предварительном проектировании.
Раздутые бюджеты
Ответьте на один вопрос: секундомер — это простое устройство? Вот. Мне бы не потребовалось ничего, кроме (максимум!) ПРОСТЫХ контроллера, экрана и двух кнопок. Но самое лучшее — детям. Вот я и решил делать на базе ESP32. Пришёл я к этому не сразу, далеко не сразу. Перед этим я перетыкал три разные Arduino, одну из них даже убив (отставим драматизм, она просто была бракованная).
Микроконтроллер
Чтобы вам было самую кроху понятней, почему ESP32, вот вам небольшое сравнение процессоров:
ATmega328P (которая используется в самых дешёвых Arduino типа Uno и Nano, такие вы наверняка видели и даже пробовали помигать диодиком): 8-битный процессор, 16 МГц, 2 КБ RAM.
- ESP32-C3: 32-битный RISC-V (фанаты ARM должны ликовать на этом месте), 160 МГц, 400 КБ RAM, Wi-Fi, Bluetooth.
Это всё ещё не малинка (Raspberry PI), но даже особо не вникая в значения, вы видите превосходство одних циферок над другими. При этом переплата за ESP совсем незначительная — первая причина сделать оверкилл. И отсюда вытекает возможность для разных экспериментов и дальнейшей модернизации — вторая.
Экран
Выбор продвинутого OLED основывался на том, что... Я просто не смог нормально припаять I2C к ЖК из комплекта. Но OLED выгоден и тем, что у нас более шибкое использование пространства, более цельного, да и разрешение с яркостью всё равно выше (прямо пропорционально потреблению энергии, хотя можно просто выводить минимум инфы для экономии).
Такой экран по стоимости примерно как половина контроллера, но мы же не деньги пришли сюда считать?
Остальное
Кнопки - комплектные, красные. Модуль часов тоже комплектный. Отдельно ещё провода дозаказывал и макетные платы для пайки разных размеров.
В добавок ко всему, пришлось потратиться на всякий мелкий инструментарий.
Почему его я покупал в магазине, а не заказал? А всё из-за распределительных коробочек — жемчужин (ракушек) данного устройства. Советую: если у вас нет возможности распечатать собственный корпус на 3D-принтере, то попробуйте походить по хозяйственным или строительным, пощупайте руками, какой кейсик будет лучше и удобнее сидеть. А потом можете его обработать.
Обработка корпуса
Задача была в том, чтобы выпилить: отверстие под экран, два под кнопки по бокам и вывод под порт Type-C (это вам не хухры-мухры).
Просто работаем ножичком и надфилями разных форм. Такими нехитрыми действиями можно превратить коробку в троллейбус. Естественно будет с косяками, но всё легко скрывается (не до конца) в дальнейшем белой изолентой.
И небольшое предостережение из-за сумбурной структуры текста: перед дизайном корпуса предварительно убедитесь, что всё изделие само по себе рабочее. Семь раз отрежь — один отмерь.
Вот принципиальная схема устройства (не ГОСТ, я не шарю):
Погромирование
Если бы я из будущего мог отправить себе сообщение в прошлое, то я бы написал: «Не используй Arduino IDE». Проблема в том, что, несмотря на простоту, она постоянно перед загрузкой перекомпилирует ВСЮ программу. Допустим, даже если у вас есть код строк на 250, к ней две библиотеки, то вы будете КРАЙНЕ недовольны каждый раз ждать перекомпиляции не то что при изменённой строчке, а при отсутствии изменений вовсе. Может, конечно, я глупенький и не нашёл, как это отключить, но тем не менее вина как минимум в неинтуитивном моменте программы.
Код пишется на Си-плас-плас (или Си-подобном языке, но разницы я не заметил). А ещё помните про такое малозаметное явление, как вайб-кодинг? Ну вот, это я применял. Си'шку я знаю, си'шку люблю, но халтурненько делать всегда приятно. При этом не похоже, что код может убить меня, да и ломаться в таком устройстве особо нечему. Поэтому доверились модельке (вроде тогда это был Gemini) — и вперёд! Всё это было в Perplexity, инфу он ищет качественно в интернете, а я ещё и методичку Гугла по промпт-инжирингу читал, поэтому назовусь «экспертом».
О самой программе
Устройство работает в трёх режимах: секундомер, часы и... внимание... СВОЙ 3D-ДВИЖОК! В стиле известной среди дедов игры Elite.
Ну вот, почему бы не добавить похожее? Секундомер — это банально, часы не сильно приукрасят ситуацию, а вот своя 3D-анимация — это то, чего не хватало всей индустрии. Вы вот только взгляните на это чудо:
Да, это просто скринсейвер, но зато какой! Каркасная графика, математические расчёты по аж ЧЕТЫРЁМ формулам! И ведь это не предел, в теории можно на ESP32 портировать весь ELITE.
Демонстрация трёх режимов
Процесс сборки
Осталось просто всё собрать в единое. Для этого паяем ножки к контроллеру, провода к ножкам, провода к проводам, не жалеем олова! Проматываем всё для надёжности изолентой и заталкиваем в корпус.
Дополнительно вырезаем из картонок фиксаторы, чтобы контроллер при подключении провода Type-C не проваливался внутрь. Сажаем всё на двухсторонний скотч, ещё добавляем изоленты и вуаля!
Всё, пользуйтесь на здоровье!
Заключение
Так нафига это всё? Смотрите, в процессе разработки этого аппарата вы сразу столько скиллов приобретаете: проектирование, поиск информации, программирование, пайка, разные подвиды дизайна! Ещё и возможностей для модернизации куча. Хотите — сделайте простенький сервер с сайтом-одностраничником. Хотите — сделайте консольку с эмуляторами.
Лично у меня в планах доработать эту штуку так: присобачим джойстик, модуль карты памяти и напишем нормальную прошивку, чтобы сделать свой Playdate. С блютузом можно добавить кооп. А сколько вдохновения можно ещё найти в подреддите Cyberdeck!
На этом всё, код программы оставлю тут (мой гитхаб пока слишком грязный):
Спасибо за чтение!