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

Эффективные методы изготовления контроллера кнопок для игры Brain Ring v2.0. Узнайте о принципиальной схеме, печатной плате и прошивке МК.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

program BreinRing;

label a,b,c;

begin
CMCON0:=0x7;
ANSEL:=0x0;
GPIO:=0x0;
Soft_UART_Init(GPIO,4,5,2400,0);
While true do begin
if (Button(GPIO,0,100,1)) then begin
soft_uart_write(1);
a:
if (Button(GPIO,0,0,1)) then goto a;
end else
if (Button(GPIO,1,100,1)) then begin
soft_uart_write(2);
b:
if (Button(GPIO,1,0,1)) then goto b;
end else
if (Button(GPIO,2,100,1)) then begin
soft_uart_write(3);
c:
if (Button(GPIO,2,0,1)) then goto c;
end;
end;
end.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8. USB-UART

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

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

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

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

Вот что вышло:

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

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

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

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

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

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

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

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

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

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

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

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *