Съдържание:
- Консумативи
- Стъпка 1: Настройка на Raspberry Pi
- Стъпка 2: Разполагане на електрониката
- Стъпка 3: Проектиране на базата данни
- Стъпка 4: Създаване на акаунт в TTN
- Стъпка 5: Настройка на Arduino
- Стъпка 6: Настройване на бекенда
- Стъпка 7: Настройване на Frontend
- Стъпка 8: Добавяне на корпус
Видео: Заснемете кутията: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
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).
Как работи?
- На всеки 10 секунди кодът търси активна игра. Ако бъде намерена, тя се записва в променлива, наречена huidigSpel (currentGame)
- Ако режимът е зададен на Serial, се използва кабел между Arduino и Pi. Pi оправя стойностите на LDR и GPS. Arduino отговаря с JSON формат. Когато се представят, се изпращат RFID тагове. Този режим се използва единствено за целите на разработката и вече не е необходим.
- Ако режимът е зададен на LoRa, се създава MQTT клиент, който задейства обратно повикване всеки път, когато LoRa данни се приемат от TTN. Той съдържа LDR, GPS и RFID данни.
- Интерфейсът може да извлича данни, използвайки крайните точки на 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 печат
- Пяна за поддържане на батерията на място
- Рециклирани дървени дъски
- Горещо лепило
- Винтове и гайки
Това, което правите с вашия случай, е ваш избор! Ще ти дам артистична свобода.
За вдъхновение добавих няколко снимки на моя (завършен) калъф.
Препоръчано:
Три френски кокошки в кутията (с Micro: бит): 10 стъпки
Три френски кокошки в кутията (с Micro: bit): Изненадайте (или изплашете) хора с три кокошки, изскачащи от кутията. Празничен обрат с електроника на класическия Jack-in-the-box. Тези три кокошки са френски, разбира се
Най -добрият начин да заснемете интервюта: 3 стъпки
Най -добрият начин за филмови интервюта: Здравейте! Казвам се Гарет и съм тук, за да ви покажа най -добрия (според мен) начин за интервюта за вашия филм! За тази проста инструкция ще ви трябват: - Светлини - Триножник - Бум микрофон - Тихо място за снимане - Камера - Актьори - Софтуер за редактиране
Върколаците от кутията на Милър (狼人 殺) Помощник на веригата: 4 стъпки
Върколаците от Милър Холоу (狼人 殺) Circuit Helper: Този проект е предназначен за хора, които обичат да играят The Werewolves of Miller's Hollow, и тази кутия се използва за игра с 8 души, с три върколака, двама селяни и три специални роли (Видетел, Вещица и Ловец). Тази кутия е направена, за да замени
Как да заснемете видео на екрана на компютъра си !!: 5 стъпки
Как да заснемете видео на екрана на компютъра си !!: Тази инструкция ще ви покаже бързо & лесен начин да заснемете видео на екрана на компютъра си Моля, абонирайте се за канала ми Благодаря
Как да заснемете независим филм в метрото в Ню Йорк, когато не можете да си позволите разрешителни: 12 стъпки
Как да заснемете независим филм в метрото в Ню Йорк, когато не можете да си позволите разрешителни: Това е просто ръководство за амбициозни независими режисьори там, които имат мечти да заснемат тази вълшебна сцена в красивата система на метрото в Ню Йорк, но които не могат да си позволят хилядите долари, необходими, за да получат разрешение за снимане законно