Përmbajtje:

Shahu dixhital - Ndiqni lojën tuaj të shahut Online: 5 hapa
Shahu dixhital - Ndiqni lojën tuaj të shahut Online: 5 hapa

Video: Shahu dixhital - Ndiqni lojën tuaj të shahut Online: 5 hapa

Video: Shahu dixhital - Ndiqni lojën tuaj të shahut Online: 5 hapa
Video: A 1000 Year Old Abandoned Italian Castle - Uncovering It's Mysteries! 2024, Nëntor
Anonim
Shahu dixhital - Ndiqni lojën tuaj të shahut Online
Shahu dixhital - Ndiqni lojën tuaj të shahut Online

Unë kam luajtur shumë shah që kur isha i ri, dhe meqenëse uebi ka një sasi të madhe faqesh në internet për të luajtur shah kundër kompjuterëve ose kundërshtarëve të drejtpërdrejtë, kurrë nuk kam gjetur një faqe në internet që ndjek lojën tuaj të shahut që jeni në fakt duke luajtur në jetën reale. Kështu që me këtë projekt shpresoj ta kuptoj!

Unë shpresoj që:

  • Të jetë në gjendje të ndjekë lëvizjen e pjesëve të shahut
  • Shikoni disa tabela drejtuese për lojërat e kaluara.
  • Ndiqni kohën dhe luani shpejt si një lojë profesionale.

Ashtë një projekt shumë kompleks pasi që nëse përfundon do të kërkojë 64 sensorë drite dhe 8 patate të skuqura për të lexuar. E cila tashmë është një detyrë e madhe dhe ne as nuk po llogarisim asnjë nga sensorët e tjerë.

Kolegji im na dha një listë të madhe të gjërave për të bërë:

  1. Krijoni një skemë për projektin tonë
  2. Krijoni një bazë të dhënash për ruajtjen dhe marrjen e të dhënave.
  3. Krijoni një faqe në internet duke përdorur Adobe XD
  4. Krijoni këtë faqe në internet me CSS dhe HTML
  5. Lexoni sensorët me python
  6. Trego të dhënat e sensorit në faqen e internetit duke përdorur balonë.

Në këtë udhëzues do t'ju udhëheq në udhëtimin tim, dhe të gjitha telashet dhe momentet e shpëtimit që kam kaluar këto dy javët e fundit.

Hapi 1: Furnizime/Mjete

Furnizimet, materialet dhe mjetet janë hapi i parë drejt një projekti të suksesshëm!

Mjetet:

  • Makine per ngjitjen e metalit
  • Kallaji i saldimit
  • Pincë
  • Makinë shpuese
  • Kasetë

Furnizimet:

  • Raspberry Pi me kartë micro SD (4 GB duhet të jetë e mjaftueshme)
  • Këpucar Rasberry Pi T
  • Bordi i shahut me copa
  • Ekran me 7 segmente (TM 1637)
  • 2 sensorë me prekje (TTP223B)
  • Lexues RFID me karta (MFRC522)
  • MCP3008 (Në varësi të asaj se sa larg doni të shkoni, për çdo MCP mund të lexoni 8 koordinata shahu)
  • Rezistencë e varur nga drita e tipit 5288 (8 për çdo MCP që keni)
  • Tituj (Mashkull në Mashkull dhe Femër në Mashkull)

Nëse keni nevojë të blini gjithçka, çmimi i vlerësuar i kostos duhet të jetë rreth 125 euro përfshirë kostot e transportit (vetëm Furnizimet)!

Ka një skedar Excel të bashkangjitur me lidhje dhe çmime për gjithçka që ju nevojitet!

Hapi 2: Skemat dhe Planifikimi

Skemat dhe Planifikimi!
Skemat dhe Planifikimi!
Skemat dhe Planifikimi!
Skemat dhe Planifikimi!

Hapi tjetër në këtë projekt është krijimi i një skeme. Bëra 2: Një në dërrasën e bukës dhe një thjesht elektronike. Ne do të kemi nevojë për këto skema për të mbajtur gjithçka të pastër dhe për t'u siguruar që të mos lidhim gjëra të panevojshme!

Kam përdorur një program të quajtur "Fritzing" për të krijuar këto skema nëse dikush është i interesuar.

Kodimi i ngjyrave:

  • E kuqe = furnizimi me energji
  • E gjelbër = lidhje
  • Blu = tokë

Lidhjet e Raspberry Pi:

  • 3V3 => Linja VC në dërrasën e bukës, duke fuqizuar gjithçka
  • 5V => VCC e ekranit me 7 segmente
  • GND:

    • Tokë në dërrasën e bukës
    • Terreni i ekranit me 7 segmente
  • GPIO4 => Ora Zgjidhni pinin e MCP3008
  • GPIO10 => kunja MOSI e MCP3008
  • GPIO9 => kunja MISO e MCP3008
  • GPIO11 => kunja CLK e MCP3008
  • GPIO7 => PIN SDA i MFRC522
  • GPIO19 => PIN DIG i sensorit të parë të Prekjes
  • GPIO26 => PIN DIG i sensorit të dytë të Prekjes
  • GPIO20 => Pin CLK e ekranit me shtatë segmente
  • GPIO21 = pin DIO i ekranit të segmentit të shtatë

Një çift shënime për skemat:

  • Kjo skemë përmban vetëm 1 MCP, kjo do të thotë që vetëm 8 koordinata do të jenë në gjendje të lexohen plotësisht.
  • Unë do të përdor kunjat GPIO si Chip Select tim. Meqenëse vetëm 2 kunja të zgjedhura me Çip janë në dispozicion me potencialisht 8 MCP.
  • Ekrani me 7 segmente është ai i sugjeruar nga një mësues, nevojiten vetëm 4 tela pasi punon në protokollin e tij.
  • Rezistentët në kunjin dixhital të sensorëve të prekjes nuk janë plotësisht të nevojshëm, por këshillohen.

Shpjegimi i përbërësve:

  • MCP me sensorë të dritës:

    • Një MCP3008 është një ADC me 8 kanale 10 bit:

      • një MCP3008 do të lexojë vlerën analoge të sensorëve të dritës, kjo vlerë varet nga sasia e dritës që ndriçon aktualisht në sensor.
      • Në kodin tim python do të marr atë vlerë analoge dhe do ta konvertoj në 1 ose 0
  • Sensorë prekës:

    Punon ashtu si një buton, unë përdor një klasë për këtë me një metodë të thirrjes. Më shumë për këtë më vonë

    Lexuesi RFID (MFRC 522):

    • Përdor një protokoll specifik (SPI) me një paketë të instaluar.
    • Nuk është e vështirë të kodosh me një paketë të instaluar
    • Lexon etiketën dhe kthen vlerën e etiketës
    • Ju gjithashtu mund të shkruani një vlerë në një etiketë, kështu që në vend që të kthejë vlerën heksadecimale, ajo kthen një emër për shembull

    7 Segmenti (TM1637)

    • Gjithashtu përdor një paketë të instaluar për kodim të lehtë
    • Krijoni një ndryshore me një vlerë të plotë, pastaj ndani atë në 4 karaktere dhe tregoni ato karaktere

Hapi 3: Baza e të dhënave SQL

Baza e të dhënave SQL
Baza e të dhënave SQL

Hapi i tretë drejt këtij projekti është krijimi i një baze të dhënash të normalizuar SQL 3NF!

Ne do të kemi nevojë për këtë për:

  • Futja e të dhënave
  • Marrja e të dhënave dhe shfaqja e tyre në faqen tonë të internetit
  • Duke qenë në gjendje të shihni saktësisht sa kthesa kanë kaluar në lojën aktuale të shahut!

Tabelat shpjeguan:

  • Lojëra
    • Kjo gjurmon kush fitoi një lojë të caktuar dhe kur u luajt loja
    • Çelësi kryesor këtu është një GameID
    • Data ka një vlerë standarde të datës aktuale
    • Fituesi dhe rezultati do të shtohen më vonë, pasi të ketë përfunduar loja!
  • Lojtarët (shqiptarë në holandisht)

    • Këto futen me dorë, por gjithashtu mund të futen duke përdorur sistemin e kartës RFID.
    • Shkruani një emër në kartën tuaj, pastaj lexoni kartën dhe futeni emrin në këtë tabelë
    • Ai gjithashtu gjurmon rekordin fitore / humbje të secilit lojtar, që do të shfaqet në faqen e internetit
  • Historiek (Historia)

    • Kjo është historia e kthesës
    • kur një pjesë shahu zhvendoset, ajo do të azhurnohet këtu
    • Ka 3 çelësa të huaj, lojtar, lojë dhe shah
    • Data e leximit (InleesDatum) është data kur sensori u lexua
    • ReadTime është e njëjtë me ReadDate por me një afat kohor
    • LocationID (LocatieID) është emri për koordinatën ku është pozicionuar. për shembull "a3"
  • Copa shahu (Schaakstukken në holandisht)

    • Çdo copë shahu ka një ID, ekip, emër dhe një status
    • Ekipi është ose 1 ose 2, i zi ose i bardhë;
    • Emri i ndonjë pjese do të ishte dmth "Pawn 1"
    • Statusi do të thotë se pjesa është e gjallë ose e vdekur!

Hapi 4: Pajisje kompjuterike

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Tani që kemi marrë të gjitha pjesët e duhura, mund të fillojmë të krijojmë diçka!

Le ta ndajmë këtë pjesë në nën -hapa pasi do të jetë më e lehtë për tu shpjeguar:

  • Hapi 1: Ju dëshironi të shponi një vrimë në çdo koordinatë të tabelës suaj të shahut siç tregohet në foton e parë, gjithashtu shponi një vrimë ku dëshironi të vendosni sensorët e prekjes, lexuesin RFID dhe ekranin e 7 segmenteve.

    Mos harroni të shponi disa vrima në anën e bordit, këto janë për telat e përbërësve të ndryshëm në majë të tabelës. Shumë shpime, e di

  • Hapi 2: Mundohuni të lidhni një ose dy sensorë në Raspberry Pi, kontrolloni nëse funksionojnë. Ju dëshironi t'i lidhni ato me lexuesin analog MCP siç u shpjegua më herët në Hapin 2 (Skemat).
  • Hapi 3: Kjo mund të jetë e ndërlikuar dhe shumë nervoze, pasi titujt e kërcyesit nuk janë ngulur shumë në vend, ju mund të dëshironi t'i lidhni të gjitha në tabelë, individualisht ose të shumëfishta në të njëjtën kohë. Ju duhet të siguroheni që ata të qëndrojnë të mbërthyer në tabelën e shahut, përndryshe nuk do të jeni në gjendje t'i lexoni me sukses sensorët

    KIPSHILL! Nëse e bën më të lehtë për ju, disa zam në të vërtetë mund të ndihmojnë në mbajtjen e sensorëve më shumë në vend gjatë fiksimit të tyre, e zbulova këtë në rrugën e vështirë

Hapi 5: Softuer

Softuer
Softuer

Pasi të keni bërë pajisje që mund të provoni, le të provojmë të shkruani një kod për të! Nëse doni të hidhni një sy kodit tim, ju lutemi shkoni te github im.

Së pari ne do të kemi nevojë për disa pako për t'u instaluar, unë shkova përpara dhe bëra një listë për ju:

  • balonë

    Kjo është ajo në të cilën do të funksionojë kodi juaj python

  • Flask-foleIO

    Për të komunikuar midis front-end dhe back-end

  • i mpirë

    E dobishme për leximin e sensorëve të dritës, punon me matrica

  • netifaces

    Për të printuar adresën tuaj IP në ekranin e 7 segmenteve

  • Flask-CORS

    Ndarja e rekursit të origjinës, lejon që paketat të ndahen në fusha të ndryshme

Pranë kësaj, unë kam shkruar disa klasa dhe ju jeni të lirë t'i përdorni ato.

Front-end

Kodi i faqes në internet është gjithashtu i disponueshëm në faqen time github!

Për pjesën e përparme do të përdor Chessboard.js. Kjo fut një tabelë shahu të lehtë për t’u përdorur me pjesë të lehta për t’u lëvizur!

Çdo gjë në tabelë është e personalizueshme kështu që argëtohuni! Pasi të keni shkarkuar versionin e fundit, do t'ju duhet t'i tërhiqni skedarët në projektin tuaj dhe t'i lidhni ato me faqen ku dëshironi të shfaqni një tabelë shahu!

Pas kësaj, le të përpiqemi të krijojmë një tabelë, nuk duket shumë e vështirë:

Së pari, në html tuaj:

Së dyti, në skedarin tuaj javascript:

bordi1 = Bordi i shahut ('bordi1', 'fillimi');

dhe ja ku e keni, duhet të jeni në gjendje të shihni një tabelë shahu tani! Mos ngurroni të personalizoni tabelën në skedarët CSS!

Tani, ne duam të shohim disa lëvizje në tabelën e shahut, jo shumë të vështira. Por ne duhet ta rregullojmë atë në mënyrë që komanda move të dërgohet nga back-end. Unë nuk do të hyj në shumë detaje, por ne duam të bëjmë diçka si kjo:

new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); bordi1. lëviz (komando);

Ne marrim një listë nga programi ynë back-end dhe vendosim një vijë midis dy koordinatave, pastaj përdorim komandën board.move për të ekzekutuar lëvizjen!

Ky është shpjegimi im për atë që na nevojitet për shtojcën e shahut. Js, shkoni te github -i im për të parë vetë kodin

Recommended: