
Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02

Jeg har spilt mye sjakk siden jeg var ung, og siden nettet har en enorm mengde nettsteder å spille sjakk mot datamaskiner eller live -motstandere, har jeg aldri en gang funnet et nettsted som sporer sjakkspillet ditt som du er spiller faktisk i det virkelige liv. Så med dette prosjektet håper jeg å innse det!
Jeg håper å:
- Kunne spore bevegelsen til sjakkbrikkene
- Se noen ledertavler om tidligere spill.
- Spor tid og spill raskt som et profesjonelt spill.
Det er et veldig komplekst prosjekt siden det ville kreve 64 lyssensorer og 8 sjetonger for å lese hvis det ble fullført. Som allerede er en stor oppgave, og vi teller ikke engang noen av de andre sensorene.
Høgskolen min ga oss en stor liste over ting å gjøre:
- Lag en skjematisk for vårt prosjekt
- Lag en database for lagring og henting av data.
- Design et nettsted ved hjelp av Adobe XD
- Gjenopprett dette nettstedet med CSS og HTML
- Les sensorene med python
- Vis sensordata på nettstedet ved hjelp av kolbe.
I denne instruksen vil jeg guide deg på min reise, og alle problemene og øyeblikkene med frelse jeg har gått gjennom de siste par ukene.
Trinn 1: Rekvisita/verktøy
Rekvisita, materialer og verktøy er det første trinnet til et vellykket prosjekt!
Verktøy:
- Loddejern
- Loddetinn
- Tang
- Drill maskin
- Teip
Rekvisita:
- Raspberry Pi med micro SD -kort (4 GB burde være nok)
- Rasberry Pi T-skomaker
- Sjakkbrett med brikker
- 7 -segmenters skjerm (TM 1637)
- 2 berøringssensorer (TTP223B)
- RFID -leser med kort (MFRC522)
- MCP3008 (Avhengig av hvor langt du vil gå, for hver MCP kan du lese 8 sjakkoordinater)
- Lysavhengig motstand type 5288 (8 for hver MCP du har)
- Overskrifter (Mann til Mann og Kvinne til Mann)
Hvis du trenger å kjøpe alt, bør den estimerte kostprisen være rundt 125 euro inkludert fraktkostnader (kun rekvisita)!
Det er en Excel -fil vedlagt med lenker og priser til alt du trenger!
Trinn 2: Skjemaer og planlegging


Det neste trinnet i dette prosjektet er å lage en skjematisk. Jeg lagde 2: En på brødbrett og en rent elektronisk. Vi trenger denne skjemaet for å holde alt rent og sørge for at vi ikke kobler til unødvendige ting!
Jeg brukte et program kalt "Fritzing" for å lage disse skjemaene hvis noen er interessert.
Fargekoding:
- Rød = strømforsyning
- Grønn = tilkobling
- Blå = bakken
Raspberry Pi -tilkoblinger:
- 3V3 => VC -linje på brødbrettet, som driver alt
- 5V => VCC for 7 segment display
-
GND:
- Bakken på brødbrettet
- Bakgrunnen for 7 -segmenters display
- GPIO4 => Klokke Velg pinne på MCP3008
- GPIO10 => MOSI -pinne på MCP3008
- GPIO9 => MISO -pin på MCP3008
- GPIO11 => CLK -pinne på MCP3008
- GPIO7 => SDA -pinne på MFRC522
- GPIO19 => DIG -pinne på den første berøringssensoren
- GPIO26 => DIG -pin på den andre berøringssensoren
- GPIO20 => CLK -pin på displayet med syv segmenter
- GPIO21 = DIO -pin på det syvende segmentet
Et par notater om skjemaene:
- Denne skjemaet inneholder bare 1 MCP, dette betyr at bare 8 koordinater vil kunne leses fullt ut.
- Jeg kommer til å bruke GPIO -pinner som Chip Select. Siden bare 2 Chip select pins er tilgjengelige med potensielt 8 MCP -er.
- Displayet med 7 segmenter er foreslått av en lærer. Bare 4 ledninger er nødvendig siden det fungerer på sin egen protokoll.
- Motstandene på den digitale pinnen til berøringssensorene er ikke fullt nødvendig, men anbefales.
Forklarer komponentene:
-
MCP med lyssensorer:
-
En MCP3008 er en 8 -kanals 10 -biters ADC:
- en MCP3008 vil lese lyssensorenes analoge verdi, denne verdien avhenger av lysmengden som for øyeblikket skinner på sensoren.
- I min python -kode vil jeg motta den analoge verdien og konvertere den til en 1 eller 0
-
- Bruker en spesifikk protokoll (SPI) med en installert pakke.
- Ikke vanskelig å kode med en installert pakke
- Leser koden og returnerer verdien av koden
- Du kan også skrive en verdi til en tag, så i stedet for å returnere den heksadesimale verdien, returnerer den for eksempel et navn
- Bruker også en installert pakke for enkel koding
- Lag en variabel med en heltallsverdi, del den deretter opp i 4 tegn og vis disse tegnene
Berøringssensorer:
Fungerer akkurat som en knapp, jeg bruker en klasse for dette med en tilbakeringingsmetode. Mer om dette senere
RFID -leser (MFRC 522):
7 segment (TM1637)
Trinn 3: SQL Database

Det tredje trinnet mot dette prosjektet er å lage en 3NF normalisert SQL -database!
Vi trenger dette for:
- Sette inn data
- Få data og vis dem på nettstedet vårt
- Å kunne se nøyaktig hvor mange svinger som har gått i det nåværende sjakkspillet!
Tabeller forklart:
-
Spill
- Dette sporer hvem som vant et bestemt spill og når spillet ble spilt
- Hovednøkkelen her er et GameID
- Datoen har en standardverdi for gjeldende dato
- Vinneren og poengsummen blir lagt til senere, etter at kampen er ferdig!
-
Spillere (spelere på nederlandsk)
- Disse settes inn manuelt, men kan også settes inn ved hjelp av RFID -kortsystemet.
- Skriv et navn til kortet ditt, les deretter kortet og sett inn navnet i denne tabellen
- Det sporer også seier / tap -rekorden for hver spiller, som skal vises på nettstedet
-
Historiek (historie)
- Dette er svinghistorien
- Når en sjakkbrikke flyttes, oppdateres den her
- Den har 3 utenlandske nøkler, spiller, spill og sjakkbrikke
- ReadDate (InleesDatum) er datoen da sensoren ble lest
- ReadTime er det samme som ReadDate, men med et tidsstempel
- LocationID (LocatieID) er navnet på koordinaten der den er plassert. for eksempel "a3"
-
Sjakkstykker (Schaakstukken på nederlandsk)
- Hver sjakkbrikke har ID, lag, navn og status
- Teamet er enten 1 eller 2, svart eller hvitt;
- Navnet på stykket noensinne vil være "Pawn 1"
- Status betyr at stykket er levende eller dødt!
Trinn 4: Maskinvare



Nå som vi har alle de riktige brikkene på plass, kan vi begynne å lage noe!
La oss dele denne delen i deltrinn, da det blir lettere å forklare:
-
Trinn 1: Du vil bore et hull i hver koordinat på sjakkbrettet ditt som vist på det første bildet, også bore et hull der du vil plassere berøringssensorer, RFID -leser og 7 -segmenters display.
Ikke glem å bore noen hull på siden av brettet, disse er for ledningene til de forskjellige komponentene på toppen av brettet. Mye boring, jeg vet
- Trinn 2: Prøv å koble en eller to sensorer til Raspberry Pi, sjekk om de fungerer. Du vil koble dem til den analoge MCP -leseren som forklart tidligere i trinn 2 (skjemaene).
-
Trinn 3: Dette kan være vanskelig og veldig nervepirrende, siden hopperhodene ikke er veldig fast på plass, vil du kanskje tape dem alle på brettet, enten individuelt eller flere samtidig. Du må sørge for at de sitter fast på sjakkbrettet, ellers kan du ikke lese sensorene vellykket
TIPS! Hvis det gjør det lettere for deg, kan litt lim faktisk hjelpe til med å holde sensorene mer på plass mens du teiper dem, jeg oppdaget dette på den harde måten
Trinn 5: Programvare

Etter at du har laget maskinvare som du kan teste, la oss prøve å skrive noen kode for den! Hvis du vil ta en titt på koden min, kan du gå til githuben min.
Back-end Først vi trenger et par pakker for å installeres, gikk jeg videre og laget en liste for deg:
-
kolbe
Dette er hva pythonkoden din skal kjøre på
-
Kolbe-socketIO
For å kommunisere mellom front-end og back-end
-
numpy
Nyttig for å lese lyssensorene, fungerer med matrisene
-
nettverk
For å skrive ut din egen IP -adresse på 7 -segmenters display
-
Kolbe-CORS
Cross origin recourse sharing, gjør det mulig å dele pakker på tvers av forskjellige domener
Ved siden av det har jeg skrevet et par klasser, og du står fritt til å bruke dem.
Front-end
Nettstedskoden er også tilgjengelig på github -siden min!
For front-end bruker jeg Chessboard.js. Dette setter inn et lett å bruke sjakkbrett med brikker som er lett å flytte!
Alt på tavlen kan tilpasses, så ha det gøy! Etter å ha lastet ned den nyeste versjonen, må du dra filene over til prosjektet og koble dem til siden der du vil vise et sjakkbrett!
Etter det, la oss prøve å lage et brett, det ser ikke så vanskelig ut:
Først i html:
For det andre, i javascript -filen din:
board1 = ChessBoard ('board1', 'start');
og der har du det, du burde kunne se et sjakkbrett nå! Tilpass gjerne brettet i CSS -filene!
Nå vil vi se noen trekk på sjakkbrettet, ikke så vanskelig. Men vi må tilpasse det slik at kommandoen flytte blir sendt av back-end. Jeg vil ikke gå for mye i detalj, men vi ønsker å gjøre noe slikt:
new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (kommando);
Vi mottar en liste fra back-end-programmet vårt, og setter et bindestrek mellom de to koordinatene, og bruk deretter kommandoen board.move for å utføre flyttingen!
Det er min forklaring på hva vi trenger av chessboard.js -pluginet, gå over til githuben min for å ta en titt på koden selv
Anbefalt:
Online værstasjon: 6 trinn

Online værstasjon: Du vil ikke tro det! Men fra begynnelsen. Jeg jobbet med den neste versjonen av CoolPhone og antallet feil jeg gjorde da den ble designet, tvang meg til å ta en pause fra den. Jeg tok på meg skoene og gikk ut. Det viste seg å være kaldt, så jeg
Online værstasjon (NodeMCU): 7 trinn (med bilder)

Online værstasjon (NodeMCU): Hei folkens! Jeg håper du allerede likte min tidligere instruerbare " Arduino Robot 4WR " og du er klar for et nytt, som vanlig laget jeg denne opplæringen for å veilede deg trinn for trinn mens du lager ditt eget elektroniske prosjekt. Under utarbeidelsen av dette
Hvordan rive en digital tykkelse og hvordan fungerer en digital tykkelse: 4 trinn

Hvordan rive en digital tykkelse og hvordan fungerer en digital tykkelse: Mange vet hvordan man bruker måler for måling. Denne opplæringen vil lære deg hvordan du river en digital tykkelse og en forklaring på hvordan den digitale tykkelsen fungerer
Claqueta Digital Con Arduino (Digital Clapperboard With Arduino): 7 trinn

Claqueta Digital Con Arduino (Digital Clapperboard With Arduino): Crea tu propia claqueta digital, también puedes convertir una claqueta no digital en una, utilizando Arduino.MATERIALES Display of 7 segmentos MAX7219 and 8 digitos compatible with arduino.Modulo de Reloj RTC model DS3231 con arduino.Arduin
Hvordan jukse i sjakk ved hjelp av en iPhone eller iPod Touch: 4 trinn

Hvordan jukse i sjakk ved hjelp av en Iphone eller Ipod Touch: Dette er en instruksjon om hvordan du kan jukse i sjakk ved å bruke en iphone eller ipod touchit vil ta omtrent en minuite for å komme i gang Ingen jailbreaking nødvendig Det er utrolig lett og får deg til å vinne i sjakk mot de fleste