Inhaltsverzeichnis:

Digital Chess - Verfolgen Sie Ihr Schachspiel online - Gunook
Digital Chess - Verfolgen Sie Ihr Schachspiel online - Gunook

Video: Digital Chess - Verfolgen Sie Ihr Schachspiel online - Gunook

Video: Digital Chess - Verfolgen Sie Ihr Schachspiel online - Gunook
Video: Zuschauer warten auf ihren Tod... 2024, November
Anonim
Digital Chess - Verfolgen Sie Ihr Schachspiel online
Digital Chess - Verfolgen Sie Ihr Schachspiel online

Ich spiele seit meiner Jugend viel Schach, und da es im Internet eine riesige Menge an Websites gibt, auf denen man gegen Computer oder Live-Gegner Schach spielen kann, habe ich nie eine Website gefunden, die dein Schachspiel verfolgt, das du bist tatsächlich im wirklichen Leben spielen. Mit diesem Projekt hoffe ich, das zu realisieren!

Ich hoffe auf:

  • In der Lage sein, die Bewegung der Schachfiguren zu verfolgen
  • Sehen Sie sich einige Bestenlisten zu vergangenen Spielen an.
  • Verfolgen Sie die Zeit und spielen Sie schnell wie ein professionelles Spiel.

Es ist ein sehr komplexes Projekt, denn wenn es abgeschlossen wäre, wären 64 Lichtsensoren und 8 Chips zum Lesen erforderlich. Das ist schon eine große Aufgabe und wir zählen noch nicht einmal die anderen Sensoren.

Mein College hat uns eine große Liste von Dingen gegeben, die wir tun sollten:

  1. Erstellen Sie einen Schaltplan für unser Projekt
  2. Erstellen Sie eine Datenbank zum Speichern und Abrufen von Daten.
  3. Entwerfen einer Website mit Adobe XD
  4. Diese Website mit CSS und HTML neu erstellen
  5. Auslesen der Sensoren mit Python
  6. Zeigen Sie die Sensordaten auf der Website mit einer Flasche an.

In diesem anweisbaren werde ich Sie auf meiner Reise und all den Schwierigkeiten und Momenten der Erlösung führen, die ich in den letzten Wochen durchgemacht habe.

Schritt 1: Verbrauchsmaterialien/Werkzeuge

Verbrauchsmaterialien, Materialien und Werkzeuge sind der erste Schritt zu einem erfolgreichen Projekt!

Werkzeuge:

  • Lötkolben
  • Lötzinn
  • Zange
  • Bohrmaschine
  • Band

Lieferungen:

  • Raspberry Pi mit Micro-SD-Karte (4GB sollten reichen)
  • Rasberry Pi T-Schuster
  • Schachbrett mit Figuren
  • 7-Segment-Anzeige (TM 1637)
  • 2 Berührungssensoren (TTP223B)
  • RFID-Leser mit Karten (MFRC522)
  • MCP3008 (Je nachdem, wie weit Sie gehen möchten, können Sie für jeden MCP 8 Schachkoordinaten lesen)
  • Lichtabhängiger Widerstand Typ 5288 (8 für jedes MCP, das Sie haben)
  • Header (männlich zu männlich und weiblich zu männlich)

Wenn Sie alles kaufen müssen, sollte der geschätzte Selbstkostenpreis ca. 125 Euro inklusive Versandkosten betragen (nur Lieferungen)!

Es gibt eine Excel-Datei mit Links und Preisen zu allem, was Sie brauchen!

Schritt 2: Schaltpläne und Planung

Schaltplan und Planung!
Schaltplan und Planung!
Schaltplan und Planung!
Schaltplan und Planung!

Der nächste Schritt in diesem Projekt besteht darin, einen Schaltplan zu erstellen. Ich habe 2: Eine auf Steckbrett und eine rein elektronisch gemacht. Wir werden diese Schaltpläne brauchen, um alles sauber zu halten und sicherzustellen, dass wir keine unnötigen Dinge anschließen!

Ich habe ein Programm namens "Fritzing" verwendet, um diese Schaltpläne zu erstellen, wenn jemand interessiert ist.

Farbcodierung:

  • Rot = Stromversorgung
  • Grün = Verbindung
  • Blau = Masse

Raspberry-Pi-Anschlüsse:

  • 3V3 => VC-Leitung auf dem Steckbrett, die alles mit Strom versorgt
  • 5V => VCC der 7-Segment-Anzeige
  • Masse:

    • Masse auf dem Steckbrett
    • Masse der 7-Segment-Anzeige
  • GPIO4 => Clock Select Pin des MCP3008
  • GPIO10 => MOSI-Pin des MCP3008
  • GPIO9 => MISO-Pin des MCP3008
  • GPIO11 => CLK-Pin des MCP3008
  • GPIO7 => SDA-Pin des MFRC522
  • GPIO19 => DIG-Pin des ersten Berührungssensors
  • GPIO26 => DIG-Pin des zweiten Touch-Sensors
  • GPIO20 => CLK-Pin der Siebensegmentanzeige
  • GPIO21 = DIO-Pin der Siebensegmentanzeige

Ein paar Anmerkungen zu den Schaltplänen:

  • Dieser Schaltplan enthält nur 1 MCP, das bedeutet, dass nur 8 Koordinaten vollständig gelesen werden können.
  • Ich werde GPIO-Pins als Chip Select verwenden. Da bei potentiell 8 MCPs nur 2 Chip-Select-Pins zur Verfügung stehen.
  • Die 7-Segment-Anzeige wird von einem Lehrer vorgeschlagen, es werden nur 4 Drähte benötigt, da sie mit einem eigenen Protokoll arbeitet.
  • Die Widerstände am digitalen Pin der Berührungssensoren werden nicht vollständig benötigt, aber empfohlen.

Erklärung der Komponenten:

  • MCP mit Lichtsensoren:

    • Ein MCP3008 ist ein 8-Kanal-10-Bit-ADC:

      • ein MCP3008 liest den Analogwert der Lichtsensoren, dieser Wert hängt von der Lichtmenge ab, die gerade auf den Sensor fällt.
      • In meinem Python-Code erhalte ich diesen analogen Wert und wandele ihn in eine 1 oder 0 um
  • Berührungssensoren:

    Funktioniert wie ein Button, ich verwende dafür eine Klasse mit einer Callback-Methode. Mehr dazu später

    RFID-Leser (MFRC 522):

    • Verwendet ein bestimmtes Protokoll (SPI) mit einem installierten Paket.
    • Mit einem installierten Paket nicht schwer zu programmieren
    • Liest das Tag und gibt den Wert des Tags zurück
    • Sie können auch einen Wert in ein Tag schreiben, sodass anstelle des Hexadezimalwerts beispielsweise ein Name zurückgegeben wird

    7-Segment (TM1637)

    • Verwendet auch ein installiertes Paket zur einfachen Codierung
    • Erstellen Sie eine Variable mit einem ganzzahligen Wert, teilen Sie sie dann in 4 Zeichen auf und zeigen Sie diese Zeichen an

Schritt 3: SQL-Datenbank

SQL-Datenbank
SQL-Datenbank

Der dritte Schritt zu diesem Projekt ist die Erstellung einer 3NF normalisierten SQL-Datenbank!

Diese benötigen wir für:

  • Daten einfügen
  • Daten abrufen und auf unserer Website anzeigen
  • In der Lage sein, genau zu sehen, wie viele Züge im aktuellen Schachspiel vergangen sind!

Tabellen erklärt:

  • Spiele

    • Hier wird nachverfolgt, wer ein bestimmtes Spiel gewonnen hat und wann das Spiel gespielt wurde
    • Der Primärschlüssel hier ist eine GameID
    • Das Datum hat einen Standardwert des aktuellen Datums
    • Der Gewinner und die Punktzahl werden später hinzugefügt, nachdem das Spiel beendet ist!
  • Spieler (Spelers auf Niederländisch)

    • Diese werden manuell eingelegt, können aber auch über das RFID-Kartensystem eingelegt werden.
    • Schreiben Sie einen Namen auf Ihre Karte, lesen Sie dann die Karte und tragen Sie den Namen in diese Tabelle ein
    • Es verfolgt auch die Gewinn- / Verlustbilanz jedes Spielers, die auf der Website angezeigt werden soll
  • Historiek (Geschichte)

    • Das ist die Rundenhistorie
    • Wenn eine Schachfigur bewegt wird, wird sie hier aktualisiert
    • Es hat 3 Fremdschlüssel, Spieler, Spiel und Schachfigur
    • das ReadDate (InleesDatum) ist das Datum, an dem der Sensor gelesen wurde
    • ReadTime ist dasselbe wie ReadDate, aber mit einem Zeitstempel
    • LocationID(LocatieID) ist der Name für die Koordinate, auf der sie positioniert ist. zum Beispiel "a3"
  • Schachfiguren (Schaakstukken auf Niederländisch)

    • Jede Schachfigur hat eine ID, ein Team, einen Namen und einen Status
    • Das Team ist entweder 1 oder 2, schwarz oder weiß;
    • Der Name jedes Stücks wäre zB "Bauer 1"
    • Der Status bedeutet, dass das Stück lebendig oder tot ist!

Schritt 4: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Jetzt, da wir alle richtigen Teile an Ort und Stelle haben, können wir anfangen, etwas zu erschaffen!

Lassen Sie uns diesen Teil in Unterschritte unterteilen, da er einfacher zu erklären ist:

  • Schritt 1: Sie möchten ein Loch in jede Koordinate Ihres Schachbretts bohren, wie im ersten Bild gezeigt, bohren Sie auch ein Loch, wo Sie die Berührungssensoren, den RFID-Leser und die 7-Segment-Anzeige platzieren möchten.

    Vergessen Sie nicht, einige Löcher an der Seite der Platine zu bohren, diese sind für die Drähte der verschiedenen Komponenten oben auf der Platine. Viel gebohrt, ich weiß

  • Schritt 2: Versuchen Sie, einen oder zwei Sensoren mit dem Raspberry Pi zu verbinden, und prüfen Sie, ob sie funktionieren. Sie möchten sie an den MCP-Analogleser anschließen, wie zuvor in Schritt 2 (Die Schaltpläne) erläutert.
  • Schritt 3: Dies kann knifflig und sehr nervenaufreibend sein, da die Jumper-Header nicht sehr festsitzen. Vielleicht möchten Sie sie alle einzeln oder mehrere auf einmal auf die Platine kleben. Sie müssen darauf achten, dass sie auf dem Schachbrett stecken bleiben, sonst können Sie die Sensoren nicht erfolgreich auslesen

    SPITZE! Wenn es Ihnen leichter fällt, könnte etwas Kleber tatsächlich helfen, die Sensoren beim Aufkleben besser an Ort und Stelle zu halten, ich habe dies auf die harte Tour entdeckt

Schritt 5: Software

Software
Software

Nachdem Sie die Hardware erstellt haben, die Sie testen können, versuchen wir, Code dafür zu schreiben! Wenn Sie sich meinen Code ansehen möchten, gehen Sie bitte zu meinem Github.

Back-EndZuerst müssen wir ein paar Pakete installieren, ich habe eine Liste für Sie erstellt:

  • Flasche

    Auf diesem wird Ihr Python-Code ausgeführt

  • FlaschensockelIO

    Um zwischen Front-End und Back-End zu kommunizieren

  • numpy

    Nützlich zum Auslesen der Lichtsensoren, funktioniert mit Matrix

  • Netzgesichter

    So drucken Sie Ihre eigene IP-Adresse auf der 7-Segment-Anzeige

  • Kolben-CORS

    Cross-Origin-Recourse-Sharing ermöglicht die gemeinsame Nutzung von Paketen über verschiedene Domänen

Daneben habe ich ein paar Kurse geschrieben und du kannst sie frei benutzen.

Vorderes Ende

Der Website-Code ist auch auf meiner Github-Seite verfügbar!

Für das Frontend verwende ich Chessboard.js. Dies fügt ein einfach zu bedienendes Schachbrett mit leicht zu bewegenden Figuren ein!

Alles auf dem Board ist anpassbar, also viel Spaß! Nachdem Sie die neueste Version heruntergeladen haben, müssen Sie die Dateien in Ihr Projekt ziehen und mit der Seite verknüpfen, auf der Sie ein Schachbrett anzeigen möchten!

Danach versuchen wir, ein Board zu erstellen, sieht nicht allzu schwer aus:

Zuerst in Ihrem HTML:

Zweitens in Ihrer Javascript-Datei:

board1 = Schachbrett('board1', 'start');

Und da haben Sie es, Sie sollten jetzt ein Schachbrett sehen können! Fühlen Sie sich frei, das Board in den CSS-Dateien anzupassen!

Jetzt wollen wir einige Züge auf dem Schachbrett sehen, nicht zu hart. Aber wir müssen es anpassen, damit der Move-Befehl vom Back-End gesendet wird. Ich werde nicht zu sehr ins Detail gehen, aber wir wollen so etwas machen:

new_lijst = [Data.data[0], Data.data[1];commando = new_lijst[0].concat('-', new_lijst[1]); board1.move (Befehl);

Wir erhalten eine Liste von unserem Backend-Programm, setzen einen Bindestrich zwischen die beiden Koordinaten und verwenden dann den Befehl board.move, um den Zug auszuführen!

Das ist meine Erklärung, was wir vom chessboard.js-Plugin brauchen, gehen Sie zu meinem Github, um sich den Code selbst anzusehen

Empfohlen: