Mục lục:

Trò chơi bắn súng Arduino V3: 4 bước
Trò chơi bắn súng Arduino V3: 4 bước

Video: Trò chơi bắn súng Arduino V3: 4 bước

Video: Trò chơi bắn súng Arduino V3: 4 bước
Video: Sammy Báo đen ? #heroteam #heroteamshort #tiktoktrend 2024, Tháng bảy
Anonim
Image
Image
Trò chơi bắn súng Arduino V3
Trò chơi bắn súng Arduino V3
Trò chơi bắn súng Arduino V3
Trò chơi bắn súng Arduino V3
Trò chơi bắn súng Arduino V3
Trò chơi bắn súng Arduino V3

Trò chơi này dành cho bạn sử dụng airsoft hoặc co2 để bắn vào mục tiêu. Đó là một trò chơi.

Để biết thông tin cập nhật về trò chơi và hỗ trợ:

www.facebook.com/arduinoshooting/

Đối với trang blog của tôi về trò chơi:

shootinggameblog.wordpress.com

Để biết các mã về trò chơi:

github.com/shootinggame82/Shooting-game-v3

Trò chơi bắn súng là x mục tiêu không dây, mỗi mục tiêu có một cảm biến rung để cảm nhận độ rung khi bắn trúng. Các cảm biến không dây là chip Atmega328 (chip Arduino Uno) và có pin sạc Li-Po.

Bộ điều khiển chính cho trò chơi này được điều khiển bởi Arduino và được điều khiển nối tiếp từ Raspberry Pi.

Vậy trò chơi này hoạt động như thế nào? Có 3 chế độ chơi:

Quicktime: Chơi X vòng và bắn nhanh đến mức bạn có thể vào từng mục tiêu.

Chế độ thời gian: Bắn nhiều mục tiêu nhất có thể trong X giây.

Rapidfire: Bắn các phát X trong thời gian nhanh nhất.

Hệ thống chúng tôi NRF24L01 máy phát để có được một phân tán tốt từ bộ điều khiển chính. Chúng hoạt động trên 2,6 GHz (Giống như khi chạy WiFi)

Trong các dự án trước đây của tôi, tôi đã sử dụng Piezo để rung, nhưng bây giờ Công tắc cảm biến rung đã được sử dụng. Tuy nhiên, bạn vẫn có thể sử dụng Piezo nếu bạn đã tạo phiên bản cũ của trò chơi này.

Trò chơi có màn hình cảm ứng Raspberry Pi 7 chứa hệ thống web mà bạn điều khiển trò chơi thông qua một máy in đầu cuối in ra kết quả.

Quân nhu

Đối với máy phát:

  • X Atmega328 với Arduino Bootloader (Tùy thuộc vào số lượng mục tiêu)
  • Công tắc cảm biến rung X
  • X Led xanh lam
  • X Led xanh lục
  • X Led đỏ
  • Pin Li-Po X 3.7v
  • Mô-đun bộ sạc Li-Po X FC-75 (Hoặc kiểu khác)
  • Tụ điện X 100 uF
  • X Vỏ cho cảm biến
  • X LD1117V33 (Tạo 3,3 V an toàn cho máy phát)
  • Mô-đun X NRF24L01
  • X x 3 Điện trở 220 Ohm (cần 3 cho một mục tiêu)
  • Tinh thể X 16 MHz
  • X x 2 Tụ điện chưa được khai thác 22 pF (cần 2 tụ điện cho một mục tiêu)

Đối với Arduino chính:

  • 1 Arduino (khuyên dùng Nano hoặc Uno, cần có USB)
  • 1 Mô-đun NRF24L01
  • 1 tụ điện 10 uF

Đối với raspberry Pi:

  • Raspberry Pi (tôi đã sử dụng 3B)
  • Màn hình cảm ứng 7"
  • ATXRaspi (Tùy chọn nhưng là một mô-đun nút nguồn tốt)
  • RTCRaspi (Tùy chọn nhưng là một mô-đun RTC tốt để giữ thời gian và ngày tháng)
  • Máy in mối (Tùy chọn nhưng cần thiết để có thể in)
  • Máy quét mã vạch (phiên bản USB hoạt động như bàn phím, Tùy chọn)
  • Nguồn 5V tốt (Tôi sử dụng USB 12v cũ với nguồn 2,5 A)

Những thứ khác:

  • Nguồn 12v (tôi có một cái ở 12 Ah)
  • Ổ cắm mạng (Giúp dễ dàng kết nối với Mạng)
  • Cáp

Bước 1: Cảm biến không dây

Cảm biến không dây
Cảm biến không dây
Cảm biến không dây
Cảm biến không dây
Cảm biến không dây
Cảm biến không dây

Hãy bắt đầu chế tạo các cảm biến, tôi sử dụng 4 cảm biến cho trò chơi này. Nhưng bạn có thể dễ dàng thêm nhiều cảm biến hơn. Cảm biến được giao tiếp với mã 4 số khi hệ thống chính gửi mã có chức năng gì thì cảm biến có mã phù hợp sẽ sáng và sẵn sàng cho mục tiêu. Đèn màu xanh lam là để thông báo rằng đó là mục tiêu mà bạn sẽ đánh.

Chúng tôi cũng có một màu xanh lá cây và một màu đỏ. Màu xanh lá cây luôn sáng để thông báo rằng cảm biến đang bật. Màu đỏ sẽ chỉ sáng lên khi pin dưới 3,1V (nó sử dụng chức năng tích hợp trong chip để tính toán lượng pin còn lại.

Cảm biến rung được kết nối với chân analog và đọc giá trị của nó. Khi giá trị chìm xuống, cảm biến có rung động pic và đó là nơi chúng tôi ghi lại lần truy cập.

Mục tiêu có chức năng an toàn dự phòng, trong trường hợp bạn không bắn trúng trong X giây (mặc định là 15 giây) hoặc nếu việc truyền không thể thực hiện được, chúng sẽ quay trở lại vị trí bắt đầu.

Tôi sẽ không giải thích bạn đi dây như thế nào, hãy kiểm tra bảng điện để biết bạn sẽ làm như thế nào. Một thứ không có trên đó là pin, công tắc nguồn và bộ sạc. Điều đó là do bạn quyết định như thế nào bạn muốn nó.

NHẬP KHẨU VỀ Mô-đun NRF24L +:

Nó có thể là một khó khăn trong việc… làm cho chúng ổn định, kết hợp với nguồn điện tốt và sự cô lập xung quanh nó, và mã bạn sẽ làm cho chúng hoạt động. Đối với tôi tụ điện 10 uF sẽ cung cấp cho tôi kết nối ổn định và tốt, nhưng trước tiên hãy thử trong trường hợp bạn cần tụ điện 100 uF chẳng hạn. Cũng bọc chúng bằng lá nhựa đầu tiên và sau đó là giấy nhôm để bảo vệ chúng khỏi bị nhiễu

Cũng trong mã, tốc độ dữ liệu bạn không cần nhiều hơn 250 Kb vì vậy đó sẽ không phải là vấn đề. Nhưng PA: myRadio.setPALevel (RF24_PA_MIN);

Trong mã tôi đã đặt thành MIN (Đây là trong quá trình thử nghiệm), đây là mức thấp nhất và sẽ không sử dụng quá nhiều năng lượng, nhưng phạm vi sẽ không dài như vậy. Nếu bạn có nguồn điện ổn định và tốt cho họ, bạn có thể đi tới RF24_PA_MAX để có được phạm vi xa nhất, NHƯNG họ cần nguồn điện ổn định của GOOOOOD cho điều đó. Cũng thử LOW AND HIGH (Chỉ thay đổi văn bản MAX) để xem bạn có giao tiếp tốt hay không. Ngoài ra, bạn sẽ có được tầm bắn tốt ở mức THẤP và CAO trừ khi bạn định trở thành một tay súng bắn tỉa

Ngoài ra, giữ các bộ phát cách nhau ít nhất một mét, để đóng có thể làm cho tín hiệu xấu

Kiểm tra giao tiếp với một số ví dụ ping trong Thư viện NRF24 (Liên kết trên GitHub)

Trong mã, bạn cần đặt số nhận dạng duy nhất cho mục tiêu đó:

int targID = 3401; // Đây là ID mục tiêu

int sendID = 2401; // Đây là ID phản hồi

Ngoài ra còn có 3 chức năng DEFINE:

#define GỢI Ý

#define PIN

#define SHAKE // NẾU SỬ DỤNG CÔNG TẮC SHAKE TRONG BƯỚC CỦA PIEZO CŨ

GỢI Ý:

Trong quá trình kiểm tra, điều này là tốt để xác định. Nhưng khi bạn cung cấp chúng, đừng kích hoạt nó.

PIN:

Nếu bạn không muốn có công cụ kiểm tra pin cho các mục tiêu, bạn cần phải loại bỏ xác định này.

LẮC:

Nếu bạn đã xây dựng phiên bản cũ của tôi, bạn có cảm biến piezo, thì hãy xóa cái này để nhận mã chính xác cho chúng.

Chip ATMEGA328

Thay vì Arduino nano, tôi quyết định sử dụng chip ATMEGA328 (với bộ nạp khởi động Uno), chúng rất đơn giản để lập trình chỉ cần tháo chip khỏi Arduino Uno và thêm chip này và tải lên mã. Kiểm tra sơ đồ điện về cách xây dựng các mục tiêu.

Mật mã

Tôi đã viết mã bằng PlatformIO thay vì Arduino IDE. Đó là một phần mềm tốt hơn để lập trình. Vì vậy, mã có một chút khác biệt. Tôi khuyên bạn nên sử dụng phần mềm này thay thế.

Hộp mục tiêu & máy phát

Tôi đã gắn cảm biến và đèn led màu xanh trên mục tiêu, và với một cáp phono 3, 5 mm trên 2m, tôi kết nối nó với nhau trong hộp bộ phát có chứa chip atmega, bộ sạc pin và đèn led màu xanh lá cây & đỏ. Điều này là như vậy để bảo vệ nó khỏi bị trúng đạn thép.

Bước 2: Bộ điều khiển trò chơi

Bộ điều khiển trò chơi
Bộ điều khiển trò chơi
Bộ điều khiển trò chơi
Bộ điều khiển trò chơi
Bộ điều khiển trò chơi
Bộ điều khiển trò chơi
Bộ điều khiển trò chơi
Bộ điều khiển trò chơi

Điều tiếp theo chúng ta cần làm là chế tạo bộ điều khiển cho các cảm biến. Đó là một Arduino sử dụng mô-đun NRF24L01 để giao tiếp với các cảm biến. Không có gì khác. Sau đó Arduino được kết nối với USB trong raspberry pi để hoạt động.

Đây là cách nó sẽ hoạt động. Nó sử dụng nối tiếp để biết phải làm gì. Pi sẽ gửi các lệnh nối tiếp. Đầu tiên trong quá trình thiết lập, nó sẽ gửi bao nhiêu mục tiêu bạn đã thêm và số nhận dạng mục tiêu. Sau đó, nó sẽ thực hiện chức năng kiểm tra và thông báo cho raspberry pi nếu chúng có giao tiếp với nhau.

Khi bạn chơi trò chơi, nó sẽ gửi từ pi loại trò chơi nào và sử dụng bao nhiêu vòng / lượt truy cập. Đó là nó.

Có thể sử dụng các mô-đun NRF24L01 trong raspberry pi, nhưng đối với tôi Arduino là một lựa chọn tốt hơn, tội lỗi là tôi không bao giờ sử dụng chúng trong raspberry nên tôi không biết chúng hoạt động tốt như thế nào về lâu dài

Có một mô-đun công suất sử dụng 5 v để tạo nguồn điện ổn định chính xác cho máy phát. Bạn có thể sử dụng chúng với Arduino của bạn (Xem hình) tên là Socket Adapter Module Board

Khi bạn chơi các mục tiêu sẽ được kích hoạt ngẫu nhiên từng cái một. Khi một viên bị bắn trúng, một viên khác sẽ được kích hoạt.

Trong quá trình kiểm tra, bạn có thể kích hoạt #DEFINE DEBUG để xem nó hoạt động như thế nào, nhưng không phải khi bạn sử dụng nó trong máy tính pi, nó sẽ không hoạt động sau đó.

Tải xuống mã trên trang GitHub.

Bước 3: Raspberry Pi

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

Bây giờ chúng ta đã đến với Raspberry Pi.

Tôi đã thêm một số chức năng bổ sung để tôi có thể có nút nguồn. ATXRaspi 3 là một mô-đun tuyệt vời, bạn có thể bật, tắt và khởi động lại pi bằng một nút. Cũng là một RTCRaspi để giữ ngày và giờ trên số pi. Cũng có thể làm cho nó có thể chỉ cần cắm một cáp mạng trong trường hợp tôi cần thực hiện một số cập nhật trên hệ thống. Bạn sẽ tìm thấy chúng trên Lowpowerlab

Máy in nhiệt bạn sẽ tìm thấy trên sparkfun và máy đọc mã vạch có sẵn trên amazon.

Máy tính Pi chạy ở chế độ kiosk nên trình duyệt sẽ mở ra khi khởi động, trước hết bạn cần có một máy chủ web với PHP 7 và mysql trên máy tính pi. (Có rất nhiều hướng dẫn trên web cho việc này)

XIN LƯU Ý: nếu bạn định sử dụng máy in nhiệt với raspberry pi có tích hợp bluetooth, bạn cần phải tắt bluetooth đó trước

Tập lệnh python cần pyserial và bạn cài đặt nó: sudo apt-get install python-serial

Để làm cho mysql hoạt động, hãy cài đặt như sau:

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

suso apt-get cài đặt pymysql

Bây giờ bạn có thể điều khiển Arduino qua nối tiếp và cũng cập nhật cơ sở dữ liệu mysql.

Bước tiếp theo là tạo tập lệnh python để kết nối với mysql.

Trong cả ba tập lệnh python, hãy thay đổi kết nối đến cơ sở dữ liệu mysql của bạn.

Bước tiếp theo là làm cho tập lệnh python chạy khi bắt đầu.

Có ba tập lệnh python..game.py là bản nhập quan trọng nhất trong số đó, một bản chứa hàm trò chơi.print.py điều này chỉ cần thiết nếu bạn định sử dụng máy in termal để print.ean.py chỉ cần thiết nếu bạn sẽ sử dụng máy quét mã vạch.

Để làm cho chúng tự khởi động, tôi chỉnh sửa:

sudo nano /etc/rc.local

và thêm phần sau ở cuối trước khi thoát 0:

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

Vui lòng thay đổi vị trí chính xác cho tập lệnh python của bạn và đừng quên dấu & ở cuối

Bây giờ chúng ta cần tạo chế độ kiosk cho trình duyệt web, trước tiên hãy xóa con trỏ:

sudo apt-get install unclutter

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

bây giờ trong tệp đó tìm và nhận xét:

@xscreensaver -no-splash # bình luận dòng này để tắt bảo vệ màn hình

Bên dưới có thêm:

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

Bước tiếp theo để xóa tất cả văn bản khởi động và những thứ cũng thêm màn hình khởi động của riêng bạn đây là hướng dẫn nhanh:

sudo nano /boot/config.txt và ở dưới cùng adddisable_splash = 1

Xóa tin nhắn văn bản dưới hình ảnh giật gân:

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

Tìm và xóa (hoặc bình luận):

message_sprite = Sprite (); message_sprite. SetPosition (screen_width * 0.1, screen_height * 0.9, 10000);

và:

my_image = Image. Text (text, 1, 1, 1); message_sprite. SetImage (my_image);

Bây giờ chúng tôi xóa thông báo khởi động:

sudo nano /boot/cmdline.txt

thay thế “console = tty1” bằng “console = tty3”

và ở cuối dòng thêm:

giật gân yên tĩnh plymouth.ignore-serial-console logo.nologo vt.global_cursor_default = 0

Và thay thế pi splash bằng của riêng bạn:

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

Bây giờ bạn có màn hình khởi động tùy chỉnh của riêng mình cho trò chơi của bạn. Máy tính pi của bạn hiện đã sẵn sàng để xử lý trò chơi. Vì vậy, hãy chuyển sang bước tiếp theo!

Bước 4: Thiết lập trò chơi

Tại thời điểm này, bạn đã tạo trò chơi.

Đầu tiên bạn cần làm là thiết lập hệ thống web. Tải cơ sở dữ liệu lên máy chủ mysql của bạn. Tệp nằm trong thư mục bao gồm và có tên là database.sql

Bước tiếp theo là chỉnh sửa tập tin cấu hình, bạn tìm nó trong tên thư mục bao gồm config.php Thay đổi thông tin đăng nhập cơ sở dữ liệu để tập lệnh hoạt động.

Hệ thống web dựa trên đa ngôn ngữ và được viết bằng tiếng Anh. Đã có bản dịch tiếng Thụy Điển. Để tạo nhiều ngôn ngữ hơn, bạn cần một phần mềm có tên là Poedit.

Để thêm nhiều ngôn ngữ hơn vào hệ thống web, bạn cần chỉnh sửa i18n_setup.php và thêm vào mảng:

return in_array ($ locale, ['en_US', 'sv_SE']); (Dòng 23)

Ngoài ra, để thay đổi ngôn ngữ mặc định, bạn cần thay đổi ở dòng 27: $ lang = 'en_US'; thay đổi en_US thành ngôn ngữ của bạn.

các tệp ngôn ngữ phải được đặt bằng ngôn ngữ / LANGCODE / LC_MESSAGES / và được đặt tên là main.mo (Thay đổi mã ngôn ngữ sang ngôn ngữ của bạn)

để thay đổi bàn phím trong tệp selectplayers.php bạn thay đổi ngôn ngữ: "en", // en cho sv tiếng anh cho bố cục tiếng Thụy Điển: 'qwerty', // qwerty cho tiếng anh tiếng Thụy Điển-qwerty cho tiếng Thụy Điển

Bạn tìm thấy chúng trên dòng 218 & 219

Các ngôn ngữ có sẵn trong thư mục: asset / js / keyboard / Languages & layouts nằm trong asset / js / keyboard / layouts và thêm các tệp chính xác vào dòng 118 và 119 (thay thế tệp bạn tìm thấy ở đó ngay bây giờ)

Thêm mục tiêu

Để thêm mục tiêu, bạn vào localhost / admin / và nhấp vào thêm mục tiêu.

Bạn cần thêm tên cho mục tiêu và ID mục tiêu duy nhất và gửi ID, thêm càng nhiều mục tiêu mà bạn có.

Thêm trò chơi

Bạn cũng cần thêm một số trò chơi. Truy cập localhost / admin / và nhấp vào thêm trò chơi

Bạn cần thêm tên cho trò chơi, mô tả, người chơi tối thiểu và tối đa loại trò chơi nào, cũng như mức độ khó của trò chơi từ 1 đến 5. Và trò chơi như thế nào, vì vậy đối với trò chơi quickfire, bạn thêm bao nhiêu lượt truy cập (ví dụ 30) rút nhanh bao nhiêu vòng (ví dụ 8) và hẹn giờ họ sẽ chơi trong bao lâu (ví dụ 60 cho một phút)

Bắt đầu trò chơi

Khi bạn tăng sức mạnh cho trò chơi, nó sẽ thực hiện kiểm tra mục tiêu. Vì vậy, các mục tiêu cần phải được bật trước khi bạn khởi động hệ thống chính. Nếu tất cả vượt qua bài kiểm tra, bạn có thể sử dụng hệ thống, nhưng nếu không, bạn không thể sử dụng nó. Nó sẽ cố gắng liên lạc cho đến khi họ nhận được phản hồi.

Chúc may mắn

Đó là về nó, để được hỗ trợ và thông tin về cập nhật trong mã, vui lòng theo dõi trang Facebook của tôi cho trò chơi này, vì vậy tôi có thể cung cấp cho bạn phản hồi nhanh chóng. Bạn sẽ tìm thấy các liên kết ở trên cùng ở đây.

Đề xuất: