Оглавление:
- Запасы
- Шаг 1. Настройка Raspberry Pi
- Шаг 2: Размещение электроники
- Шаг 3: проектирование базы данных
- Шаг 4: Настройка учетной записи в TTN
- Шаг 5: настройка Arduino
- Шаг 6: настройка серверной части
- Шаг 7: Настройка внешнего интерфейса
- Шаг 8: Добавление обсадной колонны
Видео: Захватите коробку: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Capture The Box - это командная игра, в которую можно играть с друзьями по соседству.
Цель состоит в том, чтобы захватить коробку и держать ее у себя как можно дольше, пока другие игроки пытаются ускользнуть и утащить ее с вашего крыльца или палисадника.
Эта игра использует GPS для определения местоположения коробки и RFID-метки для идентификации игроков. Дополнительный LDR может быть добавлен для согласования интенсивности точечного матричного дисплея с процентным соотношением света в области.
Запасы
Микроконтроллеры и компьютеры
- Raspberry Pi
- Arduino (Mega) Я выбрал Arduino Mega вместо обычного Uno, потому что у него намного больше контактов. Это необходимо, потому что мы используем щит Dragino LoRa, который оставил бы нам слишком мало цифровых контактов при использовании UNO. СОВЕТ: Лучше использовать подлинный, потому что китайские клоны не всегда работают должным образом.
Датчики и модули
- 4 модуля с точечной матрицей MAX7219 Подключение DOUT к DIN, CS к CS, CLK к CLK…
- Светозависимый резистор (10 кОм) + резистор (10 кОм)
- Модуль GPS NEO-7M (или аналогичный) Я использую VMA430 от Velleman
- RFID-модуль RC522 + некоторые RFID-значки / карты
Для использования LoRa (беспроводная технология)
Драгино Лора Щит
Дополнительные датчики и модули
ЖК-дисплей для отображения IP-адреса Raspberry Pi
Для создания тестовой установки
Макетная плата и кабели Dupont (мужчина-мужчина
Дополнительно (корпус)
- Паяльник
- Старый ящик для инструментов
- Материалы для 3D-печати
- Несколько тонких деревянных досок
- Некоторые болты и гайки (которые можно вставить в отверстия Arduino). Мои винты имеют диаметр около 3 мм.
Ориентировочную цену можно найти в спецификации (ведомости материалов), приведенной ниже.
Шаг 1. Настройка Raspberry Pi
Raspberry Pi - это сердце проекта.
Он будет запускать интерфейс, бэкэнд и базу данных. Он также будет отвечать за связь между серверной частью и Arduino.
Чтобы использовать Raspberry Pi, нам нужно сделать следующее:
Часть 1: Установите Raspbian на Raspberry Pi
Учебник о том, как это сделать, можно найти здесь:
Часть 2: Установка Raspbian на Raspberry Pi Настройка домашнего Wi-Fi.
Это можно сделать с помощью wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Перезагрузите Pi, и вы должны увидеть IP-адрес при вводе ifconfig.
Часть 3: Установите веб-сервер и базу данных
После того, как ваш Pi запущен и работает, лучше всего сменить пароль. Это можно сделать с помощью команды passwd.
Как только это будет сделано, продолжайте и установите Apache, PHP, MariaDB и PHPMyAdmin.
Apache, PHP sudo apt install apache2 -y sudo apt install php libapache2-mod-php -y
MariaDB sudo apt install mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl restart apache2.service
PHPMyAdminsudo подходит для установки phpmyadmin -y
Не забудьте установить безопасный пароль MySQL.
Часть 4: Установка необходимых библиотек Python
Для бэкэнда нам понадобятся библиотеки. Их можно установить с помощью команды pip3.
pip3 установить mysql-connector-python
pip3 установить flask-socketio
pip3 установить flask-cors
pip3 установить geventpip3 установить gevent-websocket
pip3 установить ttn
Шаг 2: Размещение электроники
Чтобы этот проект заработал, нам нужно подключить всю электронику.
Щит LoRa легко устанавливается на место. Просто совместите контакты с контактами на Arduino.
Остальные подключения описаны в моей схеме Fritzing. Что можно скачать здесь:
Шаг 3: проектирование базы данных
Чтобы иметь возможность хранить все данные игры и датчиков, я сделал несколько таблиц:
Измерение и датчик Измерения датчиков, которые можно найти в таблицах датчиков. Он содержит ссылку на датчик, значение измерения (например, координаты: 51.123456; 3.123456) и дополнительный идентификатор игры (если игра была активна во время измерения).
speler Имена игроков и UID их значка RFID. Добавлен необязательный модератор поля, этот человек может изменить игру (например, остановить ее раньше времени).
Spel - информация об игре (время начала и окончания).
spel_has_speler Отношение между Spel и Speler. Здесь игроки назначаются на игру.
bezit В этой таблице сохранен счет. Он содержит идентификатор игры, идентификатор игрока, время, когда он украл коробку, и время, когда он ее потерял (когда кто-то украл ее или когда игра закончилась). Вычитая время начала из времени окончания, вы можете подсчитать, сколько очков он получил в результате захвата.
Экспорт базы данных можно найти на моем GitHub (https://github.com/BoussonKarel/CaptureTheBox)
Откройте sql в PHPMyAdmin / MySQL Workbench и запустите его. Теперь база данных должна быть импортирована.
Шаг 4: Настройка учетной записи в TTN
Шаг 1: Зарегистрируйтесь в TTN и создайте заявку
Зарегистрируйте учетную запись на TheThingsNetwork, затем перейдите в Консоль> Добавить приложение.
Выберите имя для своего приложения и нажмите «Добавить приложение».
Шаг 2. Зарегистрируйте устройство
Когда вы подали заявку, перейдите в раздел «Зарегистрировать устройство».
Выберите идентификатор устройства, это может быть все, что вы хотите (если это случай змеи), и нажмите «Зарегистрироваться».
Щелкните значок «Создать» под «EUI устройства», чтобы TTN сгенерировал его для вас.
Шаг 3. Запишите свои учетные данные
Теперь перейдите на свое устройство и щелкните значок кода рядом с EUI устройства, приложением EUI и ключом приложения. Теперь он должен отображаться как массив байтов.
Перед копированием нажмите кнопку «Переключить» и убедитесь, что пользовательский интерфейс пользователя для разработчиков и пользовательский интерфейс приложения в первую очередь LSB.
Ваш ключ приложения должен оставаться MSB FIRST (не меняйте это).
Эти ключи понадобятся вам на следующем этапе: настройка Arduino.
Шаг 4. Запишите ключ доступа к приложению
Теперь нам понадобится еще один ключ для настройки MQTT на Raspberry Pi.
Перейдите в свое приложение и прокрутите вниз до пункта «Ключи доступа».
Это понадобится вам на этапе Backend.
Шаг 5: настройка Arduino
Код Arduino также можно найти на моем GitHub в разделе Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Этот код разделен на несколько вкладок, чтобы он был организован.
main.ino Основной код: объявления контактов, setup () и loop ()
0_LoRa.ino - Этот код обрабатывает обмен данными с использованием LoRa.
Он помещает данные тегов LDR, GPS и RFID в массив из 13 байтов и отправляет их в TheThingsNetwork.
1_LDR.ino Используя analogRead (), он измеряет величину напряжения на светозависимом резисторе.
Затем это значение преобразуется в процент света (0 - ничто, 100 - фонарик мобильного телефона).
2_GPS.ino Использует последовательную связь с использованием TX1 и RX1 (Serial1).
Он использует сообщения NMEA (точнее, сообщения $ GPRMC), чтобы определить широту и долготу ящика.
3_RFID.ino Используя библиотеку MFRC522, этот код сканирует новые RFID-метки. Когда они есть, они сохраняются как RFID_lastUID.
4_DotMatrix.inoЭтот код используется для инициализации и установки отображения точечной матрицы. Он содержит определения для анимации загрузки и т. Д.
Настройка
Прежде чем вы сможете загрузить этот код в свой Arduino, вам необходимо установить несколько библиотек.
Библиотека Arduino-LMIC от matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
Библиотека MFRC522 для считывателя RFID (https://github.com/miguelbalboa/rfid)
Теперь перейдите на main.ino и измените DEVEUI, APPEUI и APPKEY на те, которые вы скопировали на последнем шаге.
Шаг 6: настройка серверной части
Бэкэнд для этого проекта можно найти на моем GitHub в разделе RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).
Как это работает?
- Каждые 10 секунд код ищет активную игру. Если она найдена, она сохраняется в переменной с именем huidigSpel (currentGame).
- Если установлен режим Serial, между Arduino и Pi используется кабель. Pi опрашивает значения LDR и GPS. Arduino отвечает форматом JSON. RFID-теги отправляются всякий раз, когда они представлены. Этот режим использовался исключительно для целей разработки и больше не нужен.
- Если установлен режим LoRa, создается клиент MQTT, который запускает обратный вызов всякий раз, когда TTN получает данные LoRa. Он содержит данные LDR, GPS и RFID.
- Интерфейс может получать данные с помощью конечных точек API. Большая часть данных извлекается с помощью huidigSpel.id. Данные возвращаются в формате JSON с помощью jsonify ().
Измените настройки. Перейдите на secretts.py и введите имя вашего приложения LoRa и свой Acces Key (вы записали ранее).
Перейдите в config.py и введите учетные данные своей базы данных (например, пароль, имя пользователя…)
Настройка его как службы Попробуйте запустить app.py, как только вы убедитесь, что он работает, мы можем использовать его как службу. Это автоматически запустит код в фоновом режиме, когда вы загрузите свой пи.
Для этого скопируйте ctb_service.service в /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Теперь включите его, используя systemctl enable ctb_service.service
Если вам нужно внести некоторые изменения в код, вы можете легко остановить его с помощью systemctl stop (он снова запустится при перезагрузке) или disable is (остановить его автоматический запуск) с помощью systemctl disable.
Если вам нужно просмотреть журналы (из-за ошибок), вы можете использовать journalctl -u ctb_service.service.
Более подробную информацию об услугах можно найти здесь:
Шаг 7: Настройка внешнего интерфейса
Как обычно, интерфейс можно найти на моем GitHub в разделе RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)
Вставьте это в папку / var / html вашего Raspberry Pi.
Он содержит все необходимые веб-страницы для игры.
Он также содержит сценарий для связи с серверной частью (как в реальном времени, так и с использованием конечных точек API).
Шаг 8: Добавление обсадной колонны
Для этого я использовал старый чемодан с инструментами и следующие материалы / техники:
- 3D печать
- Пена для удержания аккумулятора на месте
- Переработанные деревянные доски
- Горячий клей
- Винты и гайки
Что вы будете делать со своим кейсом - ваш выбор! Я дам вам свободу творчества.
Для вдохновения добавил несколько фотографий своего (готового) кейса.
Рекомендуемые:
Сделать коробку ТАРДИС Бесконечность: 9 шагов (с картинками)
Сделайте коробку ТАРДИС Бесконечность: я ранее построил модель ТАРДИС. Одной из определяющих характеристик ТАРДИС является то, что она больше внутри, чем снаружи. Очевидно, я не могу этого сделать, но в этом Руководстве я адаптирую модель, чтобы попытаться сделать так, чтобы она выглядела круто
«Обращает внимание на коробку» - модель, которую вы можете поместить в его собственную голову: 7 шагов
«Обращает внимание на коробку» - модель, которую можно поместить в его собственную голову: я слышал о японских картонных игрушках, в которых голова стала ящиком для хранения всей модели. Я попытался найти его в Интернете, но не смог. А может, мне это удалось, но я не смог прочитать японский сценарий? В любом случае, я решил сделать свой собственный. Его зовут Хид
Улучшите свою бесполезную коробку: 5 шагов
Улучшите свою бесполезную коробку: это руководство показывает вам, как вы можете улучшить свою бесполезную коробку, когда она реагирует слишком быстро, поэтому у вас мало времени, чтобы убрать палец после переключения переключателя, чтобы активировать коробку
Обновите подарочную коробку водки: 7 шагов (с изображениями)
Обновите подарочную коробку с водкой: в этой инструкции я покажу, как я обновил подарочную коробку с водкой, добавив к ней несколько светодиодов RGB. Он имеет три режима работы: статические цвета, вращающиеся цвета и игровой режим. В игровом режиме устройство случайным образом выбирает одну бутылку и мигает светом
Постройте переговорную коробку внутри унитаза: 6 шагов (с иллюстрациями)
Постройте переговорную коробку внутри унитаза: с помощью паяльника, пары компьютерных динамиков и некоторого сантехнического оборудования (включая унитаз). Вы можете создать довольно хороший Talk Box (Talk Box - это то, что используют такие артисты, как Daft Punk, чтобы получить эффект голоса робота в таких песнях, как Around th