Table des matières:

Échecs numériques - Suivez votre partie d'échecs en ligne : 5 étapes
Échecs numériques - Suivez votre partie d'échecs en ligne : 5 étapes

Vidéo: Échecs numériques - Suivez votre partie d'échecs en ligne : 5 étapes

Vidéo: Échecs numériques - Suivez votre partie d'échecs en ligne : 5 étapes
Vidéo: Les 3 principes de l'ouverture à connaître aux échecs - Partie pédagogique 2024, Novembre
Anonim
Échecs numériques - Suivez votre partie d'échecs en ligne
Échecs numériques - Suivez votre partie d'échecs en ligne

Je joue beaucoup aux échecs depuis que je suis jeune, et comme le Web contient une énorme quantité de sites Web pour jouer aux échecs contre des ordinateurs ou des adversaires en direct, je n'ai jamais trouvé de site Web qui suit votre partie d'échecs que vous êtes. jouer réellement dans la vraie vie. Donc, avec ce projet, j'espère le réaliser!

J'espère:

  • Être capable de suivre le mouvement des pièces d'échecs
  • Voir quelques classements sur les jeux passés.
  • Suivez le temps et jouez vite comme un jeu professionnel.

C'est un projet très complexe car s'il était achevé, il nécessiterait 64 capteurs de lumière et 8 puces pour lire. Ce qui est déjà une grosse tâche et nous ne comptons même pas les autres capteurs.

Mon collège nous a donné une grande liste de choses à faire:

  1. Créer un schéma pour notre projet
  2. Créez une base de données pour le stockage et l'obtention de données.
  3. Concevoir un site Web avec Adobe XD
  4. Recréez ce site Web avec CSS et HTML
  5. Lire les capteurs avec python
  6. Affichez les données du capteur sur le site Web à l'aide d'un flacon.

Dans ce instructable, je vais vous guider dans mon voyage et tous les troubles et moments de salut que j'ai traversés ces dernières semaines.

Étape 1: Fournitures/Outils

Les fournitures, les matériaux et les outils sont la première étape d'un projet réussi!

Outils:

  • Fer à souder
  • Étain à souder
  • Pinces
  • Perceuse
  • Ruban

Fournitures:

  • Raspberry Pi avec carte micro SD (4 Go devraient suffire)
  • Cordonnier à la framboise Pi
  • Échiquier avec pièces
  • Affichage 7 segments (TM 1637)
  • 2 capteurs tactiles (TTP223B)
  • Lecteur RFID avec cartes (MFRC522)
  • MCP3008 (Selon la distance que vous souhaitez parcourir, pour chaque MCP, vous pouvez lire 8 coordonnées d'échecs)
  • Résistance dépendante de la lumière de type 5288 (8 pour chaque MCP que vous possédez)
  • En-têtes (Homme à Homme et Femme à Homme)

Si vous devez tout acheter, le prix de revient estimé devrait être d'environ 125 euros frais de port inclus (Fournitures uniquement) !

Il y a un fichier Excel joint avec des liens et des prix pour tout ce dont vous avez besoin !

Étape 2: Schémas et planification

Schémas et planification !
Schémas et planification !
Schémas et planification!
Schémas et planification!

La prochaine étape de ce projet consiste à créer un schéma. J'en ai fait 2: un sur maquette et un purement électronique. Nous aurons besoin de ces schémas pour que tout reste propre et nous assurer de ne pas connecter de choses inutiles !

J'ai utilisé un programme appelé "Fritzing" pour créer ces schémas si quelqu'un est intéressé.

Code de couleurs:

  • Rouge = alimentation
  • Vert = connexion
  • Bleu = terre

Connexions Raspberry Pi:

  • 3V3 => ligne VC sur la maquette, alimentant tout
  • 5V => VCC de l'afficheur 7 segments
  • GND:

    • Sol sur la planche à pain
    • Masse de l'afficheur 7 segments
  • GPIO4 => Pin de sélection d'horloge du MCP3008
  • GPIO10 => broche MOSI du MCP3008
  • GPIO9 => broche MISO du MCP3008
  • GPIO11 => broche CLK du MCP3008
  • GPIO7 => broche SDA du MFRC522
  • GPIO19 => broche DIG du premier capteur tactile
  • GPIO26 => broche DIG du deuxième capteur tactile
  • GPIO20 => broche CLK de l'affichage à sept segments
  • GPIO21 = broche DIO de l'affichage à sept segments

Quelques remarques sur les schémas:

  • Ce schéma contient seulement 1 MCP, cela signifie que seulement 8 coordonnées pourront être lues entièrement.
  • J'utiliserai des broches GPIO comme Chip Select. Étant donné que seules 2 broches de sélection de puce sont disponibles avec potentiellement 8 MCP.
  • L'affichage à 7 segments est suggéré par un enseignant, seuls 4 fils sont nécessaires car il fonctionne sur son propre protocole.
  • Les résistances sur la broche numérique des capteurs tactiles ne sont pas entièrement nécessaires, mais sont conseillées.

Explication des composants:

  • MCP avec capteurs de lumière:

    • Un MCP3008 est un CAN 10 bits à 8 canaux:

      • un MCP3008 lira la valeur analogique des capteurs de lumière, cette valeur dépend de la quantité de lumière qui brille actuellement sur le capteur.
      • Dans mon code python, je recevrai cette valeur analogique et la convertirai en 1 ou 0
  • Capteurs tactiles:

    Fonctionne comme un bouton, j'utilise une classe pour cela avec une méthode de rappel. Plus à ce sujet plus tard

    Lecteur RFID (CRFM 522):

    • Utilise un protocole spécifique (SPI) avec un package installé.
    • Pas difficile à coder avec un package installé
    • Lit la balise et renvoie la valeur de la balise
    • Vous pouvez également écrire une valeur dans une balise, donc au lieu de renvoyer la valeur hexadécimale, elle renvoie un nom par exemple

    7 segments (TM1637)

    • Utilise également un package installé pour un codage facile
    • Créez une variable avec une valeur entière, puis divisez-la en 4 caractères et affichez ces caractères

Étape 3: Base de données SQL

Base de données SQL
Base de données SQL

La troisième étape de ce projet consiste à créer une base de données SQL normalisée 3NF !

Nous en aurons besoin pour:

  • Insertion de données
  • Obtenir des données et les afficher sur notre site Web
  • Être capable de voir exactement combien de tours se sont écoulés dans le jeu d'échecs actuel !

Tableaux expliqués:

  • Jeux

    • Cette piste qui a gagné un certain jeu et quand le jeu a été joué
    • La clé primaire ici est un GameID
    • La date a une valeur standard de la date actuelle
    • Le gagnant et le score seront ajoutés plus tard, une fois le jeu terminé !
  • Joueurs (Spelers en néerlandais)

    • Ceux-ci sont insérés manuellement, mais peuvent également être insérés à l'aide du système de carte RFID.
    • Écrivez un nom sur votre carte, puis lisez la carte et insérez le nom dans ce tableau
    • Il suit également le record de victoires / défaites de chaque joueur, à afficher sur le site Web
  • Historiek (Histoire)

    • C'est l'histoire du tour
    • quand une pièce d'échecs est déplacée, elle sera mise à jour ici
    • Il a 3 clés étrangères, joueur, jeu et pièce d'échecs
    • la ReadDate (InleesDatum) est la date à laquelle le capteur a été lu
    • ReadTime est identique à ReadDate mais avec un horodatage
    • LocationID(LocatieID) est le nom de la coordonnée sur laquelle il est positionné. par exemple "a3"
  • Pièces d'échecs (Schaakstukken en néerlandais)

    • Chaque pièce d'échecs a un identifiant, une équipe, un nom et un statut
    • L'équipe est soit 1 ou 2, noire ou blanche;
    • Le nom de chaque pièce serait par exemple "Pion 1"
    • Le statut signifie que la pièce est vivante ou morte !

Étape 4: Matériel

Matériel
Matériel
Matériel
Matériel
Matériel
Matériel

Maintenant que nous avons toutes les bonnes pièces en place, nous pouvons commencer à créer quelque chose !

Divisons cette partie en sous-étapes car ce sera plus facile à expliquer:

  • Étape 1: Vous souhaitez percer un trou dans chaque coordonnée de votre échiquier comme indiqué sur la première image, percez également un trou où vous souhaitez placer les capteurs tactiles, le lecteur RFID et l'affichage à 7 segments.

    N'oubliez pas de percer des trous sur le côté de la carte, ce sont pour les fils des différents composants sur le dessus de la carte. Beaucoup de forage, je sais

  • Étape 2: Essayez de câbler un ou deux capteurs au Raspberry Pi, vérifiez s'ils fonctionnent. Vous souhaitez les connecter au lecteur analogique MCP comme expliqué précédemment à l'étape 2 (les schémas).
  • Étape 3: Cela peut être délicat et très éprouvant pour les nerfs, étant donné que les en-têtes de cavalier ne sont pas très coincés en place, vous voudrez peut-être les coller tous sur la carte, individuellement ou plusieurs à la fois. Vous devez vous assurer qu'ils restent collés sur l'échiquier, sinon vous ne pourrez pas lire les capteurs avec succès

    ASTUCE! Si cela vous facilite la tâche, un peu de colle pourrait en fait aider à maintenir les capteurs plus en place tout en les collant, j'ai découvert cela à la dure

Étape 5: Logiciel

Logiciel
Logiciel

Après avoir créé du matériel que vous pouvez tester, essayons d'écrire du code pour celui-ci ! Si vous voulez jeter un œil à mon code, rendez-vous sur mon github.

Back-endTout d'abord, nous aurons besoin de quelques packages à installer, je suis allé de l'avant et j'ai fait une liste pour vous:

  • ballon

    C'est sur quoi votre code python s'exécutera

  • Flacon-douilleIO

    Pour communiquer entre le front-end et le back-end

  • numpy

    Utile pour lire les capteurs de lumière, fonctionne avec les matrices

  • netfaces

    Pour imprimer votre propre adresse IP sur l'affichage à 7 segments

  • Flacon-CORS

    Le partage des recours entre les origines permet de partager les packages entre différents domaines

À côté de cela, j'ai écrit quelques cours et vous êtes libre de les utiliser.

L'extrémité avant

Le code du site est également disponible sur ma page github !

Pour le front-end, j'utiliserai Chessboard.js. Cela insère un échiquier facile à utiliser avec des pièces faciles à déplacer !

Tout sur le plateau est personnalisable alors amusez-vous ! Après avoir téléchargé la dernière version, vous devrez faire glisser les fichiers dans votre projet et les lier à la page où vous souhaitez afficher un échiquier !

Après ça, essayons de créer un tableau, ça n'a pas l'air trop compliqué:

Tout d'abord, dans votre html:

Deuxièmement, dans votre fichier javascript:

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

et voilà, vous devriez pouvoir voir un échiquier maintenant ! N'hésitez pas à personnaliser le tableau dans les fichiers CSS !

Maintenant, nous voulons voir quelques coups sur l'échiquier, pas trop durs. Mais nous devons le personnaliser pour que la commande de déplacement soit envoyée par le back-end. Je n'entrerai pas trop dans les détails, mais nous voulons faire quelque chose comme ceci:

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

Nous recevons une liste de notre programme back-end et mettons un tiret entre les deux coordonnées, puis utilisons la commande board.move pour exécuter le mouvement !

C'est mon explication de ce dont nous avons besoin du plugin chessboard.js, rendez-vous sur mon github pour jeter un œil au code vous-même

Conseillé: