Daftar Isi:
- Perlengkapan
- Langkah 1: Sensor Nirkabel
- Langkah 2: Pengontrol Game
- Langkah 3: Raspberry Pi
- Langkah 4: Siapkan Game
Video: Game Menembak Arduino V3: 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-31 10:21
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
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
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
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:
ARDUINO + Game Menembak SCRATCH: 6 Langkah
ARDUINO + SCRATCH Shooting Game: Simpan kue Anda !!!Ini dalam bahaya. Ada empat lalat yang mendekatinya. Anda hanya punya waktu 30 detik untuk menembak lalat dan menyimpan kue Anda
Game Menembak Laser (Star Wars): 5 Langkah
Game Menembak Laser (Star Wars): Pada artikel ini saya akan membagikan proyek perang bintang berbasis arduino yang dapat Anda buat dengan anggaran terbatas. Proyek ini adalah permainan menembak laser yang cocok untuk Anda sebagai produk buatan sendiri. Proyek ini terdiri dari 2 sub proyek yaitu pembuatan blaster dari karton
Menembak Ring Ping-pong: 4 Langkah
Pemotretan Ring Ping-pong: (1) Proyek Kecil Menggunakan Arduino Uno untuk mengontrol Lampu LED.(2) Gunakan 2 lampu LED warna berbeda, Anda dapat mengubah semua warna yang Anda suka.(3) Anda Dapat menggunakan saluran USB untuk menyalakan ini cahaya. (4) Sirkuit ini untuk melatih keterampilan menembak Anda
Arduino Rhythm Game Controller (untuk Game Saya Sendiri): 6 Langkah
Arduino Rhythm Game Controller (untuk My Own Game): Dalam instruksi ini saya akan menunjukkan kepada Anda bagaimana saya membangun Rhythm Game Controller ini dari awal. Ini melibatkan keterampilan pengerjaan kayu dasar, keterampilan pencetakan 3d dasar dan keterampilan menyolder dasar. Anda mungkin dapat membangun proyek ini dengan sukses jika Anda tidak memiliki
Pengontrol Game Arduino + Game Unity: 5 Langkah
Arduino Game Controller + Unity Game: Dalam instruksi ini saya akan menunjukkan kepada Anda cara membuat/memprogram pengontrol game arduino yang dapat terhubung ke unity