Беспроводные кнопки для викторин типа «Брейн-ринг» на микроконтроллере Arduino Nano: от идеи до реализации

Задачу мне поставил знакомый шоумен, проводящий разного рода викторины. В качестве исходника он мне предоставил созданный некими умельцами прототип с кнопками на проводах и щелкающими внутри реле. Был он огромным и тяжелым.

Мелькнувшая было мысль о том, что надо приобрести три комплекта радиоуправления для моделек и просто заменить провода тремя каналами радиосвязи на 27 или 433 МГц, была быстро забракована: чем модифицировать этого древнего монстра, лучше было просто создать всё с нуля, чем я и занялся.

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

Исходный проект был взят отсюда: https://github.com/don41382/arduino-nrf24l01-buzzer

Заказал с Алиэкспресс необходимые детали: платы Arduino Nano и радиомодули nRF24L01 с платами питания. Получив посылку, подключил один контроллер к компьютеру, установил среду разработки, залил прошивку из примера, которая мигает встроенным светодиодиком, и на время успокоился.

Но мигания мало, надо было браться за дело!

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

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

 В общем, коробочки получились красивые, дело было за малым – изготовить электронную начинку.

Первая версия кнопок была собрана на картонках и термоклее и выглядела вот так:

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

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

Алгоритм работы беспроводных кнопок

Кому интересен принцип работы кнопок, кратко описываю алгоритм.

  1. Кнопки инициализируют радиоканал и слушают эфир.
  2. Если кнопка нажата, она переключается на передачу и посылает в эфир свой номер, после чего опять начинает слушать эфир.
  3. Главная кнопка запоминает номер кнопки, пришедший ей первым, и начинает транслировать его в эфир. Либо транслирует свой номер, если она была нажата первой.
  4. Теперь все кнопки получили номер победителя.
  5. Каждая кнопка сравнивает этот номер со своим. Если они совпали – это победа, включается зеленый свет. Если нет – проигрыш, включается красный свет.

Компоновка и сборка беспроводных кнопок

Теперь дело за малым: разместить все детали внутри коробочки и соединить (не забыв просверлить дырочки под разъемы и выключатели).

Чтобы не париться с батарейками запитал каждую кнопку от аккумулятора 18650 с платой для PowerBank. Учитывая очень малое энергопотребление, возможно, не стоило с этим заморачиваться. От одних новых алкалиновых батареек эти кнопки могли бы проработать сотни часов. И лишнее отверстие под зарядку от micro-USB не пришлось бы сверлить.

Осталось только закрыть

Беспроводные кнопки: результат

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

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

Видео работы беспроводных кнопок (способ сброса может быть настроен, например, с главной кнопки)