Съдържание:

Arduino Shooting Game V3: 4 стъпки
Arduino Shooting Game V3: 4 стъпки

Видео: Arduino Shooting Game V3: 4 стъпки

Видео: Arduino Shooting Game V3: 4 стъпки
Видео: Свидание в 16 vs 26 лет 😨😳 2024, Юли
Anonim
Image
Image
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3

Тази игра е за вас, които използват airsoft или co2, за да стрелят по цели. Това е игра.

За актуална информация за играта и поддръжката:

www.facebook.com/arduinoshooting/

За моята страница в блога за играта:

shootinggameblog.wordpress.com

За кодовете за играта:

github.com/shootinggame82/Shooting-game-v3

Стрелящата игра е x цели, които са безжични, всяка цел има сензор за вибрации, който усеща вибрации, които се получават при удар. Безжичните сензори са чип Atmega328 (чип Arduino Uno) и имат презареждаща се Li-Po батерия.

Основният контролер за тази игра се управлява от Arduino и се управлява серийно от Raspberry Pi.

И така, как работи тази игра? Е, това са 3 режима на игра:

Quicktime: Играйте X рундове и стреляйте толкова бързо, че можете по всяка цел.

Timemode: Снимайте възможно най -много цели за X секунди.

Rapidfire: Снимайте X снимки най -бързо.

Системата използва предаватели NRF24L01, за да се отдалечи добре от основния контролер. Те работят на 2.6 GHz (същото като WiFi работи)

В миналите си проекти съм използвал Piezo за вибрациите, но сега се използват превключватели на сензора за вибрации, но все още можете да използвате Piezo, ако сте направили старата ми версия на тази игра.

Играта има Raspberry Pi 7 сензорен екран, който държи уеб системата, чрез която контролирате играта. Терминален принтер отпечатва резултатите.

Консумативи

За предаватели:

  • X Atmega328 с Arduino Bootloader (В зависимост от това колко цели)
  • X Превключвател на сензора за вибрации
  • X Blue Led
  • X Зелен Led
  • X Red Led
  • X 3.7v Li-Po батерия
  • X FC-75 Li-Po зарядно устройство (или друг модел)
  • X 100 uF кондензатор
  • X Калъфи за сензорите
  • X LD1117V33 (Прави безопасно 3.3 V към предавателя)
  • X модули NRF24L01
  • X x 3 220 ома резистори (3 са необходими за една цел)
  • X 16 MHz кристал
  • X x 2 Неплойзирани кондензатори 22 pF (2 са необходими за една цел)

За основния Arduino:

  • 1 Arduino (препоръчва се Nano или Uno, трябва да имате USB)
  • 1 модул NRF24L01
  • 1 10 uF кондензатор

За малина Pi:

  • Raspberry Pi (използвах 3B)
  • 7 "сензорен екран
  • ATXRaspi (по избор, но добър модул на бутона за захранване)
  • RTCRaspi (По избор, но добър RTC модул за запазване на час и дата)
  • Терминален принтер (по избор, но е необходимо, за да можете да печатате)
  • Скенер за баркод (USB версия, която работи като клавиатура, по избор)
  • Добро 5V захранване (използвах стар 12v USB с мощност 2.5 A)

Други неща:

  • 12v мощност (имам такава при 12 Ah)
  • Мрежово гнездо (улеснява свързването към мрежа)
  • Кабели

Стъпка 1: Безжичните сензори

Безжичните сензори
Безжичните сензори
Безжичните сензори
Безжичните сензори
Безжичните сензори
Безжичните сензори

Нека започнем да правим сензори. Използвам 4 сензора за тази игра. Но можете лесно да добавите още сензори. Сензорите комуникират с код от 4 числа, когато основната система изпраща кода с каква функция сензорът с правилния код ще светне и ще бъде готов за целта. Синята светлина трябва да информира, че точно тази цел ще ударите.

Имаме и зелен и червен светодиод. Зеленото винаги свети, за да информира, че сензорът е включен. Червеното ще светне само когато батерията е под 3.1V (тя използва вградената функция в чипа, за да изчисли колко има в батерията.

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

Целта има функция за безопасност, в случай че не ударите за X секунди (по подразбиране е 15 секунди) или ако предаването не може да се извърши, те ще се върнат в изходна позиция.

Няма да обяснявам как ще свързвате проводника, проверете електрическия лист, за да видите как ще го направите. Единственото нещо, което не е на него, е батерията, превключвателят на захранването и зарядното устройство. Това зависи от вас да решите как искате.

ИМПОРТЕНТ ЗА МОДУЛА NRF24L+:

Може да бъде болка в… да ги направите стабилни, съчетани с добра мощност и изолация около него, и кода, който ще ги накарате да работят. За мен 10 uF кондензатор ще ми даде стабилна и добра връзка, но моля, опитайте първо в случай, че имате нужда например от 100 uF кондензатор. Също така ги увийте с първо пластмасово фолио и след това с алуминиево фолио, за да ги предпазите от намеса

Също така в кода, скоростта на предаване на данни не се нуждаете от повече от 250 Kb, така че това няма да е проблемът. Но PA: myRadio.setPALevel (RF24_PA_MIN);

В кода, който съм задал на MIN (Това е по време на теста), той е най -ниският и няма да използва толкова много енергия, но обхватът няма да е толкова дълъг. Ако имате стабилна и добра мощност към тях, можете да отидете до RF24_PA_MAX, за да получите най -дългия обхват, НО те се нуждаят от GOOOOOD стабилна мощност за това. Опитайте също LOW AND HIGH (Промяна само на MAX текст), за да видите дали получавате добра комуникация. Също така ще получите добър обхват на LOW и HIGH, освен ако няма да бъдете снайперист

Също така дръжте предавателите на разстояние най -малко един метър, затварянето може да влоши сигнала

Тествайте комуникацията с пример за пинг в библиотеката NRF24 (Връзка на GitHub)

В кода трябва да зададете уникалния идентификационен номер за тази цел:

int targID = 3401; // Това е целевият идентификатор

int sendID = 2401; // Това е идентификаторът на отговора

Има и 3 функции DEFINE:

#дефинирайте DEBUG

#дефинирайте АКУМУЛАТОРА

#define SHAKE // АКО ПРЕКЛЮЧВАЩИЯ ПЕРЕКЛЮЧВАТЕЛ ВМЕСТ НА СТАРОТО PIEZO

Отстраняване на грешки:

По време на теста това е добре да се дефинира. Но когато ги правите достъпни, не ги активирайте.

АКУМУЛАТОР:

Ако не искате да имате проверка на батерията за целите, трябва да премахнете тази дефиниция.

КЛАТЯ:

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

ATMEGA328 чип

Вместо Arduino nano реших да използвам чип ATMEGA328 (с зареждащо устройство Uno), те са лесни за програмиране, просто премахнете чипа от Arduino Uno и добавете този чип и качете код. Проверете електрическата схема за това как да изградите целите.

Кодът

Написах кода с PlatformIO вместо с Arduino IDE. Това е по -добър софтуер за програмиране. Така че кодът е малко по -различен. Препоръчвам вместо това да използвате този софтуер.

Кутията за целта и предавателя

Прикрепих сензора и синия светодиод към целта и с 3, 5 мм фоно кабел на 2 м го свързвам заедно в предавателната кутия, която държи чипа atmega, зарядното устройство за батерии и зеления и червения светодиод. Това е така, за да го предпазите от удари със стоманени куршуми.

Стъпка 2: Контролерът на играта

Контролерът на играта
Контролерът на играта
Контролерът на играта
Контролерът на играта
Контролерът на играта
Контролерът на играта
Контролерът на играта
Контролерът на играта

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

Ето как ще работи. Той използва сериен, за да знае какво да прави. Pi ще изпраща серийни команди. Първо по време на настройката той изпраща колко цели сте добавили и идентификационните номера на целите. След това ще извърши тестовата функция и ще информира малиновото пи, ако комуникират помежду си.

Когато играете играта, тя ще изпрати от pi какъв тип игра и колко кръга/попадения да използвате. Това е.

Възможно е да се използват модулите NRF24L01 в малиновото пи, но за мен Arduino е по -добрият вариант грехове, никога не ги използвам в малината, така че не знам колко добре работят в дългосрочен план

Има захранващ модул, който използва 5 v, за да осигури правилно стабилно захранване на предавателите. Можете да ги използвате с вас Arduino (вижте снимката) името е Socket Adapter Module Board

Когато играете, мишените ще се активират произволно една по една. Когато един е ударен, ще се активира друг.

По време на теста можете да активирате #DEFINE DEBUG, за да видите как работи, но не и когато го използвате в pi компютъра, тогава той няма да работи.

Изтеглете кода на страницата на GitHub.

Стъпка 3: Raspberry Pi

Малина Пи
Малина Пи
Малина Пи
Малина Пи
Малина Пи
Малина Пи
Малина Пи
Малина Пи

Вече стигнахме до Raspberry Pi.

Добавих някои допълнителни функции, за да мога да имам бутон за захранване. ATXRaspi 3 е страхотен модул, можете да включите, изключите и рестартирате pi с бутон. Също така RTCRaspi за запазване на часа и датата на пи. Също така направи възможно просто да се включи мрежов кабел в кутия, трябва да направя някои актуализации на системата. Ще ги намерите в Lowpowerlab

Термопринтерът, който ще намерите на sparkfun, и четецът на баркод е наличен в amazon.

Компютърът Pi работи в режим на павилион, така че браузърът ще се отвори при стартиране. Първо трябва да имате уеб сървър с PHP 7 и mysql на компютъра pi. (Има много ръководства в мрежата за това)

ЗАБЕЛЕЖКА: ако ще използвате термичен принтер с малинов pi, който има вграден bluetooth, първо трябва да го деактивирате

Скриптът на python се нуждае от pyserial и вие го инсталирате: sudo apt-get install python-serial

За да накарате mysql да работи, инсталирайте следното:

sudo apt-get install mysql-python sudo apt-get install python-mysql.connector

suso apt-get install pymysql

Сега можете да контролирате Arduino чрез сериен и също така да актуализирате базата данни на mysql.

Следващата стъпка е да направите скрипт на python да се свърже с mysql.

И в трите скрипта на python променете връзката с вашата база данни mysql.

Следващата стъпка е да накарате скрипта на python да се стартира при стартиране.

Има три python script.game.py е най -важният от всички, този съдържа играта function.print.py това е необходимо само ако ще използвате терминален принтер за print.ean.py е необходим само ако сте ще използвам скенера за баркод.

За да ги накарам да се стартират автоматично, редактирам:

sudo nano /etc/rc.local

и добавете следното в долната част преди излизане 0:

sudo python /home/pi/Gamefiles/game.py & sudo python /home/pi/Gamefiles/print.py & sudo python /home/pi/Gamefiles/ean.py &

Моля, променете правилното място за вашия скрипт на python и не забравяйте знака & в края

Сега трябва да направим режим на павилион за уеб браузъра, първо премахнете курсора:

sudo apt-get install unclutter

sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

сега в този файл намерете и коментирайте:

@xscreensaver -no -splash # коментирайте този ред, за да деактивирате скрийнсейвъра

Под това добавяне:

@xset s off @xset -dpms @xset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor = 1.25 --kiosk https:// localhost

Следващата стъпка за премахване на всички текстове за зареждане и други неща, както и добавяне на собствен екран за стартиране, ето кратко ръководство:

sudo nano /boot/config.txt и най -долу adddisable_splash = 1

Премахнете текстовото съобщение под изпръскващо изображение:

sudo nano /usr/share/plymouth/themes/pix/pix.script

Намерете и премахнете (или коментирайте):

message_sprite = Sprite (); message_sprite. SetPosition (ширина на екрана * 0,1, височина на екрана * 0,9, 10000);

и:

my_image = Image. Text (текст, 1, 1, 1); message_sprite. SetImage (my_image);

Сега премахваме съобщенията за зареждане:

sudo nano /boot/cmdline.txt

заменете „console = tty1“с „console = tty3“

и в края на реда добавете:

splash quiet plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

И заменете pi splash със свой собствен:

sudo cp ~/my_splash-p.webp" />

Сега имате собствен персонализиран екран за зареждане на вашата игра. Вашият компютър pi вече е готов да се справи с играта. Така че преминете към следващата стъпка!

Стъпка 4: Настройте играта

В този момент вече сте създали играта.

Първо трябва да настроите уебсистемата. Качете базата данни на вашия mysql сървър. Файлът е в папката include и е наречен database.sql

Следващата стъпка е да редактирате конфигурационния файл, който ще намерите в името на папката включва config.php Променете данните за вход в базата данни, така че скриптът да работи.

Уеб системата е базирана на много езици и е написана на английски език. Наличен е шведски превод. За да направите повече език, имате нужда от софтуер, наречен Poedit.

За да добавите повече език към уеб системата, трябва да редактирате i18n_setup.php и да добавите в масива:

return in_array ($ locale, ['en_US', 'sv_SE']); (Ред 23)

Също така, за да промените езика по подразбиране, трябва да промените в ред 27: $ lang = 'en_US'; променете en_US на вашия език.

езиковите файлове трябва да бъдат поставени в locales/LANGCODE/LC_MESSAGES/и да бъдат наречени main.mo (Променете langcode на вашия език)

за смяна на клавиатурата във файла selectplayers.php променяте езика: "en", // en за английски sv за шведско оформление: 'qwerty', // qwerty за английски шведски-qwerty за шведски

Можете да ги намерите на линии 218 и 219

Наличните езици са в папка: активи/js/клавиатура/езици и оформления са в активи/js/клавиатура/оформления и добавете правилните файлове към редове 118 и 119 (заменете този, който намирате там сега)

Добавете цели

За да добавите цели, отидете на localhost/ admin/ и кликнете върху добавяне на цели.

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

Добавете игри

Трябва също да добавите някои игри. Отидете на localhost/ admin/ и кликнете върху добавяне на игра

Трябва да добавите име за играта, описание, мин и максимум играчи какъв тип игра, също и колко трудна е играта между 1 до 5. И как е играта, така че за играта fastfire добавяте колко попадения (пример 30) за бързо изтегляне колко рунда (например 8) и за време колко време ще играят (например 60 за една минута)

Започни играта

Когато включите играта, тя ще извърши целевото тестване. Така че целите трябва да бъдат включени, преди да стартирате основната система. Ако всички преминат теста, можете да използвате системата, но ако не успеете, не можете да го използвате. Той ще се опита да комуникира, докато не получи отговор.

Късмет

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

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