Заранее скажу, что все исходники лежат на Github. За точными техническими деталями — туда, а здесь скорее история и общие соображения.

Идея

После поездки на СтудЧР наша команда как-то вдруг заинтересовалась кнопочными играми по типу «Эрудит-квартета», «КИнСбФ» и простого свояка. Следовательно, был повод потренировать кнопочки, и как раз в это время я закончил слушать курс «Основы программирования микроконтроллеров» на физфаке. Звёзды сошлись идеально, чтобы попробовать сделать свою брейн-систему.

Первые прототипы

Разумеется, началось всё с заказа светодиодов, кнопок и китайского клона Arduino. Первый прототип явно не мог бы использоваться в реальной игре — кнопки игроков находились прямо на макетной плате, там же были светодиоды, резисторы, а заодно и кнопка ведущего. Но proof of concept был получен, и через какое-то время данная схема почти в неизменном виде обросла корпусом и нормальными кнопками.

Скорее макет, чем система
Скорее макет, чем система

В корпусе от умершего модема, купленного на Авито за 200 рублей, все разъёмы держались на толстом слое клея, подпорках из пластиковых карт и желании похвастаться перед командой. У ведущего была всего одна кнопка, которая использовалась и для сброса системы, и для подачи сигнала «можно» игрокам. Наличие фальстартов переключалось маленьким слайдером, приклеенным к корпусу. Функции отсчёта времени и какого-то переключения между режимами не было.

А вот кнопки сразу вышли неплохо — для них почти идеально подошли корпуса от TV-розеток, купленных в Ашане по 39 рублей за штуку. Видимо, даже сам Ашан был в шоке, потому что на сайте этих розеток не нашлось. Нужно только рассверлить отверстие в крышке под размер вот этой китайской кнопки и провести кабель с двумя жилами — кнопка будет замыкать один из пинов Arduino на землю.

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

Кустарные методы

Первые успехи настолько меня ободрили, что показалось возможным сделать в таком же корпусе из-под модема гораздо более сложную систему — уже на восемь игроков, с отдельным пультом ведущего и дисплеем. Там же я упоролся в модульность и планировал подключать к системе две отдельные лампы через разъём RJ-45.

Восемь кнопок игроков, восемь светодиодов, сиреневые лампы «можно», две-три кнопки ведущего и экранчик — это уже сильно больше пинов, чем есть на китайской копии Arduino Nano. А что нужно сделать, если микроконтроллер за сто рублей не справляется с вашей задачей? Правильно, купить ещё один такой же.

LGT8F328P общались между собой через линии TX/RX; одна из них контролировала экранчик, менюшку, лампочки и пульт ведущего, а другая целиком посвятила себя считыванию сигналов с кнопок игроков. Ну и светодиодики для фальстартов на себя взяла. И динамик из старых наушников.

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

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

Пульт ведущего

Пульт ведущего был сделан из интернет-розетки — во-первых, это какой-никакой корпус, а во-вторых, там есть разъём RJ-45, который надёжно закреплён и никуда не денется, в отличие от разъёмов на моих первых поделках. Туда же пошли три кнопки от старой клавиатуры, маленький OLED-дисплей 128*64 и светодиодик, дублирующий сигнал «можно», который подаётся игрокам.

Земля, ещё три линии на дисплей, три контакта от кнопок и светодиод — итого как раз восемь проводочков, плотно упакованных в патч-корд. Жаль только, что для крепления дисплея мне до сих пор не пришло в голову ничего умнее, чем закрепить его на двусторонний скотч, который идёт в комплекте с розеткой. Если бы не это, пульт был бы даже в какой-то мере красивым… снаружи. Внутри ужасный клубок проводов, который я боюсь лишний раз открывать.

Принятие

Чтобы вся система не была похожа на такой же клубок, решил спроектировать и заказать печатную плату. Использовал EasyEDA и китайский магазин на Aliexpress. Они делают партиями по 5 штук, отсюда и родилась идея сделать систему не только для себя. Минимальный размер платы — 100*100 мм. Можно сделать меньше, но стоимость заказа не изменится. В этот размер легко вписались всё те же два микроконтроллера, восемь джеков под кнопки, круглый разъём под питание и динамик. Пульт ведущего всё так же подключался через RJ-45 и никак не изменился.

Лампы игроков и тем более лампы для сигнала «можно» должны быть хорошо видны всем, поэтому я поместил их на верхней крышке корпуса. К ним же сделал диффузоры из линеек. Линейки прекрасно режутся ножом для оргстекла, обрабатываются насадкой с металлическими волосами и получается довольно красивый рассеивающий материал. Пробовал вместо них профиль для светодиодов — совсем не то.

Для самих ламп использовал светодиоды из подсветки старой клавиатуры. Они маленькие и довольно яркие. Докинул к ним резисторов и готово. В квадрат 100*100 помещается пять таких ламп. Значит, в одном заказе будет 25 штук. Есть у меня идея, что сделать с избытком, но это как-нибудь потом.

Незамысловатый корпус был, конечно же, напечатан на 3D-принтере. Верхняя часть — это коробка без дна с отверстиями под все необходимые разъёмы. В верхней части есть пазы для ламп и отверстия для их подключения. Лампы туда можно просто приклеить. На дно коробки встаёт основная плата, после чего дно можно прикрутить к верхней части винтами М3. А можно и не прикручивать, оно в принципе и так держится.

Сами кнопки претерпели минимальные изменения: в них вместо дырки под провод был вставлен вот такой разъём «мама» под 3.5 мм jaсk. В разъёме три пина: земля, контакт кнопки и… почему бы не вставить светодиод? Тут я, впрочем, ошибся и провёл к плате не те контакты — получилось, что кнопка замыкает сразу два, и светодиод повесить уже не на что. В будущих версиях исправлю, а сейчас, если очень захочется светодиод, можно использовать четырёхпиновый коннектор и немного лишних проводов.

Код

Всё это счастье работало и весело светило лампочками, но ему ещё предстояло научиться играть в свояк. Менюшка почти без изменений перекочевала с кустарного прототипа, а вот логику игры пришлось переписать. Точный отсчёт времени и отслеживание нажатий ведутся на “Slave” микроконтроллере, а “Master”, на котором висит пульт ведущего, отвечает за менюшку и командует: включи фальстарты! Добавь 20 секунд времени! Не пищать!

Оказалось также, что у всех подвидов свояка очень похожая логика, и с ними справляется одна и та же функция, если правильно менять параметры. Соответственно, у системы три режима: КВРМ — просто таймер для популярной игры из трёх слов, ЭК — покрывает все известные мне виды «своей игры» и КИнС — для игры из двух слов, пишущихся через дефис.

Итоговый результат

Система с высоты ласточкиного полёта
Система с высоты ласточкиного полёта

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

Надеюсь, что система будет полезна мне (на тренировках команды), в МГУшном клубе (а почему нет?), и возможно, кто-то ещё захочет себе такую же.

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

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

Комментарии (5)


  1. al_shayda
    20.10.2025 15:00

    А вот кнопки на 3D-принтере. Вроде как можно замахнуться на эргономичные кнопки (герконы с магнитами).


    1. Moog_Prodigy
      20.10.2025 15:00

      На 3д принтере можно и из обычных китайских кнопок сделать конфетку. Это доп, механика которая в виде пружинки и рычага для щелчка. Видел такое на thingverse, но там походу на фотополимернике такое надо делать, fdm не возьмет, нанометры не те.


      1. al_shayda
        20.10.2025 15:00

        keycaps наверное. берешь кит. кнопку покупаешь и делаешь keycaps к ней.
        но вообще-то 3d printer и современные силиконовые смазки позволяют и кнопки сделать. и герконы они вообще-то лучше (долговечнее) чем обычные контакты.
        пружинка вот только там. из бронзы. немагнитной. хз где их взять, разве что самому пружинки из бронзы научится термообрабатывать. ну не знаю.
        магнит там кольцевой. геркон установлен вертикально. усилие нажатия 30 грамм.


        1. theult
          20.10.2025 15:00

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


        1. Moog_Prodigy
          20.10.2025 15:00

          Не ну вот пружинки на 3д принтере тема как раз рабочая. Конечно, с оговорками, я вот делал пружины - амортизаторы под мелко-вибростенд. PETG, вполне работают. Только по конструкции получились как рессоры у авто. Их можно сделать прям мягонькими-мягонькими, буквально за десяток тычков мышкой в каде. Распечатывал модель часов с какого-то сайта, там стандартный часовой механизм с балансиром (часы с гирями вместо силовой пружины), пружинка, эта тонюсенькая спиралька вполне себе работает и по износостойкости вроде бы нормально, если нигде не трется сама об себя.