0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Arduino лазертаг

Arduino лазертаг

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

Эта статья рассказывает о том, как сделать своё оружие для лазертага на основе стандартного светового пистолета. От них используется только оптика и корпус. Если его у вас нет, вы можете создать его с нуля. В этой статье код описан не очень подробно, но он полностью рабочий (исходники прилагаются). Есть много вариантов улучшения этой конструкции.

ИК-передатчик

ИК-передатчик состоит из транзисторного усилителя, мощного ИК-светодиода и линзы, которая служит для создания направленного ИК-луча. Используется для посылания сигнала попадании на датчики других игроков. Передатчик усиливает сигнал с Arduino и передает его с помощью ИК-светодиода через линзу.

Звук
Для воспроизведения звука с мини-диктофона используется пьеза излучатель. Разнообразные звуковые эффекты сообщают о поражении противника, окончании патронов, смерти.

Приемник
Для приёма ИК сигнала используется стандартный ИК-приемник.
Один датчик крепится на пистолет и два на голову.

Визуальные эффекты
Для индикации игровой информации используется линейка светодиодов.

Вам понадобится:
Arduino
Световой пистолет
Цветные светодиоды
ИК-датчики
ИК-светодиоды соответствующие ИК-датчикам.
Обычные или MOSFET транзисторы
Мини диктофон для записи звуков
Другие мелкие детали

Модификация светового пистолета

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

В пистоле необходимо оставить кнопки, светодиоды и линзу. Я постарался установить Arduino внутри пистолета так, чтобы его было легко извлечь для других проектов. Arduino установлен внутри дополнительного отделения, сделанного из пластика в виде магазина.

ИК-передатчик

Вам понадобятся мощные ИК-светодиоды с диапазоном соответствующим вашему датчику.
Вы можете просто подключить ИК светодиод к Arduino, но при этом дальность работы будет очень низкой. Для того чтобы её увеличить, используйте усилитель. Я сделал его на обычном транзисторе, но вы можете использовать MOSFET.
Ток через светодиод: я подавал на ИК светодиод 300мА. Это больше, чем его номинальный ток, но он это выдерживает, т.к. горит не постоянно.
Необходимо использовать линзы для фокусировки ИК-луча. Вы можете использовать линзы от светового пистолета.

Приемник

Приемники используются для определения попадания в персонажа. Используйте приёмник соответствующий вашим ИК диодам. Большинство ИК-приемников работают похожим образом, и вы сможете подключить их как и я. Когда сигнал принимается, напряжение понижается.
Приемники могут быть подключен непосредственно к Arduino, но они гораздо более надежны при использовании конденсаторов для гашения помех и подтягивающих резисторов.

Звуковые эффекты

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

Визуальные эффекты

Для индикации жизней и патронов можно использовать светодиоды или ЖК дисплей.
Я использую светодиоды подключенные к ШИМ выводам Arduino. Также для этих целей могут быть использованы специализированные микросхемы.

Программа

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

Лазерный пистолет с фокусировкой двух лазеров

Идея сделать лазерную пушку, которая наводит два луча в одну точку, появилась у меня после игры Fallout: New Vegas. Прототипом моего лазерного пистолета послужило уникальное оружие «Алгоритм Эвклида», которое наносит удар с орбитальной станции. Параллели между лазерной пушкой с двумя лучами и орбитальной станцией простые: у меня завалялось два лазерных модуля, а картинка прицела «Алгоритма Эвклида» подала мне идею сфокусировать два лазерных луча в одну точку, чтобы получить большую мощностью.

Немного пафоса

опциями, как, например, озвучка стрельбы, отображение треугольника, как у «Алгоритма Эвклида» из игры, и чтобы он менялся в зависимости от дальности фокусировки двух лазеров, а также всякие мелочи вроде мониторинга напряжения питания и т.д. В итоге получилось то, что можно увидеть на фото и видео:

Основная часть

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

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

Ультразвуковой измеритель расстояния работает достаточно просто, главное — запустить его и измерить длину пришедшего импульса и затем по формуле преобразовать длину импульса в расстояние.

В моей схеме работа с датчиком была организована на микроконтроллере AVR с помощью внешнего прерывания.

Внимание! Весь код был написан на языке С в среде CVAVR 3.

Чтобы расстояние «не шумело», я решил применить к данным ультразвукового датчика медианный фильтр (код, приведенный ниже, был найден на просторах интернета). Дальше оставалось лишь получить нужный угол поворота сервопривода, который рассчитывался по алгоритму приведенному ниже под спойлером (код отличается от исходного, так как в оригинале еще есть учет настраиваемых «добавок» к длинам катетов треугольника).

Звук «пиу-пиу»

Конечно, реальный лазер не звучит, однако смотреться пушка будет куда эффектнее, если добавить звук и еще озвучку некоторых функций, поэтому я решил реализовать WAV-плеер внутри МК, подключив к нему flash-карту памяти на 4 Гб. Вывод звука осуществлялся через ШИМ, при этом сигнал ШИМ’а управлял транзистором, которой уже управлял током через динамик. Сами звуки я сделал в программе Fruity Loops 9 для создания музыки.

LCD Экран

Так как когда-то друг мне подарил LCD-экран LPH8731-3C, то именно его я и решил использовать. Вообще, это был мой первый опыт использования в своих проектах LCD-экрана. Вся информация по данному экрану и библиотека для работы с ним были найдены тут.

Питание

Так как сервопривод и микроконтроллер требовали питания 5 вольт, нужен был повышающий DC-DC, так как запитывать пушку я планировал от одного Li-Pol аккумулятора. DC-DC у меня уже были готовы (на микросхеме LM2621), когда-то зачем-то я их сделал в виде модулей, залитых в эпоксидную смолу:


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

Схема

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

Этот «тортик» умел проигрывать WAV, выводить данные на LCD, опрашивать ультразвуковой датчик расстояния, опрашивать напряжение на Li-Pol аккумуляторе, опрашивать кнопки, опрашивать потенциометр, управлять работой лазеров и управлять сервоприводом.

Корпус

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

«Кишки пушки»

В итоге

Все заработало: пушка стреляла, фокусировалась в точку при хорошей настройке параметров. Также я в нее добавил двоичный пароль при включении, настройки для всех параметров фокусировки и настройки режимов, которые сохраняются в ПЗУ микроконтроллера, а также график разряда батареи (на котором кстати было видно, как батарея проседает во время включения лазеров). Для лазеров я сделал также дополнительные два режима работы, когда работает один лазер, и когда работают два лазера с сохранением определенного расстояния между ними равное расстоянию между глазами противника на дистанции до цели.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector