Sisällysluettelo:
- Vaihe 1: Tarvikkeet/työkalut
- Vaihe 2: Kaaviot ja suunnittelu
- Vaihe 3: SQL -tietokanta
- Vaihe 4: Laitteisto
- Vaihe 5: Ohjelmisto
Video: Digitaalinen shakki - Seuraa shakkipeliäsi verkossa: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Olen pelannut paljon shakkia nuoresta asti, ja koska verkossa on valtava määrä sivustoja, joilla voi pelata shakkia tietokoneita tai live -vastustajia vastaan, en ole koskaan löytänyt verkkosivustoa, joka seuraa shakkipeliäsi oikeastaan pelaamassa tosielämässä. Joten tämän projektin avulla toivon ymmärtäväni sen!
Toivon:
- Pystyy seuraamaan shakkipalojen liikettä
- Katso joitakin tulostauluja menneistä peleistä.
- Seuraa aikaa ja pelaa nopeasti kuin ammattimainen peli.
Se on erittäin monimutkainen projekti, koska sen valmistuminen vaatisi 64 valoanturia ja 8 sirua lukemiseen. Mikä on jo iso tehtävä, emmekä edes laske muita antureita.
Yliopistoni antoi meille suuren luettelon tehtävistä:
- Luo kaavio projektillemme
- Luo tietokanta tietojen tallentamista ja keräämistä varten.
- Suunnittele verkkosivusto Adobe XD: llä
- Luo tämä sivusto uudelleen CSS: llä ja HTML: llä
- Lue anturit pythonilla
- Näytä anturitiedot verkkosivustolla pullon avulla.
Tässä ohjeessa opastan sinua matkallani, ja kaikki vaikeudet ja pelastuksen hetket olen käynyt läpi nämä viimeiset pari viikkoa.
Vaihe 1: Tarvikkeet/työkalut
Tarvikkeet, materiaalit ja työkalut ovat ensimmäinen askel onnistuneeseen projektiin!
Työkalut:
- Juotin
- Tina juotos
- Pihdit
- Porakone
- Nauha
Tarvikkeet:
- Raspberry Pi micro SD -kortilla (4 Gt pitäisi riittää)
- Rasberry Pi T-kenkä
- Shakkilauta palasilla
- 7 segmentin näyttö (TM 1637)
- 2 kosketusanturia (TTP223B)
- RFID -lukija korteilla (MFRC522)
- MCP3008 (Riippuen siitä, kuinka pitkälle haluat mennä, voit lukea jokaisesta MCP: stä 8 shakkikoordinaattia)
- Valosta riippuva vastustyyppi 5288 (8 jokaiselle käytössäsi olevalle MCP: lle)
- Otsikot (uros -uros ja naaras -uros)
Jos sinun on ostettava kaikki, arvioidun omakustannushinnan tulisi olla noin 125 euroa sisältäen toimituskulut (vain tarvikkeet)!
Liitteenä on Excel -tiedosto, jossa on linkit ja hinnat kaikkeen mitä tarvitset!
Vaihe 2: Kaaviot ja suunnittelu
Seuraava vaihe tässä projektissa on luoda kaavio. Tein 2: Yksi leipälaudalla ja toinen puhtaasti elektroninen. Tarvitsemme tämän kaavion pitääksemme kaiken puhtaana ja varmistaaksemme, että emme yhdistä tarpeettomia tavaroita!
Käytin ohjelmaa nimeltä "Fritzing" luomaan nämä kaaviot, jos jotakuta kiinnostaa.
Värikoodit:
- Punainen = virtalähde
- Vihreä = yhteys
- Sininen = maa
Raspberry Pi -yhteydet:
- 3V3 => VC -linja leipälaudalla, joka saa kaiken virtaa
- 5V => 7 segmentin näytön VCC
-
GND:
- Maata leipälaudalla
- 7 segmentin näytön pohja
- GPIO4 => Kello Valitse MCP3008: n nasta
- GPIO10 => MCP3008: n MOSI -nasta
- GPIO9 => MCP3008: n MISO -nasta
- GPIO11 => MCP3008: n CLK -nasta
- GPIO7 => MFRC522: n SDA -nasta
- GPIO19 => Ensimmäisen kosketusanturin DIG -nasta
- GPIO26 => Toisen kosketusanturin DIG -nasta
- GPIO20 => Seitsemän segmentin näytön CLK -nasta
- GPIO21 = seitsemännen segmentin näytön DIO -nasta
Pari huomautusta kaavioista:
- Tämä kaavio sisältää vain 1 MCP: n, mikä tarkoittaa, että vain 8 koordinaattia voidaan lukea kokonaan.
- Käytän GPIO -nastoja Chip Selectina. Koska vain 2 Chip Select -tappia on saatavana mahdollisesti 8 MCP: n kanssa.
- Opettajan ehdottama 7 -segmenttinen näyttö, vain 4 johtoa tarvitaan, koska se toimii omalla protokollallaan.
- Kosketusantureiden digitaalisen tapin vastuksia ei tarvita täysin, mutta ne ovat suositeltavia.
Osien selittäminen:
-
MCP valoanturilla:
-
MCP3008 on 8 -kanavainen 10 -bittinen ADC:
- MCP3008 lukee valosensorien analogisen arvon, tämä arvo riippuu anturiin parhaillaan palamisesta.
- Python -koodissani vastaanotan analogisen arvon ja muunnan sen 1: ksi tai 0: ksi
-
- Käyttää tiettyä protokollaa (SPI) asennetun paketin kanssa.
- Ei ole vaikea koodata asennetulla paketilla
- Lukee tunnisteen ja palauttaa tunnisteen arvon
- Voit myös kirjoittaa arvon tunnisteeseen, joten heksadesimaalisen arvon palauttamisen sijaan se palauttaa nimen
- Käyttää myös asennettua pakettia koodauksen helpottamiseksi
- Luo muuttuja, jolla on kokonaisluku, jaa se sitten neljään merkkiin ja näytä nämä merkit
Kosketusanturit:
Toimii aivan kuin painike, käytän tätä luokkaa soittoprosessilla. Tästä lisää myöhemmin
RFID -lukija (MFRC 522):
7 -segmentti (TM1637)
Vaihe 3: SQL -tietokanta
Kolmas askel kohti tätä projektia on luoda 3NF normalisoitu SQL -tietokanta!
Tarvitsemme tätä:
- Tietojen lisääminen
- Tietojen hakeminen ja näyttäminen verkkosivustollamme
- Pystyy näkemään tarkasti, kuinka monta kierrosta on kulunut nykyisessä shakkipelissä!
Taulukot selitetään:
-
Pelit
- Tämä seuraa, kuka voitti tietyn pelin ja milloin peli pelattiin
- Ensisijainen avain tässä on GameID
- Päivämäärällä on nykyisen päivämäärän vakioarvo
- Voittaja ja pisteet lisätään myöhemmin, pelin päätyttyä!
-
Pelaajat (Spelers hollanniksi)
- Nämä lisätään manuaalisesti, mutta ne voidaan lisätä myös RFID -korttijärjestelmän avulla.
- Kirjoita kortille nimi, lue kortti ja lisää nimi tähän taulukkoon
- Se seuraa myös kunkin pelaajan voitto / tappio -ennätystä, joka näytetään verkkosivustolla
-
Historia (Historia)
- Tämä on käännehistoria
- kun shakkinappula siirretään, se päivitetään täällä
- Siinä on 3 vierasta avainta, pelaaja, peli ja shakkinappula
- ReadDate (InleesDatum) on päivämäärä, jolloin anturi luettiin
- ReadTime on sama kuin ReadDate, mutta sillä on aikaleima
- LocationID (LocatieID) on koordinaatin nimi, johon se on sijoitettu. esimerkiksi "a3"
-
Shakkipalat (Schaakstukken hollanniksi)
- Jokaisella shakkinappulalla on tunnus, joukkue, nimi ja tila
- Joukkue on joko 1 tai 2, musta tai valkoinen;
- Ainaisen kappaleen nimi olisi "Pawn 1"
- Tila tarkoittaa, että pala on elossa tai kuollut!
Vaihe 4: Laitteisto
Nyt kun olemme saaneet kaikki oikeat palaset paikoilleen, voimme alkaa luoda jotain!
Jaetaan tämä osa alivaiheisiin, koska se on helpompi selittää:
-
Vaihe 1: Jos haluat porata reiän shakkilaudasi jokaiseen koordinaattiin ensimmäisen kuvan mukaisesti, poraa myös reikä, johon haluat sijoittaa kosketusanturit, RFID -lukijan ja 7 segmentin näytön.
Älä unohda porata joitakin reikiä levyn sivulle, nämä ovat levyn päällä olevien eri komponenttien johdot. Paljon poraamista, tiedän
- Vaihe 2: Yritä kytkeä yksi tai kaksi anturia Raspberry Pi -laitteeseen, tarkista, toimivatko ne. Haluat liittää ne analogiseen MCP -lukijaan, kuten edellä vaiheessa 2 (Kaaviot) on selitetty.
-
Vaihe 3: Tämä voi olla hankalaa ja erittäin hermoja tuhoavaa, koska hyppääjän otsikot eivät ole kovin jumissa paikoillaan, saatat haluta teipata ne kaikki taululle joko yksittäin tai useita kerralla. Sinun on varmistettava, että ne pysyvät jumissa shakkilaudalla, muuten et voi lukea antureita onnistuneesti
KÄRKI! Jos se helpottaa sinua, jotkut liimat voivat todella auttaa pitämään anturit paremmin paikallaan nauhoittaessani, huomasin tämän vaikealla tavalla
Vaihe 5: Ohjelmisto
Kun olet tehnyt laitteiston, jota voit testata, yritämme kirjoittaa sille koodia! Jos haluat katsoa koodiani, mene githubini.
Takaosa Ensin tarvitsemme pari pakettia asennettavaksi, jatkoin ja tein luettelon sinulle:
-
pullo
Tätä python -koodiasi käytetään
-
PullorasiaIO
Kommunikoida etu- ja takaosan välillä
-
numpy
Hyödyllinen valosensorien lukemiseen, toimii matriisin kanssa
- netifasseja
Voit tulostaa oman IP -osoitteesi 7 -segmentin näyttöön
-
Pullo-CORS
Alkuperäisten turvautumisoikeuksien jakaminen mahdollistaa pakettien jakamisen eri toimialueille
Tämän lisäksi olen kirjoittanut pari luokkaa ja voit vapaasti käyttää niitä.
Käyttöliittymä
Verkkosivun koodi löytyy myös github -sivultani!
Käyttöliittymässä käytän Chessboard.js-tiedostoa. Tämä lisää helppokäyttöisen shakkilaudan, jossa on helposti siirrettävät kappaleet!
Kaikki taululla olevat asiat ovat muokattavissa, joten pidä hauskaa! Kun olet ladannut uusimman version, sinun on vedettävä tiedostot projektiin ja linkitettävä ne sivulle, jolla haluat näyttää shakkilaudan!
Sen jälkeen yritetään luoda taulu, ei näytä liian kovalta:
Ensinnäkin html:
Toiseksi JavaScript -tiedostossa:
board1 = ChessBoard ('board1', 'start');
ja siellä sinulla on se, sinun pitäisi pystyä näkemään shakkilauta nyt! Voit vapaasti muokata taulua CSS -tiedostoissa!
Nyt haluamme nähdä joitakin liikkeitä shakkilaudalla, ei liian kovaa. Mutta meidän on mukautettava sitä, jotta siirtokomento lähetetään taustapuolelta. En mene liikaa yksityiskohtiin, mutta haluamme tehdä jotain tällaista:
new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (kommando);
Saamme luettelon taustaohjelmastamme ja laitamme viivan kahden koordinaatin väliin ja käytä sitten board.move-komentoa suorittamaan siirto!
Tämä on selitykseni siitä, mitä tarvitsemme chessboard.js -laajennuksen, mene githubini katsomaan koodia itse
Suositeltava:
Näytä teksti OLED -verkossa Internetin kautta: 9 vaihetta
Näytä teksti OLED -verkossa Internetin kautta: Hei ja tervetuloa! Tämä lyhyt opetusohjelma opettaa näyttämään tekstiä Magicbitillä Magicblocks -tekniikan avulla. Käyttämällä Inject Blockia. Käytä Dashboardia.Ensinnäkin kirjaudu sisään Magicb -laitteeseesi
Verkkokameran tekeminen verkossa!: 8 vaihetta (kuvilla)
Verkkokameran luominen verkkokameralle!: Vaiheittainen opas IP -kameran kotelon muokkaamiseen siten, että se voidaan kiinnittää suoraan Fish Tankiin. Tämä johtuu siitä, että verkkokamerat on yleensä suunniteltu sijoitettaviksi kohteen eteen tai ne tarvitsevat jalustaa. Kuitenkin Fish Ta
Kuinka purkaa digitaalinen jarrusatula ja miten digitaalinen jarrusatula toimii: 4 vaihetta
Kuinka purkaa digitaalinen jarrusatula ja miten digitaalinen jarrusatula toimii: Monet ihmiset tietävät, miten jarrusatulat käytetään mittaamiseen. Tämä opetusohjelma opettaa sinulle, kuinka purkaa digitaalinen jarrusatula, ja selitys siitä, miten digitaalinen jarrusatula toimii
Task shakki: 4 vaihetta
Task shakki: Se on shakki! Taskussa. Tämän projektin tarkoituksena on luoda pieni laite, jolla voidaan ajaa pieniä pelejä, kuten käärme, pac-man, tetris ja jopa shakki
Yksinkertainen ja halpa digitaalinen digitaalinen äänilähetys: 4 vaihetta
Yksinkertainen ja halpa digitaalinen laser -äänilähetys: Siitä lähtien, kun tein laserpistoolin, olen ajatellut moduloida laserin lähettämään ääntä joko huvin vuoksi (lasten sisäpuhelin) tai ehkä lähettämään tietoja kehittyneempää laserpistoolia varten , jonka avulla vastaanotin voi selvittää, kuka häntä osui