Sommario:

Scacchi digitali - Tieni traccia della tua partita di scacchi online: 5 passaggi
Scacchi digitali - Tieni traccia della tua partita di scacchi online: 5 passaggi

Video: Scacchi digitali - Tieni traccia della tua partita di scacchi online: 5 passaggi

Video: Scacchi digitali - Tieni traccia della tua partita di scacchi online: 5 passaggi
Video: L'Unico Strumento per Migliorare la Gestione EMOTIVA del 300% nel TRADING ONLINE [FREE DOWNLOAD] 2024, Dicembre
Anonim
Scacchi digitali - Tieni traccia della tua partita di scacchi online
Scacchi digitali - Tieni traccia della tua partita di scacchi online

Ho giocato molto a scacchi sin da quando ero giovane, e dal momento che il web ha un'enorme quantità di siti web su cui giocare a scacchi contro computer o avversari dal vivo, non ho mai trovato un sito web che tenga traccia della tua partita a scacchi che sei giocando davvero nella vita reale. Quindi con questo progetto spero di realizzarlo!

spero di:

  • Essere in grado di monitorare il movimento dei pezzi degli scacchi
  • Guarda alcune classifiche sui giochi passati.
  • Tieni traccia del tempo e gioca velocemente come un gioco professionale.

È un progetto molto complesso poiché se completato richiederebbe 64 sensori di luce e 8 chip per leggere. Il che è già un grosso compito e non contiamo nemmeno gli altri sensori.

Il mio college ci ha dato una lunga lista di cose da fare:

  1. Crea uno schema per il nostro progetto
  2. Creare un database per l'archiviazione e il recupero dei dati.
  3. Progetta un sito web utilizzando Adobe XD
  4. Ricrea questo sito web con CSS e HTML
  5. Leggi i sensori con Python
  6. Mostra i dati del sensore sul sito web utilizzando il pallone.

In questo tutorial ti guiderò nel mio viaggio e in tutti i problemi e i momenti di salvezza che ho attraversato in queste ultime due settimane.

Passaggio 1: materiali di consumo/strumenti

Forniture, materiali e strumenti sono il primo passo per un progetto di successo!

Utensili:

  • Saldatore
  • stagno di saldatura
  • Pinze
  • Trapano
  • Nastro

Forniture:

  • Raspberry Pi con scheda micro SD (4 GB dovrebbero essere sufficienti)
  • Rasberry Pi T-Cobbler
  • Scacchiera con pezzi
  • Display a 7 segmenti (TM 1637)
  • 2 sensori tattili (TTP223B)
  • Lettore RFID con tessere (MFRC522)
  • MCP3008 (A seconda di quanto lontano vuoi andare, per ogni MCP puoi leggere 8 coordinate di scacchi)
  • Resistenza dipendente dalla luce tipo 5288 (8 per ogni MCP che possiedi)
  • Intestazioni (da maschio a maschio e da femmina a maschio)

Se hai bisogno di comprare tutto, il prezzo di costo stimato dovrebbe aggirarsi intorno ai 125 euro comprese le spese di spedizione (solo forniture)!

C'è un file Excel allegato con link e prezzi a tutto ciò di cui hai bisogno!

Passaggio 2: schemi e pianificazione

Schemi e pianificazione!
Schemi e pianificazione!
Schemi e pianificazione!
Schemi e pianificazione!

Il prossimo passo in questo progetto è creare uno schema. Ne ho fatti 2: uno su breadboard e uno puramente elettronico. Avremo bisogno di questi schemi per mantenere tutto pulito e assicurarci di non collegare cose inutili!

Ho usato un programma chiamato "Fritzing" per creare questi schemi se qualcuno è interessato.

Codificazione del colore:

  • Rosso = alimentazione
  • Verde = connessione
  • Blu = terra

Connessioni Raspberry Pi:

  • 3V3 => linea VC sulla breadboard, alimentando tutto
  • 5V => VCC del display a 7 segmenti
  • TERRA:

    • Macinato sulla breadboard
    • Massa del display a 7 segmenti
  • GPIO4 => Clock Select pin del MCP3008
  • GPIO10 => pin MOSI del MCP3008
  • GPIO9 => Pin MISO dell'MCP3008
  • GPIO11 => pin CLK del MCP3008
  • GPIO7 => Pin SDA del MFRC522
  • GPIO19 => DIG pin del primo sensore Touch
  • GPIO26 => DIG pin del secondo sensore Touch
  • GPIO20 => pin CLK del display a sette segmenti
  • GPIO21 = pin DIO del display a sette segmenti

Un paio di note sugli schemi:

  • Questo schema contiene solo 1 MCP, ciò significa che solo 8 coordinate potranno essere lette completamente.
  • Userò i pin GPIO come Chip Select. Poiché sono disponibili solo 2 pin di selezione del chip con potenzialmente 8 MCP.
  • Il display a 7 segmenti è quello suggerito da un insegnante, sono necessari solo 4 fili poiché funziona su un proprio protocollo.
  • Le resistenze sul pin digitale dei sensori tattili non sono completamente necessarie, ma sono consigliate.

Spiegazione dei componenti:

  • MCP con sensori di luce:

    • Un MCP3008 è un ADC a 10 bit a 8 canali:

      • un MCP3008 leggerà il valore analogico dei sensori di luce, questo valore dipende dalla quantità di luce che sta attualmente illuminando il sensore.
      • Nel mio codice Python riceverò quel valore analogico e lo convertirò in 1 o 0
  • Sensori tattili:

    Funziona proprio come un pulsante, io uso una classe per questo con un metodo di callback. Più su questo più tardi

    Lettore RFID (MFRC 522):

    • Utilizza un protocollo specifico (SPI) con un pacchetto installato.
    • Non è difficile codificare con un pacchetto installato
    • Legge il tag e restituisce il valore del tag
    • Puoi anche scrivere un valore su un tag, quindi invece di restituire il valore esadecimale, restituisce un nome, ad esempio

    7 segmenti (TM1637)

    • Utilizza anche un pacchetto installato per una facile codifica
    • Crea una variabile con un valore intero, quindi dividila in 4 caratteri e mostra quei caratteri

Passaggio 3: database SQL

Database SQL
Database SQL

Il terzo passo verso questo progetto è la creazione di un database SQL normalizzato 3NF!

Avremo bisogno di questo per:

  • Inserimento dati
  • Ottenere i dati e mostrarli sul nostro sito web
  • Poter vedere esattamente quanti turni sono trascorsi nell'attuale partita a scacchi!

Tabelle spiegate:

  • Giochi

    • Tiene traccia di chi ha vinto una determinata partita e quando è stata giocata
    • La chiave primaria qui è un GameID
    • La data ha un valore standard della data corrente
    • Il vincitore e il punteggio verranno aggiunti in seguito, al termine del gioco!
  • Giocatori (Spelers in olandese)

    • Questi vengono inseriti manualmente, ma possono essere inseriti anche utilizzando il sistema di carte RFID.
    • Scrivi un nome sulla tua carta, quindi leggi la carta e inserisci il nome in questa tabella
    • Tiene inoltre traccia del record di vittorie/sconfitte di ciascun giocatore, da visualizzare sul sito web
  • Storico (Storia)

    • Questa è la storia del turno
    • quando un pezzo degli scacchi viene spostato, verrà aggiornato qui
    • Ha 3 chiavi esterne, giocatore, gioco e scacchiera
    • il ReadDate (InleesDatum) è la data in cui il sensore è stato letto
    • ReadTime è uguale a ReadDate ma con un timestamp
    • LocationID(LocatieID) è il nome della coordinata su cui è posizionato. ad esempio "a3"
  • Pezzi degli scacchi (Schaakstukken in olandese)

    • Ogni pezzo degli scacchi ha un ID, una squadra, un nome e uno stato
    • La squadra è 1 o 2, nera o bianca;
    • Il nome di ogni pezzo sarebbe ad esempio "Pedone 1"
    • Lo stato indica che il pezzo è vivo o morto!

Passaggio 4: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Ora che abbiamo messo a posto tutti i pezzi corretti, possiamo iniziare a creare qualcosa!

Dividiamo questa parte in sotto passaggi poiché sarà più facile da spiegare:

  • Passaggio 1: si desidera praticare un foro in ogni coordinata della scacchiera come mostrato nella prima immagine, praticare anche un foro dove si desidera posizionare i sensori tattili, il lettore RFID e il display a 7 segmenti.

    Non dimenticare di praticare dei fori sul lato della scheda, questi sono per i fili dei diversi componenti sulla parte superiore della scheda. Molte perforazioni, lo so

  • Passaggio 2: prova a collegare uno o due sensori al Raspberry Pi, controlla se funzionano. Si desidera collegarli al lettore analogico MCP come spiegato in precedenza nel passaggio 2 (gli schemi).
  • Passaggio 3: questo potrebbe essere complicato e molto snervante, poiché le intestazioni dei ponticelli non sono molto bloccate in posizione, potresti volerle incollare tutte alla lavagna, singolarmente o più contemporaneamente. Devi assicurarti che rimangano bloccati sulla scacchiera, altrimenti non sarai in grado di leggere correttamente i sensori

    CONSIGLIO! Se ti rende più facile, un po 'di colla potrebbe effettivamente aiutare a mantenere i sensori più in posizione mentre li registri, l'ho scoperto nel modo più duro

Passaggio 5: software

Software
Software

Dopo aver creato l'hardware che puoi testare, proviamo a scrivere del codice per esso! Se vuoi dare un'occhiata al mio codice, per favore vai al mio github.

Back-endInnanzitutto avremo bisogno di un paio di pacchetti da installare, sono andato avanti e ho creato un elenco per te:

  • borraccia

    Questo è ciò su cui verrà eseguito il tuo codice Python

  • Flask-socketIO

    Per comunicare tra front-end e back-end

  • insensibile

    Utile per la lettura dei sensori di luce, funziona con matrix's

  • netifaces

    Per stampare il proprio indirizzo IP sul display a 7 segmenti

  • Pallone-CORS

    Condivisione di ricorsi di origine incrociata, consente di condividere i pacchetti tra diversi domini

Oltre a ciò, ho scritto un paio di classi e sei libero di usarle.

Fine frontale

Il codice del sito è disponibile anche sulla mia pagina github!

Per il front-end utilizzerò Chessboard.js. Questo inserisce una scacchiera facile da usare con pezzi facili da spostare!

Tutto sulla lavagna è personalizzabile, quindi divertiti! Dopo aver scaricato l'ultima versione, dovrai trascinare i file nel tuo progetto e collegarli alla pagina in cui vuoi mostrare una scacchiera!

Dopodiché, proviamo a creare una scheda, non sembra troppo difficile:

Innanzitutto, nel tuo html:

Secondo, nel tuo file javascript:

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

e il gioco è fatto, dovresti essere in grado di vedere una scacchiera ora! Sentiti libero di personalizzare la scheda nei file CSS!

Ora, vogliamo vedere alcune mosse sulla scacchiera, non troppo difficili. Ma dobbiamo personalizzarlo in modo che il comando di spostamento venga inviato dal back-end. Non entrerò troppo nei dettagli, ma vogliamo fare qualcosa del genere:

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

Riceviamo una lista dal nostro programma di back-end, e mettiamo un trattino tra le due coordinate, quindi usiamo il comando board.move per eseguire la mossa!

Questa è la mia spiegazione di ciò di cui abbiamo bisogno del plugin chessboard.js, vai al mio github per dare un'occhiata al codice da solo

Consigliato: