Съдържание:

Заснемете кутията: 8 стъпки
Заснемете кутията: 8 стъпки

Видео: Заснемете кутията: 8 стъпки

Видео: Заснемете кутията: 8 стъпки
Видео: 3 РЕЦЕПТА из КУРИНОЙ ПЕЧЕНИ/ ПАШТЕТ!! ГОСТИ БУДУТ В ШОКЕ!! 2024, Ноември
Anonim
Заснемете кутията
Заснемете кутията
Заснемете кутията
Заснемете кутията

Capture The Box е тиймбилдинг игра, която можете да играете с приятели във вашия квартал.

Целта е да уловите кутията и да я държите възможно най -дълго, докато други играчи се опитват да я измъкнат от верандата или предната градина.

Тази игра използва GPS за локализиране на кутията и RFID тагове за идентифициране на играчите. Може да се добави допълнителен LDR, който да съответства на интензитета на матричния дисплей с процента светлина в зоната.

Консумативи

Микроконтролери и компютри

  • Малина Пи
  • Arduino (Mega) Избрах Arduino Mega пред нормален Uno, защото има много повече щифтове. Това е необходимо, защото използваме щит Dragino LoRa, който би ни оставил с твърде малко цифрови пинове, когато използваме UNO. СЪВЕТ: Най -добре е да използвате истински, защото китайските клонинги не винаги работят според очакванията.

Сензори и модули

  • 4 MAX7219 матрични модула Свържете DOUT към DIN, CS към CS, CLK към CLK…
  • Резистор, зависим от светлина (10K) + резистор (10K)
  • NEO-7M (или подобен) GPS модул Използвам VMA430 от Velleman
  • RC522 RFID модул+ някои RFID значки/карти

За използване на LoRa (безжична технология)

Щитът на Драгино Лора

Допълнителни сензори и модули

LCD дисплей За показване на IP адреса на Raspberry Pi

За извършване на пробна настройка

Макет и кабели Dupont (мъжки-мъжки)

По избор (корпус)

  • Поялник
  • Стар калъф за инструменти
  • Материали за 3D печат
  • Някои тънки дървени дъски
  • Някои болтове и гайки (които могат да се поберат в отворите на Arduino). Моите винтове имат диаметър около 3 мм.

Приблизителна цена може да бъде намерена в BOM (Bill of Materials), включена по -долу.

Стъпка 1: Настройка на Raspberry Pi

Raspberry Pi е сърцето на проекта.

Той ще изпълнява интерфейса, бекенда и базата данни. Той също така ще отговаря за комуникацията между бекенда и Arduino.

За да можем да използваме Raspberry Pi, ще трябва да направим следното:

Част 1: Инсталирайте Raspbian на Raspberry Pi

Урок за това как да направите това можете да намерите тук:

Част 2: Инсталирайте Raspbian на Raspberry Pi Настройка на домашния ви WiFi.

Това може да стане с помощта на wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Рестартирайте Pi и трябва да видите IP адрес, когато въвеждате ifconfig

Част 3: Инсталирайте уеб сървъра и базата данни

След като стартирате своя Pi, най -добре е да промените паролата си. Това може да стане с командата passwd.

След като това стане, продължете и инсталирайте Apache, PHP, MariaDB и PHPMyAdmin.

Apache, PHP sudo apt инсталирайте apache2 -y sudo apt инсталирайте php libapache2 -mod -php -y

MariaDB sudo apt инсталирате mariadb-сървър mariadb-клиент -y sudo apt инсталирате php-mysql -y sudo systemctl рестартирайте apache2.service

PHPMyAdminsudo apt install phpmyadmin -y

Не забравяйте да зададете защитена парола за MySQL.

Част 4: Инсталиране на необходимите библиотеки на Python

За бекенда ще ни трябват някои библиотеки. Те могат да бъдат инсталирани с помощта на командата pip3.

pip3 инсталирайте mysql-конектор-python

pip3 инсталирайте flask-socketio

pip3 инсталирайте колба-кор

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, след което отидете на Console> Add application.

Изберете име за вашето приложение и щракнете върху Добавяне на приложение.

Стъпка 2: Регистрирайте устройство

След като подадете заявлението си, отидете на Регистрирайте устройството.

Изберете идентификатор на устройство, това може да бъде каквото искате (стига да е калъф за змия) и щракнете върху Регистриране.

Кликнете върху иконата Генериране под EUI на устройството, така че TTN ще генерира такава за вас.

Стъпка 3: Записване на вашите идентификационни данни

Сега отидете на вашето устройство и кликнете върху иконата на кода до EUI на устройството, EUI на приложението и ключа на приложението. Сега трябва да се появи като масив от байтове.

Преди да копирате, щракнете върху бутона Превключване и се уверете, че вашият Dev EUI и EUI на приложението са LSB ПЪРВИ.

Вашият ключ за приложение трябва да остане MSB ПЪРВИ (не променяйте това).

Тези клавиши ще ви трябват в следващата стъпка: Настройка на Arduino.

Стъпка 4: Записване на ключа за достъп до приложението

Сега ще имаме нужда от още един ключ, за да настроим MQTT на нашия Raspberry Pi.

Отидете в приложението си и превъртете надолу до ключове за достъп.

Това ще ви е необходимо в стъпката Backend.

Стъпка 5: Настройка на Arduino

Кодът на Arduino може да бъде намерен и на моя GitHub, под Arduino (https://github.com/BoussonKarel/CaptureTheBox)

Този код е разделен на множество раздели, за да бъде организиран.

main.ino Основният код: pin декларации, 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).

Как работи?

  1. На всеки 10 секунди кодът търси активна игра. Ако бъде намерена, тя се записва в променлива, наречена huidigSpel (currentGame)
  2. Ако режимът е зададен на Serial, се използва кабел между Arduino и Pi. Pi оправя стойностите на LDR и GPS. Arduino отговаря с JSON формат. Когато се представят, се изпращат RFID тагове. Този режим се използва единствено за целите на разработката и вече не е необходим.
  3. Ако режимът е зададен на LoRa, се създава MQTT клиент, който задейства обратно повикване всеки път, когато LoRa данни се приемат от TTN. Той съдържа LDR, GPS и RFID данни.
  4. Интерфейсът може да извлича данни, използвайки крайните точки на API. Повечето от данните се извличат с помощта на huidigSpel.id. Данните се връщат във формат JSON с помощта на jsonify ()

Променете настройките Отидете на secrets.py и попълнете името на вашето приложение LoRa и своя ключ за достъп (записахте по -рано).

Отидете на config.py и попълнете идентификационните си данни в базата данни (като парола, потребител …)

Настройване на услуга Опитайте да стартирате app.py, след като потвърдите, че работи, можем да я използваме като услуга. Това автоматично ще стартира кода във фонов режим, когато стартирате вашия pi.

За да направите това, копирайте 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 (това ще се стартира отново при рестартиране) или деактивирайте е (спрете автоматичното стартиране), като използвате systemctl disable.

Ако трябва да се консултирате с регистрационните файлове (поради грешки), можете да използвате journalctl -u ctb_service.service.

Повече информация за услугите можете да намерите тук:

Стъпка 7: Настройване на Frontend

Както обикновено, frontend може да бъде намерен на моя GitHub, под RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Поставете това в /var /html папката на вашия Raspberry Pi.

Това съдържа всички необходими уеб страници за играта.

Той също така съдържа скрипт за комуникация с бекенда (както в реално време, така и с използване на крайните точки на API).

Стъпка 8: Добавяне на корпус

Добавяне на корпус
Добавяне на корпус
Добавяне на корпус
Добавяне на корпус

За случая използвах стар калъф за инструменти, заедно със следните материали/техники:

  • 3D печат
  • Пяна за поддържане на батерията на място
  • Рециклирани дървени дъски
  • Горещо лепило
  • Винтове и гайки

Това, което правите с вашия случай, е ваш избор! Ще ти дам артистична свобода.

За вдъхновение добавих няколко снимки на моя (завършен) калъф.

Препоръчано: