Indholdsfortegnelse:
- Trin 1: Forbrugsvarer/værktøjer
- Trin 2: Skemaer og planlægning
- Trin 3: SQL Database
- Trin 4: Hardware
- Trin 5: Software
Video: Digital skak - Spor dit skakspil online: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Jeg har spillet en masse skak lige siden jeg var ung, og da internettet har en enorm mængde websteder at spille skak på mod computere eller levende modstandere, har jeg aldrig engang fundet et websted, der sporer dit skakspil, som du er faktisk spiller i det virkelige liv. Så med dette projekt håber jeg at indse det!
Jeg håber at:
- Vær i stand til at spore bevægelsen af skakbrikkerne
- Se nogle leaderboards om tidligere spil.
- Spor tid og spil hurtigt som et professionelt spil.
Det er et meget komplekst projekt, da hvis det blev afsluttet, ville det kræve 64 lyssensorer og 8 chips at læse. Hvilket allerede er en stor opgave, og vi tæller ikke engang nogen af de andre sensorer.
Mit kollegium gav os en stor liste over ting at gøre:
- Lav en skematisk for vores projekt
- Opret en database til lagring og hentning af data.
- Design et websted ved hjælp af Adobe XD
- Genskab dette websted med CSS og HTML
- Læs sensorerne med python
- Vis sensordata på webstedet ved hjælp af kolbe.
I denne instruktive vejledning vil jeg guide dig på min rejse, og alle de problemer og frelseøjeblikke, jeg har været igennem de sidste par uger.
Trin 1: Forbrugsvarer/værktøjer
Forsyninger, materialer og værktøjer er det første skridt til et vellykket projekt!
Værktøjer:
- Loddekolbe
- Loddetin
- Tang
- Boremaskine
- Tape
Tilbehør:
- Raspberry Pi med micro SD -kort (4 GB burde være nok)
- Rasberry Pi T-skomager
- Skakbræt med brikker
- 7 segment display (TM 1637)
- 2 berøringssensorer (TTP223B)
- RFID -læser med kort (MFRC522)
- MCP3008 (Afhængigt af hvor langt du vil gå, kan du for hver MCP læse 8 skakkoordinater)
- Lysafhængig modstand type 5288 (8 for hver MCP du har)
- Overskrifter (mand til mand og kvinde til mand)
Hvis du skal købe alt, bør den anslåede kostpris være omkring 125 euro inklusive forsendelsesomkostninger (kun forbrugsvarer)!
Der er vedhæftet en Excel -fil med links og priser til alt, hvad du har brug for!
Trin 2: Skemaer og planlægning
Det næste trin i dette projekt er at oprette en skematisk. Jeg lavede 2: Et på brødbræt og et rent elektronisk. Vi får brug for denne skema for at holde alt rent og sikre, at vi ikke forbinder unødvendige ting!
Jeg brugte et program kaldet "Fritzing" til at oprette disse skemaer, hvis nogen er interesseret.
Farvekodning:
- Rød = strømforsyning
- Grøn = forbindelse
- Blå = jorden
Raspberry Pi -forbindelser:
- 3V3 => VC -linje på brødbrættet, der driver alt
- 5V => VCC med 7 segment display
-
GND:
- Jord på brødbrættet
- Grunden til 7 segmenters display
- GPIO4 => Ur Vælg pin på MCP3008
- GPIO10 => MOSI pin på MCP3008
- GPIO9 => MISO pin på MCP3008
- GPIO11 => CLK pin på MCP3008
- GPIO7 => SDA -pin på MFRC522
- GPIO19 => DIG pin på den første Touch sensor
- GPIO26 => DIG pin på den anden Touch sensor
- GPIO20 => CLK pin på displayet med syv segmenter
- GPIO21 = DIO -pin på syvende segmentdisplay
Et par noter om skemaerne:
- Denne skema indeholder kun 1 MCP, det betyder, at kun 8 koordinater vil kunne læses fuldstændigt.
- Jeg vil bruge GPIO pins som min Chip Select. Da kun 2 Chip select pins er tilgængelige med potentielt 8 MCP'er.
- Displayet med 7 segmenter er foreslået af en lærer. Kun 4 ledninger er nødvendige, da det fungerer på sin egen protokol.
- Modstandene på berøringssensorernes digitale pin er ikke fuldt ud nødvendige, men rådes.
Forklaring af komponenterne:
-
MCP med lyssensorer:
-
En MCP3008 er en 8 -kanals 10 bit ADC:
- en MCP3008 vil aflæse lyssensorernes analoge værdi, denne værdi afhænger af lysmængden, der aktuelt skinner på sensoren.
- I min python -kode modtager jeg den analoge værdi og konverterer den til en 1 eller 0
-
- Bruger en specifik protokol (SPI) med en installeret pakke.
- Ikke svært at kode med en installeret pakke
- Læser mærket og returnerer værdien af mærket
- Du kan også skrive en værdi til et tag, så i stedet for at returnere den hexadecimale værdi returnerer den f.eks. Et navn
- Bruger også en installeret pakke til nem kodning
- Opret en variabel med en heltalsværdi, del den derefter op i 4 tegn og vis disse tegn
Berøringssensorer:
Virker ligesom en knap, jeg bruger en klasse til dette med en tilbagekaldsmetode. Mere om dette senere
RFID -læser (MFRC 522):
7 segment (TM1637)
Trin 3: SQL Database
Det tredje trin i retning af dette projekt er at oprette en 3NF normaliseret SQL -database!
Vi får brug for dette til:
- Indsættelse af data
- Henter data og viser dem på vores websted
- At kunne se præcis, hvor mange sving der er gået i det aktuelle skakspil!
Tabeller forklaret:
-
Spil
- Dette spor, hvem der vandt et bestemt spil, og hvornår spillet blev spillet
- Den primære nøgle her er et GameID
- Datoen har en standardværdi for den aktuelle dato
- Vinder og score tilføjes senere, efter at spillet er afsluttet!
-
Spillere (Spelers på hollandsk)
- Disse indsættes manuelt, men kan også indsættes ved hjælp af RFID -kortsystemet.
- Skriv et navn til dit kort, læs derefter kortet, og indsæt navnet i denne tabel
- Det sporer også vinder / tab rekord for hver spiller, der skal vises på webstedet
-
Historiek (historie)
- Dette er turhistorien
- når et skakbrik flyttes, opdateres det her
- Den har 3 udenlandske nøgler, spiller, spil og skakbrik
- ReadDate (InleesDatum) er datoen, hvor sensoren blev læst
- ReadTime er det samme som ReadDate, men med et tidsstempel
- LocationID (LocatieID) er navnet på den koordinat, hvor den er placeret. for eksempel "a3"
-
Skakstykker (Schaakstukken på hollandsk)
- Hvert skakbrik har et id, hold, navn og status
- Holdet er enten 1 eller 2, sort eller hvidt;
- Navnet på et stykke nogensinde ville være "Pawn 1"
- Status betyder, at stykket er levende eller dødt!
Trin 4: Hardware
Nu hvor vi har alle de korrekte stykker på plads, kan vi begynde at skabe noget!
Lad os opdele denne del i undertrin, da det bliver lettere at forklare:
-
Trin 1: Du vil bore et hul i hver koordinat på dit skakbræt som vist på det første billede, også bore et hul, hvor du vil placere berøringssensorer, RFID -læser og 7 -segment display.
Glem ikke at bore nogle huller på siden af brættet, disse er til ledningerne i de forskellige komponenter oven på brættet. Masser af boring, ved jeg
- Trin 2: Prøv at koble en eller to sensorer til Raspberry Pi, kontroller om de virker. Du vil slutte dem til den analoge MCP -læser som forklaret tidligere i trin 2 (skemaerne).
-
Trin 3: Dette kan være svært og meget nervepirrende, da springerhovederne ikke sidder meget fast på plads, vil du måske tape dem alle på brættet, enten individuelt eller flere på én gang. Du skal sørge for, at de sidder fast på skakbrættet, ellers kan du ikke læse sensorerne med succes
TIP! Hvis det gør det lettere for dig, kan lidt lim faktisk hjælpe med at holde sensorerne mere på plads, mens du taper dem, jeg opdagede dette på den hårde måde
Trin 5: Software
Når du har lavet hardware, som du kan teste, lad os prøve at skrive en kode til det! Hvis du vil se på min kode, skal du gå til min github.
Back-end Først skal vi bruge et par pakker til at blive installeret, jeg gik videre og lavede en liste til dig:
-
kolbe
Det er hvad din python -kode kører på
-
Kolbe-socketIO
At kommunikere mellem front-end og back-end
-
numpy
Nyttig til læsning af lyssensorer, fungerer med matrixer
-
netfaces
For at udskrive din egen IP -adresse på 7 -segmentet display
-
Kolbe-CORS
Cross origin -regressdeling, gør det muligt at dele pakker på tværs af forskellige domæner
Ved siden af det har jeg skrevet et par klasser, og du kan frit bruge dem.
Front-end
Webstedskoden er også tilgængelig på min github -side!
Til front-end bruger jeg Chessboard.js. Dette indsætter et let at bruge skakbræt med let at flytte stykker!
Alt på tavlen kan tilpasses, så hav det sjovt! Efter at have downloadet den nyeste version, skal du trække filerne over i dit projekt og linke dem til den side, hvor du vil vise et skakbræt!
Lad os derefter prøve at oprette et bord, der ikke ser for hårdt ud:
Først i din html:
For det andet i din javascript -fil:
board1 = ChessBoard ('board1', 'start');
og der har du det, du burde kunne se et skakbræt nu! Du er velkommen til at tilpasse tavlen i CSS -filerne!
Nu vil vi se nogle træk på skakbrættet, ikke for hårdt. Men vi er nødt til at tilpasse det, så kommandoen move bliver sendt af back-end. Jeg vil ikke gå for meget i detaljer, men vi vil gerne gøre sådan noget:
new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (kommando);
Vi modtager en liste fra vores back-end-program og sætter en bindestreg imellem de to koordinater, og brug derefter kommandoen board.move til at udføre flytningen!
Det er min forklaring på, hvad vi har brug for af chessboard.js -pluginet, tag til min github for selv at kigge på koden
Anbefalede:
Styr dit modeltoglayout med dit tastatur !: 12 trin
Styr dit modeltoglayout med dit tastatur !: I en af mine tidligere instruktioner viste jeg dig, hvordan du kan styre dit modeltog med din fjernbetjening til tv. Du kan også tjekke en opgraderet version her. I denne Instructable vil jeg vise dig, hvordan du styrer et modeltoglayout med et tastatur
Sådan rives en digital tykkelse ned, og hvordan fungerer en digital tykkelse: 4 trin
Sådan rives en digital tykkelse ned, og hvordan fungerer en digital tykkelse: Mange mennesker ved, hvordan man bruger målepunkter. Denne vejledning lærer dig, hvordan du river en digital tykkelse og en forklaring på, hvordan den digitale tykkelse fungerer
Styr dit modeltoglayout med dit fjernsyn!: 7 trin (med billeder)
Styr dit modeltoglayout med dit fjernsyn!: I denne instruktør vil jeg vise dig, hvordan du laver et IR -fjernbetjeningssystem til et modeltog. Du vil derefter kunne styre dine tog, mens du slapper af på din sofa. Så lad os komme i gang
LED skak sæt - enkel version: 12 trin
LED Chess Set-Enkel version: Tetranitrate postede tidligere en glimrende instruktion om, hvordan man laver et LED-skaksæt her: https: //www.instructables.com/id/LED-Chess-Set/Jeg fandt det gennem BoingBoing, men kunne ikke ' t være generet at lave en, der så så flash. Jeg ville bare have en
Sådan snyder du ved skak ved hjælp af en Iphone eller Ipod Touch: 4 trin
Sådan snyder du ved skak Brug af en Iphone eller Ipod Touch: Dette er en instruktion om, hvordan man snyder ved skak ved hjælp af en iphone eller ipod touchit vil tage cirka en minuite for at komme i gang Ingen jailbreaking nødvendig Det er utroligt enkelt og får dig til at vinde i skak mod de fleste mennesker