תוכן עניינים:

משחק יריות Arduino V3: 4 שלבים
משחק יריות Arduino V3: 4 שלבים

וִידֵאוֹ: משחק יריות Arduino V3: 4 שלבים

וִידֵאוֹ: משחק יריות Arduino V3: 4 שלבים
וִידֵאוֹ: איך ליצור משחק יריות ב12 דקות! בתוכנה חופשית 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

משחק יריות הוא x מטרות שהן אלחוטיות, לכל מטרה יש חיישן רטט שמרגיש רטט שמתקבל בעת פגיעה. החיישנים האלחוטיים הם שבב Atmega328 (שבב Arduino Uno) ויש להם סוללת Li-Po נטענת.

הבקר הראשי למשחק זה נשלט על ידי Arduino והוא נשלט באופן סידורי מ- Raspberry Pi.

אז איך המשחק הזה עובד? ובכן זה 3 מצבי משחק:

זמן מהיר: שחק X סיבובים וירה כל כך מהר שאתה יכול על כל מטרה.

מצב זמן: לירות כמה שיותר מטרות ב- X שניות.

Rapidfire: צילום X יריות בזמן המהיר ביותר.

המערכת מספקת לנו משדרי NRF24L01 כדי להתרחק טוב מהבקר הראשי. הם עובדים על 2.6 גיגה -הרץ (זהה לזה ש- WiFi פועל)

בפרויקטים שלי בעבר השתמשתי ב- Piezo לרטט, אך כעת נעשה שימוש במתג חיישן רטט, אך עדיין תוכל להשתמש ב- Piezo אם יצרת את הגרסה הישנה שלי למשחק זה.

למשחק מסך מגע של Raspberry Pi 7 המחזיק את מערכת האינטרנט שבה אתה שולט במשחק. מדפסת מסוף מדפיסה את התוצאות.

אספקה

למשדרים:

  • X Atmega328 עם מטען אתחול Arduino (תלוי בכמה מטרות)
  • מתג חיישן רטט X
  • X לד כחול
  • X לד ירוק
  • X LED אדום
  • סוללת Li-Po X 3.7v
  • מודול מטען 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)
  • מודול NRF24L01
  • קבל 1 uF

עבור פטל פטל:

  • פטל פאי (השתמשתי ב -3 B)
  • מסך מגע בגודל 7 אינץ '
  • ATXRaspi (אופציונלי אך מודול לחצן הפעלה טוב)
  • RTCRaspi (אופציונלי אך מודול RTC טוב לשמירת זמן ותאריך)
  • מדפסת טרמיס (אופציונלי אך צריך להדפיס)
  • סורק ברקוד (גרסת USB שעובדת כמו מקלדת, אופציונלי)
  • הספק טוב של 5V (השתמשתי ב- USB ישן של 12V עם הספק של 2.5A)

דברים אחרים:

  • כוח 12V (יש לי אחד ב 12 Ah)
  • שקע רשת (קל להתחבר לרשת)
  • כבלים

שלב 1: החיישנים האלחוטיים

החיישנים האלחוטיים
החיישנים האלחוטיים
החיישנים האלחוטיים
החיישנים האלחוטיים
החיישנים האלחוטיים
החיישנים האלחוטיים

נתחיל לייצר את החיישנים. אני משתמש ב -4 חיישנים למשחק הזה. אבל אתה יכול בקלות להוסיף חיישנים נוספים. החיישנים מתקשרים עם קוד 4 מספרים כאשר המערכת הראשית שולחת את הקוד עם איזו פונקציה החיישן עם הקוד הנכון יידלק ויהיה מוכן למטרה. האור הכחול הוא להודיע שזוהי המטרה שאתה עומד לפגוע בה.

יש לנו גם ירוק ואדום. הירוק תמיד נדלק כדי להודיע שהחיישן דולק. האדום יידלק רק כאשר הסוללה פחותה מ- 3.1V (הוא משתמש בפונקציה המובנית בשבב כדי לחשב כמה יש בסוללה.

חיישן הרטט מחובר לסיכה האנלוגית וקורא את ערכו. כאשר הערך שוקע, לחיישן יש תמונת רטט ושם אנו רושמים את הלהיט.

למטרה יש פונקציה כושלת, שאם אתה לא מכה תוך X שניות (ברירת המחדל היא 15 שניות) או שאם לא ניתן לבצע את השידור הם יחזרו למיקום ההתחלה.

אני לא מתכוון להסביר כיצד אתה מתכוון לחבר, בדוק את גיליון החשמל כדי לראות כיצד אתה עומד לעשות זאת. הדבר היחיד שאין עליו הוא הסוללה, מתג ההפעלה והמטען. זה תלוי בך להחליט איך אתה רוצה את זה.

חשוב לגבי מודול NRF24L+:

זה יכול להיות כאב ב … כדי לגרום להם להיות יציבים, בשילוב עם כוח טוב ובידוד סביבו, והקוד שתגרום להם לעבוד. בשבילי קבל 10 uF ייתן לי חיבור יציב וטוב, אבל אנא נסה קודם כל אם אתה צריך למשל קבל 100 uF. עטפו אותם גם ברדיד פלסטיק ראשון ולאחר מכן ברדיד אלומיניום כדי להגן עליהם מפני הפרעה

גם בקוד, קצב הנתונים שאתה לא צריך יותר מ -250 Kb כך שזו לא תהיה הבעיה. אבל הרשות הפלסטינית: myRadio.setPALevel (RF24_PA_MIN);

בקוד שהגדרתי ל- MIN (זה במהלך הבדיקה), הוא הנמוך ביותר ולא ישתמש כל כך הרבה כוח, אבל הטווח לא יהיה כל כך ארוך. אם קיבלת להם כוח יציב וטוב, תוכל לעלות ל- RF24_PA_MAX כדי להשיג את הטווח הארוך ביותר, אבל הם צריכים כוח יציב של GOOOOOD בשביל זה. נסה גם LOW ו- HIGH (שנה טקסט MAX בלבד) כדי לראות אם אתה מקבל תקשורת טובה. כמו כן תקבל טווח טוב ב- LOW ו- HIGH אלא אם כן אתה עומד להיות צלף

שמור גם על המשדרים במרחק של מטר אחד מהשני, כדי לסגור אותו יכול לגרום לאות רע

בדוק את התקשורת עם דוגמה מסוימת של פינג בספריית NRF24 (קישור ב- GitHub)

בקוד עליך להגדיר את מספר הזיהוי הייחודי לאותו יעד:

int targID = 3401; // זהו מזהה היעד

int sendID = 2401; // זהו מזהה התגובה

יש גם 3 פונקציות DEFINE:

#define DEBUG

#הגדר סוללה

#define SHAKE // IF SHITE SWITCH נמצא בשימוש במקום הפיאזו הישן

לנפות:

במהלך הבדיקה זה טוב שהגדרנו. אבל כאשר אתה הופך אותם לזמינים, אל תפעיל אותו.

סוֹלְלָה:

אם אינך רוצה שיהיה לך בודק סוללות למטרות, עליך להסיר הגדרה זו.

לְנַעֵר:

אם בנית את הגרסה הישנה שלי, יש לך חיישני פיזו, ואז הסר זאת כדי לקבל קוד נכון עבורם.

שבב ATMEGA328

במקום ננו Arduino החלטתי להשתמש בשבב ATMEGA328 (עם מטען אתחול Uno), הם פשוטים לתכנות פשוט הסר את השבב מאו Arduino והוסף שבב זה והעלה קוד. בדוק את ערכת החשמל כיצד לבנות את המטרות.

הקוד

כתבתי את הקוד עם PlatformIO במקום Arduino IDE. זו תוכנה טובה יותר לתכנת בה. אז הקוד קצת שונה. אני ממליץ להשתמש בתוכנה זו במקום זאת.

תיבת המטרה והמשדר

חיברתי את החיישן ואת הלייד הכחול על המטרה, ועם כבל פונו בגודל 3, 5 מ מ על 2 מ 'אני מחבר אותו יחד בתיבת המשדרים שמחזיקה את שבב האטמה, מטען הסוללות והדלק הירוק והאדום. זאת כדי להגן עליו מפני פגיעה בכדורי פלדה.

שלב 2: בקר המשחק

בקר המשחק
בקר המשחק
בקר המשחק
בקר המשחק
בקר המשחק
בקר המשחק
בקר המשחק
בקר המשחק

הדבר הבא שעלינו לעשות הוא ליצור את הבקר עבור החיישנים. זהו ארדואינו המשתמש במודול NRF24L01 כדי לתקשר עם החיישנים. שום דבר אחר. ארדואינו מחובר לאחר מכן באמצעות USB בפאי הפטל לעבודה.

כך זה יעבוד. הוא משתמש בסידורי כדי לדעת מה לעשות. הפאי ישלח פקודות סדרתיות. תחילה במהלך ההתקנה הוא שולח כמה מטרות שהוספת, ומספרי זיהוי המטרות. אז הוא יעשה את פונקציית הבדיקה ויודיע לפאי הפטל אם הם מתקשרים זה עם זה.

כאשר אתה משחק את המשחק הוא ישלח מפאי איזה סוג משחק וכמה סיבובים/להיטים להשתמש. זהו זה.

אפשר להשתמש במודולים NRF24L01 בפאי הפטל, אבל בשבילי הארדואינו הוא אופציה טובה יותר לחטא אני אף פעם לא משתמש בהם בפטל אז אני לא יודע עד כמה הם עובדים טוב לטווח הארוך

יש מודול הספק שמשתמש ב -5 וו כדי לייצר כוח יציב נכון למשדרים. אתה יכול להשתמש בהם יחד איתך Arduino (ראה התמונה) השם הוא לוח מודול מתאם Socket

כאשר אתה משחק המטרות יופעלו באופן אקראי אחת אחת. כאשר אחד נפגע, אחד אחר יופעל.

במהלך הבדיקה תוכל להפעיל #DEFINE DEBUG כדי לראות כיצד הוא פועל, אך לא כאשר אתה משתמש בו במחשב ה- pi, הוא לא יעבוד אז.

הורד את הקוד בדף GitHub.

שלב 3: פטל פטל

פאי פטל
פאי פטל
פאי פטל
פאי פטל
פאי פטל
פאי פטל
פאי פטל
פאי פטל

עכשיו הגענו ל- Raspberry Pi.

הוספתי כמה פונקציות נוספות כדי שאוכל לקבל כפתור הפעלה. ATXRaspi 3 הוא מודול נהדר, אתה יכול להפעיל, לכבות ולהפעיל מחדש את הפאי באמצעות כפתור. כמו כן RTCRaspi לשמירה על השעה והתאריך בפאי. גם אפשרתי פשוט לחבר כבל רשת אם אני צריך לבצע כמה עדכונים במערכת. תוכלו למצוא אותם ב- Lowpowerlab

המדפסת התרמית שתמצא ב- sparkfun וקורא הברקודים זמין באמזון.

מחשב ה- Pi פועל במצב קיוסק כך שהדפדפן ייפתח בעת ההתחלה. ראשית כל צריך שרת אינטרנט עם PHP 7 ו- mysql במחשב ה- pi. (יש הרבה מדריכים באינטרנט בשביל זה)

שים לב: אם אתה מתכוון להשתמש במדפסת תרמית עם פטל פאי שבנה Bluetooth, עליך להשבית את המדפסת הראשונה

סקריפט ה- python צריך pyserial ואתה מתקין אותו: sudo apt-get install python-serial

כדי לגרום ל- mysql להתקין את ההתקנה הבאה:

sudo apt-get להתקין mysql-python sudo apt-get להתקין python-mysql.connector

suso apt-get להתקין pymysql

עכשיו אתה יכול לשלוט בך Arduino דרך סדרות וגם לעדכן את מסד הנתונים mysql.

השלב הבא הוא ליצור סקריפט פייתון כדי להתחבר ל- mysql.

בכל שלושת סקריפט הפיתון שנה את החיבור למסד הנתונים mysql שלך.

השלב הבא הוא הפעלת סקריפט הפיתון בהתחלה.

ישנם שלושה פייתונים 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 &

אנא שנה למקום הנכון עבור סקריפט הפיתון שלך ואל תשכח את הסימן & בסוף

כעת עלינו ליצור מצב קיוסק לדפדפן האינטרנט, ראשית הסר את הסמן:

sudo apt-get להתקין 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-קיוסק 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-series-consoles logo.nologo vt.global_cursor_default = 0

והחלף את התזת pi בעצמך:

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

עכשיו יש לך מסך אתחול מותאם אישית למשחק שלך. מחשב ה- pi שלך מוכן כעת להתמודד עם המשחק, אז לך לשלב הבא!

שלב 4: הגדר את המשחק

בשלב זה יצרת את המשחק.

ראשית עליך להתקין את מערכת האינטרנט. העלה את מסד הנתונים לשרת mysql שלך. הקובץ נמצא בתיקייה כולל ושמו database.sql

השלב הבא הוא לערוך את קובץ התצורה, אתה מוצא אותו בשם כולל התיקיה config.php שנה את פרטי הכניסה למסד הנתונים כך שהתסריט יפעל.

מערכת האינטרנט מבוססת רב שפות וכתובה באנגלית. יש תרגום לשוודית. כדי ליצור שפה נוספת צריך תוכנה בשם Poedit.

כדי להוסיף שפה נוספת למערכת האינטרנט עליך לערוך i18n_setup.php ולהוסיף במערך:

החזר in_array ($ locale, ['en_US', 'sv_SE']); (שורה 23)

גם כדי לשנות את שפת ברירת המחדל עליך לשנות בשורה 27: $ lang = 'en_US'; שנה את ה- en_US לשפה שלך.

קבצי השפה חייבים להיות ממוקמים במקומות/LANGCODE/LC_MESSAGES/ושמם main.mo (שנה את קוד הארוך לשפה שלך)

כדי לשנות את המקלדת בקובץ selectplayers.php אתה משנה את השפה: "en", // en עבור אנגלית sv לפריסה שוודית: 'qwerty', // qwerty לאנגלית שוודית-qwerty לשוודית

אתה מוצא אותם בשורה 218 & 219

השפות הזמינות נמצאות בתיקייה: נכסים/js/מקלדת/שפות ופריסות נמצאות בנכסים/js/מקלדת/פריסות והוסיפו את הקבצים הנכונים לשורה 118 ו -119 (החלף את זה שאתה מוצא שם כעת)

הוסף מטרות

כדי להוסיף מטרות אתה עובר ל- localhost/ admin/ ולוחץ על הוסף מטרות.

עליך להוסיף שם למטרה ולמזהה היעד הייחודי ולשלוח מזהה, להוסיף כמה שיותר מטרות שיש לך.

הוסף משחקים

אתה גם צריך להוסיף כמה משחקים. עבור אל localhost/ admin/ ולחץ על הוסף משחק

אתה צריך להוסיף שם למשחק, תיאור, שחקני מינימום ומקסים איזה סוג משחק, גם כמה המשחק קשה בין 1 ל 5. ואיך המשחק, אז למשחק המהיר אתה מוסיף כמה להיטים (דוגמה 30) לרישום מהיר כמה סיבובים (למשל 8) ולזמן כמה זמן הם הולכים לשחק (למשל 60 לדקה אחת)

תתחיל את המשחק

כאשר אתה מפעיל את המשחק הוא יבצע את בדיקות המטרה. אז המטרות צריכות להיות על לפני שתתחיל את המערכת הראשית. אם כולם עוברים את הבדיקה אתה יכול להשתמש במערכת, אבל אם הם לא יכולים לא להשתמש בה. הוא ינסה לתקשר עד שיקבל תגובה.

בהצלחה

ובכן זהו בערך, לקבלת תמיכה ומידע לגבי עדכון בקוד אנא עקוב אחר דף הפייסבוק שלי למשחק זה, כדי שאוכל לתת לך תגובה מהירה. כאן תמצא קישורים למעלה.

מוּמלָץ: