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

В качестве корпуса для тагера было решено использовать готовый комплект для интеграции «LSD RAVEN», в комплект входит сам корпус, излучатель с линзой, кнопка перезарядки, замок включения и спусковой крючок с микриком. Это оказалось выгоднее, чем печать корпуса на 3D-принтере и покупка излучателя.

В роли платы управления использовал Arduino Nano, для удобства её монтажа в корпусе и пайки разработал в EasyEDA печатную плату, также сделал платы для датчиков головной повязки.

Комплектующие:

Тагер

Повязка

Arduino Nano

ИК-приёмник TL1838 - 6 шт.

Усилитель звука PAM8403

Светодиод индикации попадания - 6 шт.

Buzzer

Вибромотор

Дисплей OLED 128x64

ИК-светодиод TSAL6100

Светодиод подсветки выстрела

Вибромотор

Микропереключатель

Кнопка без фиксации - 2 шт.

Ключ-выключатель

Батарейный отсек 4xAAA

Схема подключения

Собрал всё на макетной плате для отладки, набросал скетч и при компиляции столкнулся с проблемой:

libraries\IRremote-2.0.1\IRremote.cpp.o (symbol from plugin): In function `MATCH(int, int)':
(.text+0x0): multiple definition of `__vector_7'
sketch\PlaySound.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Arduino Nano.

Дело в том, что PlaySound и IRremote используют один и тот же аппаратный таймер, поэтому не могут работать вместе. Для решения этой проблемы нужно в библиотеке IRremote, в файле IRremoteInt.h, в блоке для Nano раскомментить IR_USE_TIMER1 и закомментить IR_USE_TIMER2.

// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
#else
	#define IR_USE_TIMER1   // tx = pin 9
	//#define IR_USE_TIMER2     // tx = pin 3

#endif

Также не всё было гладко с комплектным излучателем:

Я его разделил - отдельно плата подсветки выстрела и плата с ИК-диодом + заменил ИК-диод.

После отладки собрал всё в корпусе и спаял. Головную повязку сшил из эластичной ленты, закрепил на ней датчики. В качестве корпусов для датчиков использовал какие-то капсулы от игрушек, нашёл у детей :)

Принцип игры прост, включаем тагер, на старте у нас 9 жизней, 20 патронов в магазине и 5 магазинов. Бегаем, стреляем :) Доступно два режима стрельбы: одиночный - однократное нажатие на спусковой крючок и очередь - удержание спускового крючка. Выстрел сопровождается характерным звуком + подсветкой + вибрацией в рукоятке. Если патроны закончились, нажимаем перезарядку, если кончились и патроны и магазины - засчитывается поражение (смерть), наступает небольшая пауза и игра возобновляется. Перезарядка, осечка (когда нет патронов) и смерть также сопровождаются звуками. Попадания фиксируются датчиками повязки и сопровождаются характерным звуком + вибрацией и зажиганием светодиодов + убавляются жизни, если жизни закончились - засчитывается смерть. Ещё на тагере, сверху, есть кнопка выбора команды (за красных / за зелёных) - это на будущее, для каждой команды можно прописать свои коды выстрела, тем самым исключить огонь по своим и т.п. Сейчас в прошивке используются коды обеих команд, т.к. мы играем втроём и каждый сам за себя. Если удерживать кнопку выбора команды - будет показана статистика: кол-во выстрелов и смертей, статистика сбрасывается при выключении тагера. Также в скетче, на будущее, заложено пополнение боекомплекта и аптечка. Вот такой лазертаг у меня получился, дети в восторге :)

Дополнительные фото

Ссылка на скетч и библиотеки

P.S. Скетч конечно сыроват и требует доработки по части многозадачности, в момент выстрела не фиксируются попадания и наоборот, в связи с этим прошу не кидаться помидорами в комментах. Если у кого-то есть идеи и желание, пишите в личку, буду рад помощи.

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


  1. terraplane
    29.09.2022 22:24
    +9

    На тазерах интереснее игра проходит, увлекает до дрожи!


    1. DAN_SEA
      30.09.2022 14:05

      Хардбол лучче (это когда 2 команды перестреливаются из тировых воздушек О_о) . "Это тебе не пейнтбол" ©

      P.S. сам был в шоке, когда первый раз увидел. Полностью в плотной одежде, щитках строительных на лице. Средняя дистанция между командами - метров 80-90.


      1. Linder666
        30.09.2022 15:44

        Таки тазеры правдивее, там не скрыть попадание тихим "ай, <censored>!" и продолжением стрельбы(в стракболе таких называют маклаудами), а с тазером, если попал, хочешь не хочешь ничего не сделаешь))


        1. AndreyHenneberg
          01.10.2022 10:55

          А какой смысл идти/ехать на игру, если собираешься нарушать правила?


          1. daggert
            01.10.2022 11:12

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


            1. AndreyHenneberg
              01.10.2022 16:03

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


            1. wAgo
              02.10.2022 00:34

              В хардболе присутствует весьма громкий хлопок от попадания. Но есть один боОольшой недостаток, когда шарик попадает под кожу и самостоятельно его вынуть не получается, в травмпункте придётся выдумывать историю что это "самострел" каким-то невероятным образом получился именно в спину, а потом ещё и дяде милиционеру это обИснять ))) Картинок постить не буду ;)


      1. xl0e
        01.10.2022 13:48

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


  1. ArchimeD
    29.09.2022 23:24
    +4

    Простите за душнилово не по теме, но нажимают не на курок, а на спусковой крючок :) Курок спускают.


    1. alexbus84 Автор
      30.09.2022 00:24
      +1

      Поправил, спасибо!


  1. ZERGeich
    30.09.2022 11:06
    +2

    Чтобы батарейки сменить - раскручивать тайзер?

    На сколько их при активной игре хватает с таким набором?

    Ну, и насколько раскручиваний хватит тайзера?


  1. SantaCluster
    02.10.2022 07:44

    пофиг, что сырое. зато столько всего сделал сам и - получилось!

    успехов в дальнейшей доработке


  1. es1046
    02.10.2022 14:19

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

    Поищите команду. Например лазгард