Кнопка брейн ринг своими руками

Полезности: Брэйн-система своими руками

от Дмитрия Смирнова (Зеленоград)

Предисловие

Брейн систему наш клуб хотел купить уже тогда, когда я только пришёл в ЧГК, а было это в далёком 1998 году. Но, видно, какое-то ужасное древнее проклятье, проклятье вселенского рпасзидйяства, висело над нашим клубом. За 8 лет мы так и не купили «кнопку». И вот, в один прекрасный момент я понял, что раз купить кнопку нам не суждено, её надо сделать. А так как денег у нас нет, то сделать её надо очень дешёвой. Свободного времени у меня весьма немного, поэтому я решил реализовать всю логику работы системы в виде программы. Это значительно ускорило разработку и удешевило систему (при условии наличия компьютера).

Описание

Система состоит из программы, и простенького устройства, подключаемого к компьютеру к порту PS/2 вместо клавиатуры. Может обслуживать до 4-х кнопок и работать в режимах «Брейн-ринг» и «Своя игра». Программа написана на MSVС++ и распространяется вместе с исходными кодами, при желании Вы можете её дорабатывать.

Запчасти

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

Старая клавиатура (подойдёт даже самая дешёвая за 100 рублей) с разъёмом PS/2

20 метров медного двужильного кабеля

4 кнопки для звонка

4 штекера «тюльпан»

Разъёмы для подключения этих штекеров

Небольшая пластиковая или металлическая коробочка (я использовал коробку из под чая

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

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

Нащупываем контакты для кнопок

Обратите внимание на ряд контактов. Именно они-то нам и понадобятся. Всё что нам нужно, это найти 4 комбинации контактов соответствующие 4 буквам/цифрам. Для того чтобы их найти возьмите кусочек провода длиной около 20 см., подключите провод идущий от платы вместо вашей клавиатуры к компьютеру, откройте текстовый редактор и, соединяя различные контакты на плате, смотрите что будет печататься. Желательно найти такое сочетание, чтоб один контакт для всех комбинаций был общим (так будет меньше возни с паяльником). Найденные контакты припаяйте к разъёмам.

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

Подключение и настройка программы

В общем я старался сделать прогу как можно более простой в управлении. Тем не менее хочу дать несколько комментариев к программе.

Программа может работать в двух режимах: «Брейн-ринг» и «Своя игра»

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

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

Если что-то непонятно, присылайте Ваши вопросы автору программы Дмитрию Смирнову.

Источник

Контроллер кнопок для игры Brain Ring v2.0

Это не первая моя статья про контроллер кнопок для игры Brain Ring (менее известное название «Свояк», но правила там немного отличаются — в Brain Ring можно уходить в «минуса» за неправильный ответ). В предыдущем варианте контроллер кнопок был выполнен на платформе Arduino, этот же вариант использует в качестве главного элемента схемы микроконтроллер компании Microchip — PIC12F683. Данный выбор обусловлен не только стоимостью ATmega8 (о стоимости всей платы Arduino я молчу), но и размерами корпусов этих МК. У меня в распоряжении на момент разработки уст-ва был корпус типа «Малышка». Из-за его небольших размеров пришлось вынести преобразователь USB-UART за пределы корпуса. Вот что в итоге вышло:

Итак, начнем по порядку.

1. Предназначение

Это устройство (как я уже писал выше) предназначено для проведения командных игр «Brain Ring». Но с его помощью можно так же проводить и «Свояк». Различия в правилах игр незначительные — в «Brain Ring» за неправильный ответ игрок получает «-«, а в «Свояке» не получает ничего. Так как устройство работает в паре с ПК, то в программе для последнего я реализовал поддержку обоих систем.

Читайте также:  Построить сарай для гусей своими руками

2. Принципиальная схема и печатная плата

Принципиальная (электрическая) схема устройства достаточно проста. Так как микроконтроллер работает от встроенного генератора, то кварцевый резонатор и обвязка для него не потребовались, что позволило упростить и схему и плату. Всего в схеме используется 13 деталей (без учета деталей преобразователя USB-UART, так как вместо него можно взять обычный телефонный шнурок на CP2303). Ниже представлена принципиальная схема устройства:

*Элемент P1 использовался мной для отладки схемы в Proteus, и в реальной схеме его нет. Но в реальной схеме на его месте стоит преобразователь USB-UART.

Печатная плата для сего девайса получалась так же достаточно простенькой:

3. О работе схемы

Как вы видите схема питается от USB. Это одна из причин,по которым я не захотел использовать преобразователь TTL-RS232. Ведь в таком случае пришлось бы использовать внешнее питание. Ну вторая причина общеизвестна — в современной компьютерной технике COM порт очень нечастый гость, тем более на ноутбуках.

Для подключения кнопок я использовал пины микроконтроллера GPIO0-GPIO2. Решив, что отслеживать нажатия по высокому уровню на входах будет удобнее (наверное последствия работы с советской логикой :)), подтянул эти выводы к земле, через резисторы порядка 1кОм.

Для связи с ПК, как уже упоминалось, используется UART. Но так как в данном микроконтроллере «железно» реализованного интерфейса нет, то пришлось использовать программный. Функциональность у программного UART значительно ниже, но для поставленных задач он вполне годится. Вход «reset» микроконтроллера я отключать не стал (я чаще работаю с микроконтроллерами фирмы Atmel , а там это табу!), хотя в данном случае от него толку «0»

4. Прошивка МК

Прошивка для МК была написана в среде mikroPascal.

Как уже упоминалось, МК тактируется от внутреннего генератора на 4МГц, а для связи используется программный UART.

Т еперь собственно о прошивке. Вот ее исходный код:

Первым делом в программе отключаем компаратор и АЦП, далее записываем в регистр GPIO «0» и инициализируем софтверный UART. После этих действий запускаем бесконечный цикл.

Собственно в этом цикле и происходит постоянный опрос кнопок.

Например, нажата кнопка 1. На входе GPIO0 устанавливается высокий уровень, и программа определив это переходит к выполнению заданных действий : отсылает по UART номер нажатой кнопки (в данном случае «1»), и проверяет, нажата ли еще эта кнопка, если да — возвращается на метку «a» и далее по кругу. Как только кнопку отпускают, программа снова начинает проверку состояния остальных кнопок.

Задержки при опросе кнопок я использовал для «отсеивания» дребезга контактов.

Вот так нужно выставить конфигурационные биты (WinPic800)

5. Программа для ПК

Эту программу я писал в среде Embarcadero Delphi XE3.

Главное (и единственное) окно программы:

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

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

7. Замена деталей

На схеме деталей очень мало, но кое-что можно заменить. Так, микроконтроллер можно заменить на PIC12F609, но нужно будет убрать строчку отключения АЦП, так как его в нем нет. Без изменения кода, можно взять МК PIC12F510 (никогда его не видел).

Резисторы выступают в роли подтяжке к «земле», по этому можно взять от 1 кОм до 10 кОм.

Конденсатор можно не ставить, он стоит «на всякий пожарный». Но как показывает практика схема неплохо работает и без него.

8. USB-UART

В своей схеме я использовал преобразователь USB-UART на FT232RL. Сразу скажу — те, кто не уверен, что сможете запаять эту микросхему, не беритесь. При всей своей функциональности она очень не любит перегрев, и даже просто перепутав выводы UART можно вывести ее из строя (именно таким способом я и отправил уже 2 микросхемы на свалку:( ).

Преобразователь я собирал с этой печаткой:

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

Но, как уже упоминал, если у вас есть старый шнурок от NOKIA или что-то похожее, с преобразователем USB-UART внутри (обычно ставят PL2303), можно попытаться использовать его. Но, у меня такое китайское творение нашлось, и я попытался через него подключиться к пк. Эксперимент не удался. Пакеты если и приходили, то не считывались в терминале, пришлось ваять вышеуказанный преобразователь.

Читайте также:  Куклы марионетки своими руками для детского

Детали для преобразователя я не включил в список элементов, так как это общеизвестная схема включения из даташита. По той же причине не стал рассматривать схему преобразователя.

И в заключение, фото устройства:

За качество видео не бейте, я вообще удивлен что китайская вебка может что-то записать. Если что, видео с экрана писал AVS Video Editor, а с камеры — VirtualDub.

Источник

Вступление

Для проведения игр по правилам «Брейн-ринг», разработал и собрал электронную систему.

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

Общее описание системы

Система состоит из нескольких блоков:

  • блок управления («пульт»);
  • блок индикации таймера;
  • блоки кнопок команд (4 штуки);
  • соединительные кабеля;
  • блок питания от сети.

Количество команд может быть от 2 до 4. Ненужные блоки кнопок просто не учитываются.

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

Коротко о каждом блоке

Блок управления («пульт»)

Пульт работает на микроконтроллере Atmega8A.

Он состоит из двух плат – основной и платы управления.

Конструктивно пульт собран в корпусе KRADEX Z20.

Основная плата

Схема простая, состоит из самого МК с обвязкой и сдвигового регистра 74HC595 для десериализации световой индикации.

Диод 1N5819 защищает от переполюсовки питания. Транзистор BC547 усиливает звуковые сигналы, которые выводятся на 0.5Вт динамик (правда, оказалось, что звук достаточно слабый, поэтому для больших игр звук выводился на большие колонки).

Плата управления

Здесь – просто кнопки.

Световая индикация

Через регистр 74HC595 на пульт и на кнопочные блоки команд посредством красного и зеленого светодиодов выводится состояние команд во время игры. На лицевой панели пульта расположены 4 пары светодиодов, на каждом кнопочном пульте команд – по 2 светодиода.

Блок таймера

Состоит из платы и 4-х 1.5-дюймовых семисегментных индикаторов FYS-15011 BS-21 с общим анодом, по 2 на каждую сторону.

В схеме использовано 2 регистра 74HC595 включенных каскадом.

Блок таймера соединяется с основным блоком посредством 5-проводников старого RS232 кабеля.

Блоки кнопок команд

На столе каждой команды ставится блок с кнопкой и 2-мя светодиодами, красным и зеленым.

Блок питания

БП – обычный китайский импульсный на 5В 2А.

Коротко об изготовлении

Печатные платы

Схемы блоков разработаны в бесплатной версии Eagle CAD. Трассировку печатных плат производил в TopoR Lite 5.2. Изображения плат были «распечатаны» в PDF, затем импортированы в Inkscape, а из последнего экспортированы в зеркальном и негативном виде в формат PNG. Шаблоны печатал из программы XnView в масштабе 100% на струйном принтере на пленку для струйной печати. На текстолит наклеивал негативный пленочный фоторезист, который засвечивал УФ КЛЛ 26 Вт около 10 минут (подбирал тестовыми засветками) с расстояния 30 см. Днем мне больше понравилось экспонировать – засветка солнечным светом нужна всего около 10 секунд!

После засветки проявлял фоторезист в воде с небольшим количеством стирального порошка. Затем сразу же кидал в хлорное железо.

Шаблоны печатных плат и монтажные схемы

Главная плата
Плата управления
Плата индикатора таймера
Плата кнопки команды

Корпуса

Для пульта выбрал корпус Z20. Главную плату прикрутил винтами к основанию. Плату с кнопками – к верхней части на стойках. Кнопки для пульта взял с удлиненными толкателями.

Два ряда светодиодов установил в просверленные отверстия и посадил на клей.

Пропилил куском ножовки пазы для гнезд 6p4c.

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

Корпуса кнопочных блоков сделаны из телефонной розетки с гнездом 6p4c. В качестве толкателя кнопки использован 10 мм светодиод.

Каждый такой блок подсоединен к пульту стандартным 4-х жильным телефонным кабелем длинной порядка 7-10 метров. При этом удобно использовать цвета жил соответственно подключаемым светодиодам. В ходе проведения игр в разных условиях не было замечено влияния их длины на работу системы.

Все соединения в устройстве сделаны из старого 40-жильного шлейфа IDE.

Программная часть (прошивка)

Прошивка системы была написана на C в IDE Code::Blocks. Так как я не имею большого опыта в программировании МК, прошу не слишком строго судить мой код. Некоторые части и идеи были подсмотрены на разных сайтах посвященных AVR.

Читайте также:  Крытый навес своими руками

Небольшое разъяснение кода прошивки

В блоке инициализации определяются несколько констант.

Строка 399 и далее:

const uint8_t round_time=61; – время одного раунда +1 секунда вначале для фиксации фальстарта.

uint32_t TI_SOUNDS_period = 500; – длина «бипа» в мс.

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

Нулевой таймер TCNT0 работает с периодом 1 мс, и на основе него сделаны несколько программных таймеров для антидребезга, индикации и проигрывания звуков.

Второй аппаратный таймер TCNT2 используется для генерирования звуков разной высоты. Период его срабатывания, кроме значений его регистра, определяется начальным состоянием его счетчика из массива Bip_notes. Таким образом создаются звуки разной высоты.

Вся программа работает в цикле while (1): сначала идет опрос регистра ввода, затем, в зависимости от ввода и текущего состояния, производятся соответствующие действия, дальше идет блок индикации и, в конце – блоки программных таймеров.

Прошивка МК и фьюзы

Так как большая точность мне не нужна была, то я обошелся без кварца и прошил МК на внутренний генератор 8МГц установив следующие fuse:

avrdude -p atmega8 -c avrisp -e -vv -P COM5 -b19200 -U lfuse:w:0xE4:m

При установке кварца, нужно поменять константу F_CPU в начале main.c соответственно его частоте.

Скомпилированная прошивка 01.hex находится в папке bin/Release

МК я прошивал с помощью avrdude используя Arduino как avrisp предварительно залив в него соответствующий скетч:

avrdude -p atmega8 -c avrisp -e -vv -P COM5 -b19200 -U flash:w:binRelease01.hex

Подсмотреть, как использовать Arduino как программатор для AVR здесь:

Инструкция по использованию системы

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

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

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

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

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

Пример игры

На пульте имеются 4 кнопки:

Первый раунд

1. Ведущий читает вопрос потом говорит: «Время!»

2. Одновременно или через пару секунд оператор нажимает кнопку «Новый раунд». При этом гаснут все светодиоды, система может принимать нажатия кнопок команд, счетчик таймера начинает отсчитывать секунды.

Если во время первой секунды какая-то команда нажала свою кнопку, происходит событие «Фальстарт» – звучит сигнал и для этой команды загорается красный светодиод. Система приостанавливается. Команда объявляется выбывшей из текущего раунда. Снова звучит «Время!» и оператор нажимает кнопку «Продолжить раунд» продолжается отсчет времени.

Если же кнопка командой была нажата после времени фиксации фальстарта, то для этой команды загорается зеленый светодиод, для остальных команд – красный. Система приостанавливается. Оператор должен нажать кнопку «Ответ».

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

3. Команда отвечает на вопрос:

  • ответ правильный – объявляется конец раунда, команде начисляются очки;
  • ответ неверный – команда объявляется выбывшей из текущего раунда, звучит «Время!» оператор нажимает «Продолжить раунд» продолжается отсчет времени.

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

Следующий раунд.

1а. Ведущий произносит новый вопрос и говорит «Время».

2а. Оператор нажимает «Новый раунд». Все повторяется.

Пауза. Во время отсчета времени можно нажать «Пауза», чтобы приостановить его.

Когда до конца отсчета остается 5 секунд, звучат звуковые сигналы.

Реальное использование

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

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

Скачать файлы проекта

Если есть желающие усовершенствовать – милости просим – все исходники проекта я предоставляю свободно. Код прошивки выложен на bitbucket.org: https://bitbucket.org/onivan/brags

Там же можно скачать шаблоны печатных плат и другие файлы.

Источник

Оцените статью
Своими руками