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

שחמט דיגיטלי - עקוב אחר משחק השחמט שלך באינטרנט: 5 שלבים
שחמט דיגיטלי - עקוב אחר משחק השחמט שלך באינטרנט: 5 שלבים

וִידֵאוֹ: שחמט דיגיטלי - עקוב אחר משחק השחמט שלך באינטרנט: 5 שלבים

וִידֵאוֹ: שחמט דיגיטלי - עקוב אחר משחק השחמט שלך באינטרנט: 5 שלבים
וִידֵאוֹ: More Equal Animals - by Daniel Larimer - audiobook read by Chuck MacDonald 2024, נוֹבֶמבֶּר
Anonim
שחמט דיגיטלי - עקוב אחר משחק השחמט שלך באינטרנט
שחמט דיגיטלי - עקוב אחר משחק השחמט שלך באינטרנט

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

אני מקווה ש:

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

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

המכללה שלי נתנה לנו רשימה גדולה של דברים לעשות:

  1. צור סכמטי לפרויקט שלנו
  2. צור מסד נתונים לאחסון וקבלת נתונים.
  3. עיצוב אתר באמצעות Adobe XD
  4. צור אתר זה מחדש באמצעות CSS ו- HTML
  5. קרא את החיישנים עם פייתון
  6. הצג את נתוני החיישנים באתר באמצעות בקבוק.

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

שלב 1: ציוד/כלים

אספקה, חומרים וכלים הם השלב הראשון לפרויקט מוצלח!

כלים:

  • מלחם
  • פח הלחמה
  • צְבָת
  • מקדחה
  • קלטת

אספקה:

  • פטל פאי עם כרטיס מיקרו SD (4GB אמור להספיק)
  • Rasberry Pi סנדלר
  • לוח שחמט עם חלקים
  • תצוגת 7 פלחים (TM 1637)
  • 2 חיישני מגע (TTP223B)
  • קורא RFID עם כרטיסים (MFRC522)
  • MCP3008 (תלוי כמה רחוק אתה רוצה ללכת, עבור כל MCP אתה יכול לקרוא 8 קואורדינטות שחמט)
  • התנגדות תלויה באור 5288 (8 לכל MCP שיש לך)
  • כותרות (זכר לזכר ונקבה לזכר)

אם אתה צריך לקנות הכל, מחיר העלות המשוער צריך להיות בסביבות 125 יורו כולל עלויות משלוח (ציוד בלבד)!

מצורף קובץ אקסל עם קישורים ומחירים לכל מה שאתה צריך!

שלב 2: סכמות ותכנון

סכמטים ותכנון!
סכמטים ותכנון!
סכמטים ותכנון!
סכמטים ותכנון!

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

השתמשתי בתוכנית בשם "Fritzing" כדי ליצור סכמטים אלה אם מישהו מעוניין בכך.

קידוד צבעים:

  • אדום = ספק כוח
  • ירוק = חיבור
  • כחול = טחון

חיבורי פטל פטל:

  • 3V3 => קו VC בלוח הלחם, מניע הכל
  • 5V => VCC של 7 פלחי תצוגה
  • GND:

    • טחון על לוח הלחם
    • הקרקע של תצוגת 7 הקטעים
  • GPIO4 => שעון בחר סיכה של MCP3008
  • GPIO10 => סיכת MOSI של MCP3008
  • GPIO9 => סיכת MISO של MCP3008
  • GPIO11 => סיכת CLK של MCP3008
  • GPIO7 => סיכת SDA של MFRC522
  • GPIO19 => סיכת DIG של חיישן המגע הראשון
  • GPIO26 => סיכת DIG של חיישן המגע השני
  • GPIO20 => סיכת CLK בתצוגת שבעה הפלחים
  • GPIO21 = סיכת DIO של תצוגת הקטע השביעי

כמה הערות על התרשימים:

  • סכמטי זה מכיל רק MCP אחד, פירוש הדבר שרק 8 קואורדינטות יוכלו לקרוא באופן מלא.
  • אני אשתמש בסיכות GPIO כ- Chip Select שלי. מאחר שרק 2 סיכות בחירה בשבבים זמינות עם 8 MCP אפשרי.
  • תצוגת 7 הקטעים היא אחת המוצעת על ידי מורה, רק 4 חוטים נחוצים מכיוון שהיא פועלת על הפרוטוקול שלה.
  • הנגדים בסיכה הדיגיטלית של חיישני המגע אינם נחוצים במלואם, אך הם מומלצים.

הסבר על המרכיבים:

  • MCP עם חיישני אור:

    • MCP3008 הוא ADC בעל 8 ערוצים של 10 סיביות:

      • MCP3008 יקרא את הערך האנלוגי של חיישני האור, ערך זה תלוי בכמות האור הזורחת כעת על החיישן.
      • בקוד הפיתון שלי אקבל את הערך האנלוגי הזה ואמיר אותו ל- 1 או 0
  • חיישני מגע:

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

    קורא RFID (MFRC 522):

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

    7 פלחים (TM1637)

    • משתמש גם בחבילה מותקנת לקידוד קל
    • צור משתנה עם ערך שלם, ואז פיצל אותו ב -4 תווים והראה את התווים האלה

שלב 3: מסד נתונים של SQL

מסד נתונים של SQL
מסד נתונים של SQL

השלב השלישי לקראת פרויקט זה הוא יצירת מסד נתונים SQL מנורמל 3NF!

נזדקק לזה עבור:

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

טבלאות הסבירו:

  • משחקים

    • עוקב אחר מי זכה במשחק מסוים ומתי המשחק שיחק
    • המפתח העיקרי כאן הוא GameID
    • לתאריך יש ערך סטנדרטי של התאריך הנוכחי
    • המנצח והציון יתווספו מאוחר יותר, לאחר סיום המשחק!
  • שחקנים (כובשים בהולנדית)

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

    • זוהי היסטוריית התורות
    • כאשר לוח שחמט יועבר, הוא יתעדכן כאן
    • יש לו 3 מפתחות זרים, שחקן, משחק ושחמט
    • תאריך הקריאה (InleesDatum) הוא התאריך שבו נקרא החיישן
    • ReadTime זהה ל- ReadDate אך עם חותמת זמן
    • LocationID (LocatieID) הוא השם של הקואורדינטות שבה הוא ממוקם. למשל "a3"
  • כלי שחמט (Schaakstukken בהולנדית)

    • לכל לוח שחמט יש תעודה, צוות, שם ומעמד
    • הצוות הוא 1 או 2, שחור או לבן;
    • שם היצירה אי פעם יהיה קרי "משכון 1"
    • הסטטוס אומר שהיצירה חיה או מתה!

שלב 4: חומרה

חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה
חוּמרָה

כעת, לאחר שקיבלנו את כל החלקים הנכונים, נוכל להתחיל ליצור משהו!

בואו נחלק את החלק הזה לשלבי משנה מכיוון שיהיה קל יותר להסביר אותו:

  • שלב 1: אתה רוצה לקדוח חור בכל קואורדינטות של לוח השחמט שלך כפי שמוצג בתמונה הראשונה, וגם לקדוח חור שבו אתה רוצה למקם את חיישני המגע, קורא RFID ותצוגת 7 פלחים.

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

  • שלב 2: נסה לחבר חיישן אחד או שניים ל- Raspberry Pi, בדוק אם הם פועלים. אתה רוצה לחבר אותם לקורא האנלוגי של MCP כפי שהוסבר קודם לכן בשלב 2 (התרשימים).
  • שלב 3: זה עשוי להיות מסובך והרס עצבים מאוד, מכיוון שכותרות המגשר אינן תקועות במקומן, כדאי להקליט את כולן ללוח, בנפרד או במספר רב בבת אחת. עליך לוודא שהם נשארים תקועים על לוח השחמט, אחרת לא תוכל לקרוא את החיישנים בהצלחה

    עֵצָה! אם זה מקל עליך, קצת דבק עשוי למעשה לעזור לשמור על החיישנים יותר במקומם בזמן הדבקתם, גיליתי זאת בדרך הקשה

שלב 5: תוכנה

תוֹכנָה
תוֹכנָה

אחרי שיצרת חומרה שתוכל לבדוק, בוא ננסה לכתוב לה קוד! אם אתה רוצה להסתכל על הקוד שלי, אנא עבור אל github שלי.

תחילה עלינו להתקין כמה חבילות, הלכתי ועשיתי לך רשימה:

  • בקבוק

    על זה יפעל קוד הפיתון שלך

  • בקבוק-שקע IIO

    לתקשר בין חזית לקצה

  • ערמומי

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

  • רשתות

    כדי להדפיס כתובת IP משלך בתצוגת 7 הקטעים

  • בקבוק- CORS

    שיתוף מוצא בין -מוצא, מאפשר לחלוק חבילות בתחומים שונים

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

חזיתי

קוד האתר זמין גם בדף github שלי!

בחזית אני אשתמש ב- Chessboard.js. זה מוסיף לוח שחמט נוח לשימוש עם חלקים נוחים לתנועה!

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

לאחר מכן, ננסה ליצור לוח, לא נראה קשה מדי:

ראשית, ב- html שלך:

שנית, בקובץ javascript שלך:

board1 = לוח שחמט ('לוח 1', 'התחל');

ויש לך את זה, אתה אמור להיות מסוגל לראות לוח שחמט עכשיו! אל תהסס להתאים אישית את הלוח בקבצי CSS!

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

new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (קומנדו);

אנו מקבלים רשימה מהתוכנית האחורית שלנו, ושמים מקף בין שני הקואורדינטות, ולאחר מכן משתמשים בפקודה board.move לביצוע המהלך!

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

מוּמלָץ: