Агуулгын хүснэгт:

Arduino буудлагын тоглоом V3: 4 алхам
Arduino буудлагын тоглоом V3: 4 алхам

Видео: Arduino буудлагын тоглоом V3: 4 алхам

Видео: Arduino буудлагын тоглоом V3: 4 алхам
Видео: Arduino — растровые изображения из I2C EEPROM на OLED-дисплей 128x64 2024, Арваннэгдүгээр
Anonim
Image
Image
Arduino буудлагын тоглоом V3
Arduino буудлагын тоглоом V3
Arduino буудлагын тоглоом V3
Arduino буудлагын тоглоом V3
Arduino буудлагын тоглоом V3
Arduino буудлагын тоглоом V3

Энэ тоглоом нь airsoft эсвэл co2 ашиглан зорилтот газруудад бууддаг хүмүүст зориулагдсан болно. Энэ бол тоглоом.

Тоглоомын талаархи хамгийн сүүлийн үеийн мэдээлэл, дэмжлэг авахын тулд:

www.facebook.com/arduinoshooting/

Тоглоомын талаархи миний блог хуудасны хувьд:

shootinggameblog.wordpress.com

Тоглоомын талаархи кодын хувьд:

github.com/shootinggame82/Shooting-game-v3

Буудлагын тоглоом нь утасгүй х зорилтот төхөөрөмж бөгөөд бай болгонд цохилт өгөх үед чичиргээг мэдэрдэг чичиргээ мэдрэгч байдаг. Утасгүй мэдрэгч нь Atmega328 чип (Arduino Uno чип) бөгөөд Li-Po цэнэглэдэг.

Энэ тоглоомын үндсэн хянагчийг Arduino удирддаг бөгөөд Raspberry Pi -ээс цуваа удирддаг.

Тэгэхээр энэ тоглоом хэрхэн ажилладаг вэ? За энэ бол 3 тоглоомын горим юм.

Quicktime: X тойрог тоглож, зорилт тус бүр дээр маш хурдан бууд.

Цагийн горим: X секундын дотор аль болох олон зорилтот буудна.

Rapidfire: X цохилтыг хамгийн хурдан хугацаанд хий.

NRF24L01 дамжуулагчийн систем нь үндсэн хянагчаас сайн зайтай байдаг. Тэд 2.6 GHz дээр ажилладаг (WiFi ажилладагтай адил)

Өмнөх төслүүддээ би чичиргээнд зориулж Piezo ашиглаж байсан бол одоо чичиргээ мэдрэгчийг ашиглаж байгаа боловч хэрэв та энэ тоглоомыг миний хуучин хувилбараар хийсэн бол Piezo -г ашиглаж болно.

Тоглоом нь Raspberry Pi 7 мэдрэгчтэй дэлгэцтэй бөгөөд таны тоглоомыг удирдах вэб системийг агуулдаг. Терминал принтер нь үр дүнг хэвлэдэг.

Хангамж

Дамжуулагчийн хувьд:

  • X Atmega328 Arduino Bootloader -тэй (хичнээн олон зорилтоос хамаарна)
  • X чичиргээ мэдрэгчийн унтраалга
  • X Blue Led
  • X Ногоон LED
  • X Улаан Led
  • X 3.7v Li-Po зай
  • X FC-75 Li-Po цэнэглэгч модуль (эсвэл өөр загвар)
  • X 100 uF конденсатор
  • X Мэдрэгчийн хайрцаг
  • X LD1117V33 (дамжуулагчийг аюулгүй 3.3 В болгодог)
  • X NRF24L01 модулиуд
  • X x 3 220 Ом эсэргүүцэл (нэг зорилтод 3 шаардлагатай)
  • X 16 МГц болор
  • 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 хүч чадал сайтай (би 2.5 А хүчдэлтэй хуучин 12в USB ашигласан)

Бусад зүйлс:

  • 12в хүч
  • Сүлжээний залгуур (Сүлжээнд холбогдоход хялбар болгох)
  • Кабель

Алхам 1: Утасгүй мэдрэгч

Утасгүй мэдрэгч
Утасгүй мэдрэгч
Утасгүй мэдрэгч
Утасгүй мэдрэгч
Утасгүй мэдрэгч
Утасгүй мэдрэгч

Мэдрэгч хийж эхэлье, би энэ тоглоомонд 4 мэдрэгч ашигладаг. Гэхдээ та илүү олон мэдрэгч нэмж болно. Гол систем нь зөв кодтой мэдрэгч ямар функцтэйгээр код илгээж, зорилтод бэлэн байх үед мэдрэгч нь 4 тооны кодтой холбогддог. Цэнхэр гэрэл бол таны онох гэж буй зорилт гэдгийг мэдээлэх явдал юм.

Бидэнд бас ногоон, улаан лед байдаг. Ногоон нь үргэлж асдаг бөгөөд мэдрэгч асаалттай байгааг мэдээлдэг. Зай нь 3.1 В -оос бага байх үед л улаан гэрэл асах болно (энэ нь батерейнд хичнээн их байгааг тооцоолохын тулд чипт суулгасан функцийг ашигладаг.

Чичиргээ мэдрэгч нь аналог зүүтэй холбогдсон бөгөөд түүний утгыг уншдаг. Утга буурах үед мэдрэгч нь чичиргээтэй байдаг бөгөөд энд бид цохилтыг бүртгэдэг.

Зорилго нь X секундын дотор цохилт өгөхгүй (анхдагч нь 15 секунд) эсвэл дамжуулах боломжгүй бол тэд анхны байрлал руугаа буцах болно.

Цахилгаан хуудсыг хэрхэн яаж хийх гэж байгаагаа би тайлбарлахгүй, гэхдээ үүнийг хийх гэж байгаа зүйл бол зай, цахилгаан унтраалга, цэнэглэгч юм. Үүнийг хэрхэн хүсч байгаагаа та өөрөө шийдэх болно.

NRF24L+ модулийн талаар мэдээлэл өгөхгүй байх:

Тэднийг тогтвортой байлгахын тулд эргэн тойрныхоо хүч чадал, тусгаарлалтыг хослуулан ашиглах код нь тэднийг ажиллуулахад хүргэдэг. Миний хувьд 10 uF конденсатор нь надад тогтвортой, сайн холболт өгөх болно, гэхдээ эхлээд шаардлагатай бол 100 uF конденсаторыг туршиж үзээрэй. Түүнчлэн хөндлөнгөөс оролцохоос хамгаалахын тулд эхлээд хуванцар тугалган цаас, дараа нь хөнгөн цагаан тугалган цаасаар боож өгнө

Мөн кодонд өгөгдөл дамжуулах хурд танд 250 Kb -аас хэтрэхгүй тул асуудал үүсгэхгүй. Гэхдээ ТХГН: myRadio.setPALevel (RF24_PA_MIN);

Миний MIN гэж тохируулсан код дээр (энэ нь туршилтын явцад), энэ нь хамгийн бага бөгөөд тийм их хүч зарцуулахгүй, гэхдээ хүрээ тийм ч урт биш байх болно. Хэрэв та тэдэнд тогтвортой, сайн хүч чадал өгсөн бол RF24_PA_MAX руу очиж хамгийн урт хугацааны хүрээг авах боломжтой, гэхдээ тэдэнд GOOOOOD тогтвортой хүч хэрэгтэй. Та харилцаа холбоо сайн байгаа эсэхийг мэдэхийн тулд LOW AND HIGH (зөвхөн MAX текстийг өөрчлөх) -г туршиж үзээрэй. Хэрэв та мэргэн буудагч болохгүй бол LOW болон HIGH -ийн сайн түвшинг авах болно

Дамжуулагчийг дор хаяж нэг метрийн зайтай байлга, ингэснээр дохио муу болно

NRF24 номын сан дахь ping жишээг ашиглан харилцаа холбоог туршиж үзээрэй (GitHub дээрх холбоос)

Кодод та энэ зорилтод зориулсан өвөрмөц таних дугаарыг тохируулах хэрэгтэй.

int targID = 3401; // Энэ бол зорилтот ID юм

int sendID = 2401; // Энэ бол хариултын ID юм

Мөн 3 DEFINE функц байдаг:

#DEBUG -ийг тодорхойлох

#баттерейг тодорхойлох

#define SHAKE // Хуучин пьезогийн оронд сэгсрэх түлхүүрийг ашиглавал

Дебаг хийх:

Туршилтын явцад үүнийг тодорхойлох нь зүйтэй юм. Гэхдээ та тэдгээрийг бэлэн болгохдоо үүнийг бүү идэвхжүүлээрэй.

ЗАЙ:

Хэрэв та зорилтот түвшний батерей шалгахыг хүсэхгүй байгаа бол энэ тодорхойлолтыг арилгах хэрэгтэй.

СЭРГЭЭ:

Хэрэв та миний хуучин хувилбарыг бүтээсэн бол танд пьезо мэдрэгч байгаа бол үүнийг зөв код авахын тулд үүнийг устгаарай.

ATMEGA328 чип

Arduino наногийн оронд би ATMEGA328 чип ашиглахаар шийдсэн (Uno ачаалагчтай), тэдгээрийг програмчлахад маш хялбар байдаг, энэ чипийг Arduino Uno -с салгаж, энэ чипийг нэмж код байршуулна уу. Зорилгоо хэрхэн яаж хийх талаар цахилгаан схемийг шалгана уу.

Код

Би кодыг Arduino IDE -ийн оронд PlatformIO ашиглан бичсэн. Энэ нь програмчлах илүү сайн програм юм. Тиймээс код нь арай өөр юм. Үүний оронд энэ програмыг ашиглахыг зөвлөж байна.

Зорилт ба дамжуулагчийн хайрцаг

Би мэдрэгч, цэнхэр туяаг зорилтот хэсэгт холбож, 2 м -ийн зайд 3, 5 мм -ийн фоно кабелиар холбож, атмега чип, батерей цэнэглэгч, ногоон, улаан туяа агуулсан дамжуулагч хайрцагт холбоно. Энэ нь түүнийг ган суманд цохиулахаас хамгаалахын тулд юм.

Алхам 2: Тоглоомын хянагч

Тоглоомын хянагч
Тоглоомын хянагч
Тоглоомын хянагч
Тоглоомын хянагч
Тоглоомын хянагч
Тоглоомын хянагч
Тоглоомын хянагч
Тоглоомын хянагч

Дараагийн хийх ёстой зүйл бол мэдрэгчийг хянагч болгох явдал юм. Энэ бол мэдрэгчтэй холбогдохын тулд NRF24L01 модулийг ашигладаг Arduino юм. Юу ч биш. Дараа нь Arduino нь бөөрөлзгөнө pi -д USB -ээр холбогдсон байна.

Энэ нь ингэж ажиллах болно. Энэ нь юу хийхээ мэдэхийн тулд цуваа ашигладаг бөгөөд pi нь цуваа командуудыг илгээх болно. Нэгдүгээрт, тохиргооны явцад та хичнээн олон зорилт, зорилтот дугаарыг илгээсэн болно. Дараа нь энэ нь туршилтын функцийг гүйцэтгэж, хэрэв тэд хоорондоо харилцдаг бол бөөрөлзгөнө пи -д мэдэгдэх болно.

Та тоглоом тоглож байхдаа ямар төрлийн тоглоом, хэдэн тойрог/цохилт ашиглахыг pi -ээс илгээнэ. Тийм л дээ.

NRF24L01 модулийг бөөрөлзгөнө pi дээр ашиглах боломжтой байдаг, гэхдээ миний хувьд Arduino бол бөөрөлзгөнө дээр хэзээ ч хэрэглэдэггүй нүгэл бол миний хувьд урт хугацааны туршид хэр сайн ажилладагийг нь мэдэхгүй юм

Дамжуулагчийг тогтвортой тогтвортой болгохын тулд 5 в хүчийг ашигладаг цахилгаан модуль байдаг. Та тэдгээрийг Arduino -той хамт ашиглаж болно (Зураг харна уу) нэр нь сокет адаптерийн модулийн самбар юм

Та тоглож байхдаа зорилтууд нэг нэгээр нь санамсаргүй байдлаар идэвхжих болно. Нэгийг нь цохиход нөгөөг нь идэвхжүүлнэ.

Туршилтын явцад та #DEFINE DEBUG -ийг идэвхжүүлж, хэрхэн ажилладагийг харах боломжтой боловч үүнийг pi компьютерт ашиглах үед ажиллахгүй.

Кодыг GitHub хуудаснаас татаж авна уу.

Алхам 3: Raspberry Pi

Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi

Бид одоо Raspberry Pi дээр ирлээ.

Би нэмэлт функцуудыг нэмж оруулсан тул цахилгаан товчлууртай болно. ATXRaspi 3 бол гайхалтай модуль бөгөөд та pi -г асаах, унтраах, товчлуураар дахин эхлүүлэх боломжтой. Мөн цаг, огноог pi дээр хадгалах RTCRaspi. Системийн зарим шинэчлэлтийг хийх шаардлагатай бол сүлжээний кабелийг залгах боломжтой болсон. Та тэдгээрийг Lowpowerlab дээрээс олох болно

Дулааны принтерийг sparkfun дээрээс олж авах боломжтой бөгөөд баркод уншигч нь Amazon дээр байдаг.

Pi компьютер нь ТҮЦ горимд ажилладаг тул хөтөч эхлэхэд нээгдэх болно. Юуны өмнө та pi компьютер дээр PHP 7 болон mysql програмтай вэб сервертэй байх хэрэгтэй. (Үүний тулд вэб дээр маш олон гарын авлага байдаг)

Анхаарна уу: хэрэв та блютүүт суурилуулсан бөөрөлзгөнө pi бүхий дулааны принтер ашиглах гэж байгаа бол эхлээд үүнийг идэвхгүй болгох хэрэгтэй

Python скриптэд pyserial хэрэгтэй бөгөөд та үүнийг суулгаарай: sudo apt-get install python-serial

MySQL -ийг ажиллуулахын тулд дараахь зүйлийг суулгаарай.

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

suso apt-get pymysql суулгана уу

Одоо та Arduino -г цувралаар хянаж, mysql мэдээллийн баазыг шинэчлэх боломжтой боллоо.

Дараагийн алхам бол mysql руу холбогдохын тулд python скрипт хийх явдал юм.

Гурван python скрипт дээр mysql мэдээллийн баазын холболтыг өөрчилнө үү.

Дараагийн алхам бол python скриптийг эхнээс нь ажиллуулах явдал юм.

Гурван python script.game.py байдаг бөгөөд энэ нь тоглоомын функцтэй байдаг.print.py нь хэрэв та терминал принтер ашиглан хэвлэх гэж байгаа бол л хэрэгтэй болно.ean.py нь хэрэв танд байгаа бол л хэрэгтэй болно. бар код скан хийгчийг ашиглах гэж байна.

Тэднийг автоматаар эхлүүлэхийн тулд би засварлаж байна:

sudo нано /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 &

Питон скриптийнхээ зөв байрлалыг өөрчилж, төгсгөлд нь & тэмдгийг бүү мартаарай

Одоо бид вэб хөтчийн ТҮЦ горимыг хийх хэрэгтэй бөгөөд эхлээд курсорыг устгана уу.

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 нано /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 нано /boot/cmdline.txt

"консол = tty1" -ийг "консол = tty3" гэж орлуулах

ба мөрний төгсгөлд дараахь зүйлийг нэмнэ үү

чимээгүй plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

Мөн pi splash -ийг өөрийн гараар солино уу

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

Одоо та өөрийн тоглоомын ачаалах дэлгэцтэй боллоо. Таны pi компьютер тоглоомыг удирдахад бэлэн боллоо. Тиймээс дараагийн алхам руу орно уу!

Алхам 4: Тоглоомыг тохируулах

Энэ үед та тоглоомыг үүсгэсэн.

Юуны өмнө та вэб системийг тохируулах хэрэгтэй. Өгөгдлийн санг mysql сервер дээрээ байршуулна уу. Файл нь хавтас дотор байгаа бөгөөд database.sql нэртэй байна

Дараагийн алхам бол тохиргооны файлыг засах явдал юм, та үүнийг config.php хавтасны нэрээс олж болно. Өгөгдлийн сангийн нэвтрэх мэдээллийг өөрчил, ингэснээр скрипт ажиллах болно.

Вэб систем нь олон хэл дээр суурилсан бөгөөд англи хэл дээр бичигдсэн байдаг. Швед орчуулга байдаг бөгөөд илүү их хэлтэй болохын тулд танд Poedit нэртэй програм хангамж хэрэгтэй болно.

Вэб системд илүү их хэл нэмэхийн тулд i18n_setup.php файлыг засварлаж массивт нэмэх хэрэгтэй.

in_array буцаах ($ localale, ['en_US', 'sv_SE']); (23 -р мөр)

Мөн анхдагч хэлийг өөрчлөхийн тулд 27 -р мөрөнд өөрчлөх шаардлагатай: $ lang = 'en_US'; en_US хэлийг өөрчилнө үү.

хэлний файлуудыг locales/LANGCODE/LC_MESSAGES/хэсэгт байрлуулж, main.mo гэж нэрлэх ёстой (хэлний кодоо өөрийн хэл рүү өөрчлөх)

selectplayers.php файл дахь гарыг өөрчлөхийн тулд та хэлээ өөрчилдөг: "en", // en for sv for svada: "qwerty ', // qwerty for english swedish-qwerty for swedish-qwerty

Та тэдгээрийг 218 ба 219 -р мөрнөөс олж болно

Боломжтой хэлнүүд фолдерт байна: хөрөнгийн/js/гар/хэл & зохион байгуулалт нь хөрөнгийн/js/гар/байршилд байгаа бөгөөд зөв файлуудыг 118 ба 119 мөрөнд нэмж оруулаарай (одоо тэндээс олсон хэлээ солино уу)

Зорилго нэмэх

Зорилго нэмэхийн тулд та localhost/ admin/ руу очиж зорилт нэмэх дээр дарна уу.

Та зорилтот нэр, өвөрмөц зорилтот ID -г нэмж, ID илгээх, өөрт байгаа олон зорилгоо нэмэх хэрэгтэй.

Тоглоом нэмэх

Та бас хэдэн тоглоом нэмэх хэрэгтэй. Localhost/ admin/ руу ороод тоглоом нэмэх дээр дарна уу

Та тоглоомын нэр, тодорхойлолт, мин болон дээд түвшний тоглогчид ямар тоглоом байх ёстой, тоглоом 1-5 хооронд хэр хэцүү вэ, тоглоом ямар байна вэ, риффайр тоглоомын хувьд та хичнээн олон цохилт оруулах ёстой (жишээ 30) хурдан зургийн хувьд хэдэн тойрог хийх (жишээ нь 8), хэр удаан тоглохыг тооцоолох (жишээ нь нэг минутанд 60)

Тоглоомыг эхлүүлнэ үү

Тоглоомыг асаахад энэ нь зорилтот туршилтыг хийх болно. Тиймээс үндсэн системийг эхлүүлэхийн өмнө зорилтууд нь биелэх ёстой. Хэрэв бүх хүмүүс шалгалтанд тэнцсэн бол та системийг ашиглаж болно, гэхдээ чадахгүй бол та үүнийг ашиглаж чадахгүй. Тэд хариулт авах хүртэл харилцахыг хичээх болно.

Амжилт хүсье

Энэ бол энэ тухай юм, кодын шинэчлэлтийн талаархи дэмжлэг, мэдээллийг авахын тулд энэ тоглоомын талаар миний Facebook хуудсыг дагана уу, ингэснээр би танд хурдан хариу өгөх болно. Та эндээс линкүүдийг олох болно.

Зөвлөмж болгож буй: