Daftar Isi:

Game Menembak Arduino V3: 4 Langkah
Game Menembak Arduino V3: 4 Langkah

Video: Game Menembak Arduino V3: 4 Langkah

Video: Game Menembak Arduino V3: 4 Langkah
Video: Arduino Star Wars Game - how to make 2024, November
Anonim
Image
Image
Game Menembak Arduino V3
Game Menembak Arduino V3
Game Menembak Arduino V3
Game Menembak Arduino V3
Game Menembak Arduino V3
Game Menembak Arduino V3

Game ini cocok untuk kamu yang menggunakan airsoft atau co2 untuk menembak sasaran. Ini permainan.

Untuk info terbaru tentang game dan dukungan:

www.facebook.com/arduinoshooting/

Untuk halaman blog saya tentang game:

shootinggameblog.wordpress.com

Untuk kode tentang permainan:

github.com/shootinggame82/Shooting-game-v3

Shooting game adalah x target yang bersifat wireless, masing-masing target memiliki sensor getaran yang mendeteksi getaran yang didapat saat terkena pukulan. Sensor nirkabel adalah chip Atmega328 (chip Arduino Uno) dan memiliki baterai Li-Po isi ulang.

Kontroler Utama untuk game ini dikendalikan oleh Arduino dan Serial dikendalikan dari Raspberry Pi.

Jadi bagaimana game ini bekerja? Nah itu 3 mode permainan:

Quicktime: Mainkan putaran X dan tembak secepat mungkin pada setiap target.

Timemode: Menembak sebanyak mungkin target dalam X detik.

Rapidfire: Tembak tembakan X pada waktu tercepat.

Sistem menggunakan pemancar NRF24L01 untuk mendapatkan jarak yang baik dari pengontrol utama. Mereka bekerja pada 2,6 GHz (Sama seperti WiFi berjalan)

Dalam proyek saya sebelumnya saya telah menggunakan Piezo untuk getaran, tapi sekarang Saklar Sensor Getaran digunakan. Tapi Anda masih bisa menggunakan Piezo jika Anda telah membuat versi lama saya dari game ini.

Gim ini memiliki layar sentuh Raspberry Pi 7 yang menampung sistem web yang Anda kendalikan melalui gim. Printer terminal mencetak hasilnya.

Perlengkapan

Untuk pemancar:

  • X Atmega328 dengan Arduino Bootloader (Tergantung berapa banyak target)
  • Saklar Sensor Getaran X
  • X Biru Led
  • X Hijau Led
  • X Merah Led
  • Baterai Li-Po X 3.7v
  • Modul Pengisi Daya Li-Po X FC-75 (Atau model lain)
  • Kapasitor X 100 uF
  • X Kasus untuk sensor
  • X LD1117V33 (Membuat aman 3,3 V ke pemancar)
  • Modul X NRF24L01
  • X x 3 220 Ohm Resistor (3 diperlukan untuk satu target)
  • Kristal X 16 MHz
  • X x 2 Unplorized Capacitors 22 pF (2 diperlukan untuk satu target)

Untuk Arduino utama:

  • 1 Arduino (Nano atau Uno direkomendasikan, harus memiliki USB)
  • 1 Modul NRF24L01
  • 1 10 uF kapasitor

Untuk raspberry Pi:

  • Raspberry Pi (saya menggunakan 3B)
  • Layar Sentuh 7"
  • ATXRaspi (Opsional tetapi modul tombol daya yang bagus)
  • RTCRaspi (Opsional tetapi modul RTC yang bagus untuk menyimpan waktu dan tanggal)
  • Printer termal (Opsional tetapi diperlukan untuk dapat mencetak)
  • Pemindai kode batang (versi USB yang berfungsi seperti keyboard, Opsional)
  • Daya 5V bagus (saya menggunakan USB 12v lama dengan daya 2,5 A)

Hal-hal lain:

  • Daya 12v (saya punya satu di 12 Ah)
  • Soket jaringan (Memudahkan untuk terhubung ke Jaringan)
  • Kabel

Langkah 1: Sensor Nirkabel

Sensor Nirkabel
Sensor Nirkabel
Sensor Nirkabel
Sensor Nirkabel
Sensor Nirkabel
Sensor Nirkabel

Mari kita mulai membuat sensornya. Saya menggunakan 4 sensor untuk game ini. Tetapi Anda dapat dengan mudah menambahkan lebih banyak sensor. Sensor berkomunikasi dengan 4 kode angka ketika sistem utama mengirimkan kode dengan fungsi apa sensor dengan kode yang tepat akan menyala dan siap untuk target. Lampu biru adalah untuk menginformasikan bahwa itu adalah target yang akan Anda tuju.

Kami juga memiliki led hijau dan merah. Hijau selalu menyala untuk menginformasikan bahwa sensor aktif. Merah hanya akan menyala ketika baterai kurang di bawah 3.1V (menggunakan fungsi bawaan dalam chip untuk menghitung berapa banyak yang ada di baterai.

Sensor getaran terhubung ke pin analog dan membaca nilainya. Ketika nilainya turun, sensor menangkap getaran dan di situlah kami mencatat pukulan.

Target memiliki fungsi failsafe, yang jika Anda tidak memukul dalam X detik (default adalah 15 detik) atau jika transmisi tidak dapat dilakukan dalam mereka akan kembali ke posisi awal.

Saya tidak akan menjelaskan bagaimana Anda akan memasang kabel, periksa lembaran listrik untuk melihat bagaimana Anda akan melakukannya. Satu hal yang tidak ada di dalamnya, adalah baterai, sakelar daya, dan pengisi daya. Terserah Anda untuk memutuskan bagaimana Anda menginginkannya.

PENTING TENTANG Modul NRF24L+:

Ini bisa menyakitkan di … untuk membuatnya stabil, dikombinasikan dengan kekuatan dan isolasi yang baik di sekitarnya, dan kode yang Anda buat untuk membuatnya bekerja. Bagi saya kapasitor 10 uF akan memberi saya koneksi yang stabil dan baik, tetapi silakan coba terlebih dahulu jika Anda membutuhkan misalnya kapasitor 100 uF. Bungkus juga dengan foil plastik pertama dan kemudian aluminium foil untuk melindunginya dari gangguan

Juga di kode, data rate yang Anda butuhkan tidak lebih dari 250 Kb sehingga tidak akan menjadi masalah. Tapi PA: myRadio.setPALevel(RF24_PA_MIN);

Dalam kode yang saya setel ke MIN (Ini selama pengujian), ini adalah yang terendah dan tidak akan menggunakan begitu banyak daya, tetapi jangkauannya tidak akan terlalu lama. Jika Anda mendapatkan daya yang stabil dan baik untuk mereka, Anda dapat naik ke RF24_PA_MAX untuk mendapatkan jangkauan terjauh, TETAPI mereka membutuhkan daya yang stabil GOOOOOD untuk itu. Coba juga LOW AND HIGH (Ubah teks MAX saja) untuk melihat apakah Anda mendapatkan komunikasi yang baik. Anda juga akan mendapatkan jangkauan yang baik pada RENDAH dan TINGGI kecuali Anda akan menjadi penembak jitu

Juga jaga jarak pemancar setidaknya satu meter, untuk menutup dapat membuat sinyal buruk

Uji komunikasi dengan beberapa contoh ping di Perpustakaan NRF24 (Tautan di GitHub)

Dalam kode, Anda perlu menetapkan nomor identifikasi unik untuk target itu:

int targID = 3401; //Ini adalah ID targetnya

int ID kirim = 2401; //Ini adalah ID tanggapan

Ada juga 3 fungsi DEFINE:

#definisikan DEBUG

#definisikan BATERAI

#define SHAKE //JIKA SHAKE SWITCH DIGUNAKAN BUKAN PIEZO LAMA

DEBUG:

Selama pengujian ini baik untuk didefinisikan. Tetapi ketika Anda membuatnya tersedia, jangan mengaktifkannya.

BATERAI:

Jika Anda tidak ingin memiliki pemeriksa baterai untuk target, Anda harus menghapus definisi ini.

MENGGOYANG:

Jika Anda telah membangun versi lama saya, Anda memiliki sensor piezo, lalu hapus ini untuk mendapatkan kode yang benar untuknya.

Chip ATMEGA328

Alih-alih Arduino nano, saya memutuskan untuk menggunakan chip ATMEGA328 (dengan boot loader Uno), mereka mudah diprogram, cukup lepaskan chip dari Arduino Uno dan tambahkan chip ini dan unggah kode. Periksa skema listrik tentang cara membangun target.

Kode

Saya telah menulis kode dengan PlatformIO alih-alih Arduino IDE. Ini adalah perangkat lunak yang lebih baik untuk diprogram. Jadi kodenya sedikit berbeda. Saya sarankan untuk menggunakan perangkat lunak ini sebagai gantinya.

Kotak Target & Pemancar

Saya telah memasang sensor dan led biru pada target, dan dengan kabel phono 3,5 mm pada 2 m saya menghubungkannya bersama di kotak pemancar yang menampung chip atmega, pengisi daya baterai dan led hijau & merah. Ini untuk melindunginya agar tidak terkena peluru baja.

Langkah 2: Pengontrol Game

Pengendali Permainan
Pengendali Permainan
Pengendali Permainan
Pengendali Permainan
Pengendali Permainan
Pengendali Permainan
Pengendali Permainan
Pengendali Permainan

Hal berikutnya yang perlu kita lakukan adalah membuat pengontrol untuk sensor. Ini adalah Arduino yang menggunakan modul NRF24L01 untuk berkomunikasi dengan sensor. Tidak ada lagi. Arduino kemudian terhubung dengan USB di raspberry pi untuk bekerja.

Ini adalah cara kerjanya. Ia menggunakan serial untuk mengetahui apa yang harus dilakukan. Pi akan mengirimkan perintah serial. Pertama selama penyiapan, ia mengirimkan berapa banyak target yang telah Anda tambahkan, dan nomor identifikasi target. Kemudian akan melakukan fungsi tes dan menginformasikan raspberry pi jika mereka berkomunikasi satu sama lain.

Saat Anda memainkan game, itu akan mengirim dari pi jenis permainan apa dan berapa banyak putaran / pukulan yang akan digunakan. Itu dia.

Dimungkinkan untuk menggunakan modul NRF24L01 di raspberry pi, tetapi bagi saya Arduino adalah pilihan yang lebih baik karena saya tidak pernah menggunakannya di raspberry jadi saya tidak tahu seberapa baik mereka bekerja dalam jangka panjang

Ada modul daya yang menggunakan 5 v untuk membuat daya stabil yang benar ke pemancar. Anda dapat menggunakannya dengan Anda Arduino (Lihat gambar) namanya adalah Papan Modul Adaptor Soket

Saat Anda bermain, target akan diaktifkan secara acak satu per satu. Ketika satu dipukul, yang lain akan diaktifkan.

Selama pengujian Anda dapat mengaktifkan #DEFINE DEBUG untuk melihat cara kerjanya, tetapi tidak saat Anda menggunakannya di komputer pi, maka itu tidak akan berfungsi.

Unduh kode di halaman GitHub.

Langkah 3: Raspberry Pi

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

Sekarang kita telah sampai pada Raspberry Pi.

Saya telah menambahkan beberapa fungsi tambahan sehingga saya dapat memiliki tombol daya. ATXRaspi 3 adalah modul yang hebat, Anda dapat menghidupkan, mematikan, dan mem-boot ulang pi dengan sebuah tombol. Juga RTCRaspi untuk menyimpan waktu dan tanggal pada pi. Juga memungkinkan untuk hanya memasang kabel jaringan jika saya perlu melakukan beberapa pembaruan pada sistem. Anda akan menemukannya di Lowpowerlab

Printer Thermal yang akan Anda temukan di sparkfun dan pembaca kode batang tersedia di amazon.

Komputer Pi berjalan dalam mode kios sehingga browser akan terbuka saat start. Pertama-tama Anda harus memiliki server web dengan PHP 7 dan mysql di komputer pi. (Ada banyak panduan di web untuk ini)

HARAP DICATAT: jika Anda akan menggunakan printer termal dengan raspberry pi yang memiliki bluetooth bawaan, Anda harus menonaktifkannya terlebih dahulu

Skrip python membutuhkan pyserial dan Anda menginstalnya: Sudo apt-get install python-serial

Untuk membuat mysql berfungsi, instal berikut:

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

suso apt-get install pymysql

Sekarang Anda dapat mengontrol Arduino Anda melalui serial dan juga memperbarui database mysql.

Langkah selanjutnya adalah membuat skrip python untuk terhubung ke mysql.

Di ketiga skrip python ubah koneksi ke database mysql Anda.

Langkah selanjutnya adalah membuat skrip python berjalan di awal.

Ada tiga skrip python.game.py adalah yang paling penting, yang memegang fungsi permainan.print.py ini hanya diperlukan jika Anda akan menggunakan printer termal untuk mencetak.ean.py hanya diperlukan jika Anda akan menggunakan pemindai kode batang.

Untuk membuatnya autostart saya edit:

sudo nano /etc/rc.local

dan tambahkan berikut ini di bagian bawah sebelum exit 0:

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

Harap ubah ke tempat yang benar untuk skrip python Anda dan jangan lupa tanda & di akhir

Sekarang kita perlu membuat mode kios untuk browser web, pertama-tama hapus kursor:

sudo apt-get install unclutter

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

sekarang di file itu temukan dan komentari:

@xscreensaver -no-splash # komentar baris ini untuk menonaktifkan screensaver

Di bawah itu tambahkan:

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

Langkah selanjutnya untuk menghapus semua teks boot dan lainnya juga menambahkan layar boot Anda sendiri di sini adalah panduan cepat:

sudo nano /boot/config.txt dan di bagian bawah adddisable_splash=1

Hapus pesan teks di bawah gambar splash:

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

Temukan dan hapus (atau beri komentar):

message_sprite = Sprite();message_sprite. SetPosition(lebar_layar * 0,1, tinggi_layar * 0,9, 10000);

dan:

my_image = Gambar. Teks(teks, 1, 1, 1);message_sprite. SetImage(gambar_saya);

Sekarang kami menghapus pesan boot:

sudo nano /boot/cmdline.txt

ganti “console=tty1” dengan “console=tty3”

dan di akhir baris tambahkan:

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

Dan ganti percikan pi dengan milik Anda sendiri:

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

Sekarang Anda memiliki layar boot kustom Anda sendiri untuk game Anda. Komputer pi Anda sekarang siap untuk menangani permainan. Jadi, lanjutkan ke langkah berikutnya!

Langkah 4: Siapkan Game

Pada titik ini Anda sekarang telah membuat game.

Pertama yang perlu Anda lakukan adalah men-setup webbsystem. Unggah database ke server mysql Anda. File ada di folder include dan diberi nama database.sql

Langkah selanjutnya adalah mengedit file konfigurasi, Anda menemukannya di folder include nama config.phpUbah informasi login database sehingga skrip akan berfungsi.

Sistem web berbasis multi bahasa dan ditulis dalam bahasa Inggris. Ada terjemahan bahasa Swedia yang tersedia. Untuk membuat lebih banyak bahasa, Anda memerlukan perangkat lunak bernama Poedit.

Untuk menambahkan lebih banyak bahasa ke sistem web, Anda perlu mengedit i18n_setup.php dan menambahkan array:

return in_array($locale, ['en_US', 'sv_SE']); (Baris 23)

Juga untuk mengubah bahasa default Anda perlu mengubah pada baris 27: $lang = 'en_US'; ubah en_US ke bahasa Anda.

file bahasa harus ditempatkan di locales/LANGCODE/LC_MESSAGES/ dan diberi nama main.mo (Ubah kode bahasa ke bahasa Anda)

untuk mengubah keyboard di file selectplayers.php Anda mengubah bahasa: "en", //en untuk bahasa Inggris sv untuk bahasa Swedia tata letak: 'qwerty', //qwerty untuk bahasa Inggris swedia-qwerty untuk bahasa Swedia

Anda menemukannya di jalur 218 & 219

Bahasa yang tersedia ada di folder: assets/js/keyboard/languages & layouts ada di assets/js/keyboard/layouts dan tambahkan file yang benar ke baris 118 dan 119 (ganti yang Anda temukan di sana sekarang)

Tambahkan target

Untuk menambahkan target, Anda pergi ke localhost/admin/ dan klik tambahkan target.

Anda perlu menambahkan nama untuk target dan ID target unik dan ID kirim, tambahkan sebanyak mungkin target yang Anda miliki.

Tambahkan game

Anda juga perlu menambahkan beberapa game. Buka localhost/admin/ dan klik tambahkan game

Anda perlu menambahkan nama permainan, deskripsi, min dan max pemain jenis permainan apa, juga seberapa keras permainannya antara 1 hingga 5. Dan bagaimana permainannya, jadi untuk permainan rapidfire Anda menambahkan berapa banyak hit (contoh 30) untuk quickdraw berapa ronde (misalnya 8) dan untuk waktu berapa lama mereka akan bermain (misalnya 60 untuk satu menit)

Memulai permainan

Saat Anda menyalakan game, itu akan melakukan pengujian target. Jadi target harus ada sebelum Anda memulai sistem utama. Jika semua lulus tes, Anda dapat menggunakan sistem, tetapi jika tidak, Anda tidak dapat menggunakannya. Ini akan mencoba untuk berkomunikasi sampai mereka mendapat tanggapan.

Semoga beruntung

Yah itu saja, untuk dukungan dan info tentang pembaruan kode, ikuti halaman Facebook saya untuk game ini, agar saya dapat memberikan respons dengan cepat. Anda akan menemukan link di atas sini.

Direkomendasikan: