Оглавление:

Инфракрасный лазерный тег с Raspberry Pi Zero: 6 шагов (с изображениями)
Инфракрасный лазерный тег с Raspberry Pi Zero: 6 шагов (с изображениями)

Видео: Инфракрасный лазерный тег с Raspberry Pi Zero: 6 шагов (с изображениями)

Видео: Инфракрасный лазерный тег с Raspberry Pi Zero: 6 шагов (с изображениями)
Видео: Высокая плотность 2022 2024, Ноябрь
Anonim
Инфракрасный лазерный тег с Raspberry Pi Zero
Инфракрасный лазерный тег с Raspberry Pi Zero

В этом руководстве описан процесс создания игры с инфракрасной лазерной меткой с использованием базового серверного компьютера и нуля Raspberry Pi для каждого игрока. Проект в значительной степени полагается на соединение Wi-Fi для связи с сервером, что делает Pi отличным кандидатом.

Сервер, использованный в этом проекте, был старым настольным компьютером с Linux. В компьютере не должно быть ничего особенного, и, вероятно, его можно даже запустить с Raspberry Pi 3. Сервер и каждый из пи-нулей должны быть подключены к одной и той же сети во время игры.

Шаг 1: материалы

Материалы
Материалы
Материалы
Материалы

Описание и некоторые ссылки на необходимые материалы приведены ниже. Приведенный ниже список материалов рассчитан на 3 пистолета.

  • Серверный компьютер (1)
  • Raspberry Pi Zero W (3) Адафрут
  • SD-карта не менее 4 ГБ (3) Amazon
  • ИК-светодиодный передатчик (3)
  • ИК-приемник (6) Amazon
  • Красный светодиод (3)
  • Синий светодиод (3)
  • Зеленый светодиод (3)
  • Пассивный зуммер (3) Amazon
  • Кнопка (6)
  • ЖК-экран 16x2 с адаптером I2C (3) Amazon
  • Портативный аккумулятор (3) Amazon
  • Кабель Micro-Обычный USB (3) Amazon
  • PN2222 Транзистор (3)
  • Резистор 100 Ом (3)
  • Резистор 1кОм (9)

Дополнительные элементы:

  • Жилет (3) Amazon
  • Удлинитель ленточного кабеля (3) Amazon

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

Помимо перечисленных выше предметов, сами лазерные пистолеты были напечатаны на 3D-принтере. Поэтому для этого проекта также потребуется доступ к 3D-принтеру и нити. В целом за три ружья общая сумма составила около 350 долларов.

Шаг 2: Настройка сервера

Настройка сервера
Настройка сервера
Настройка сервера
Настройка сервера
Настройка сервера
Настройка сервера

Первое, что необходимо для настройки сервера, - это установить брокерскую службу Mosquitto MQTT. Mosquitto - это сервис, который обеспечивает основу для связи между каждым из устройств в игре. Это позволяет серверу отправлять сообщения каждому из PIS, подключенных к службе. В терминале выполните следующие команды.

sudo apt-get update

sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

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

pip3 установить pygubu

Более подробную информацию о pygubu можно найти на

После установки MQTT и Pygubu создайте новый каталог и скопируйте прикрепленные файлы. Каталог должен включать:

  • ltag.py
  • pregame.py
  • game_statistics.py
  • gvars.py
  • pygubu.ui
  • pygubu_limited.ui
  • home.png
  • self.png
  • враги.png
  • laser.jpg

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

Шаг 3: Настройка Raspberry Pi

Настройка Raspberry Pi
Настройка Raspberry Pi

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

1. Установите операционную систему

Во-первых, начните с новой установки Raspbian. Мы бы порекомендовали использовать версию Lite, так как Pi не может справиться с ней, но любая версия должна работать нормально. Загрузку можно найти по адресу

2. Установите MQTT

Далее нам нужно установить брокерскую службу MQTT. Для этого мы будем использовать Mosquitto. В терминале выполните следующие команды.

sudo apt-get update

sudo apt-get upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt

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

3. Установите I2C Tools

Следующая команда установит библиотеки, которые используются для ЖК-экрана.

sudo apt-get install -y python3-smbus i2c-tools

sudo apt-get install rpi.gpio -y

Возможно, потребуется изменить адрес i2c в файле lcddriver.py. Адрес можно найти, введя следующую команду.

i2cdetect -y 1

4. Установите и настройте LIRC

Создайте новый каталог и загрузите в него прикрепленные файлы.

Большинство интернет-браузеров не загружают файлы без расширений. Чтобы обойти это, два файла были загружены с временными расширениями. И "lircrc.deleteExtension", и "modules.deleteExtension" должны фактически быть без расширений, и файлы должны быть переименованы в "lircrc" и "modules" после их успешной загрузки.

На этом шаге устанавливаются и настраиваются зависимости для пакета Linux Infrared Remote Control (LIRC). Для получения дополнительной информации см. Руководство по настройке LIRC по адресу:

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

sudo apt-get install python3-lirc -y

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

sudo mv lircd.conf hardware.conf lircrc lirc_options.conf / etc / lirc /

модули sudo mv / etc /

Затем перезапустите службу lircd, запустив:

sudo /etc/init.d/lircd перезапуск

Затем отредактируйте файл /boot/config.txt и добавьте следующую строку

dtoverlay = lirc-rpi, gpio_in_pin = 18, gpio_out_pin = 25

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

перезагрузка sudo

5. Включите I2C и отредактируйте КЛИЕНТА для каждого игрока

Далее мы включим интерфейс I2C. Это можно сделать с помощью

sudo raspi-config

и включение I2C в меню «Параметры интерфейса».

6. Отредактируйте Player CLIENT и LTSERVER

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

  • i2c_lib.py
  • lcddriver.py
  • ltsounds.py
  • player.py

Последний шаг в настройке pi - присвоение каждому pi номера КЛИЕНТА и добавление местоположения сервера. Это делается путем редактирования включенного файла "player.py" для каждого числа пи так, чтобы все они имели разные номера КЛИЕНТА. Номер КЛИЕНТА назначается в строке 3 файла player.py. Присвойте первому пи клиенту «1», второму - «2», а третьему - клиенту «3».

Строку LTSERVER нужно изменить на IP-адрес сервера. Это можно найти, набрав ifconfig | grep "inet addr" 'в терминале серверного компьютера.

Шаг 4: Сборка пистолета

Пистолет в сборе
Пистолет в сборе
Пистолет в сборе
Пистолет в сборе

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

Каждое из периферийных устройств подключено к следующим контактам GPIO на Pi Zero:

  • Зуммер: GPIO5
  • Триггер: GPIO26
  • Перезагрузка: GPIO12
  • ИК-передатчик: GPIO25
  • ИК-приемники: GPIO18
  • КРАСНЫЙ СВЕТОДИОД: GPIO17
  • ЗЕЛЕНЫЙ СВЕТОДИОД: GPIO27
  • СИНИЙ светодиод: GPIO22
  • I2C_SDA: GPIO2
  • I2C_SCL: GPIO3

См. Схему для более подробной информации.

При желании лазерные пушки можно напечатать на 3D-принтере с использованием прилагаемых файлов ступенчатой модели. Имейте в виду, что необходимо распечатать два файла «front1STL. STL».

Шаг 5: Игра

Игра Играть
Игра Играть
Игра Играть
Игра Играть
Игра Играть
Игра Играть

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

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

Также может быть полезно добавить задание cron, которое автоматически запускает файл player.py после запуска pi. Нам было трудно заставить это работать, и в итоге мы добавили строку в файл «/etc/rc.local» на каждом из Pis для запуска файла «player.py». Это позволяет запускать игру без необходимости подключаться к Pi по SSH для запуска сценария игрока.

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

После каждой игры будет отображаться конечный графический интерфейс со статистикой о предыдущей игре, включая теги, глобальные проценты и продолжительность игры.

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

Шаг 6: Будущие улучшения

Будущие улучшения
Будущие улучшения
Будущие улучшения
Будущие улучшения

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

  • Более прочная конструкция спускового крючка для пистолетов, напечатанных на 3D-принтере
  • Выпадающее меню графического интерфейса завершения для отображения статистики прошлых игр
  • Больше инфракрасных приемников, которые можно прикрепить к жилетам игроков
  • Дополнительные игровые режимы, которые можно выбрать в графическом интерфейсе Pregame
  • Более точный алгоритм расположения тегов на странице статистики игроков

Рекомендуемые: