Isi kandungan:

Catur Digital - Jejak Permainan Catur Anda Dalam Talian: 5 Langkah
Catur Digital - Jejak Permainan Catur Anda Dalam Talian: 5 Langkah

Video: Catur Digital - Jejak Permainan Catur Anda Dalam Talian: 5 Langkah

Video: Catur Digital - Jejak Permainan Catur Anda Dalam Talian: 5 Langkah
Video: Webinar : Penggunaan Sistem Tornelo dalam permainan catur atas talian 2024, Disember
Anonim
Catur Digital - Jejak Permainan Catur Anda Dalam Talian
Catur Digital - Jejak Permainan Catur Anda Dalam Talian

Saya telah bermain banyak catur sejak saya masih muda, dan kerana web mempunyai sejumlah besar laman web untuk bermain catur melawan komputer atau lawan langsung, saya tidak pernah menjumpai laman web yang mengesan permainan catur anda bahawa anda sebenarnya bermain dalam kehidupan sebenar. Oleh itu dengan projek ini saya berharap dapat merealisasikannya!

Saya berharap dapat:

  • Dapat mengesan pergerakan kepingan catur
  • Lihat beberapa papan pendahulu mengenai permainan masa lalu.
  • Jejaki masa dan bermain pantas seperti permainan profesional.

Ini adalah projek yang sangat kompleks kerana jika siap, ia memerlukan 64 sensor cahaya dan 8 cip untuk dibaca. Yang sudah menjadi tugas besar dan kita bahkan tidak mengira sensor yang lain.

Kolej saya memberi kami senarai perkara yang perlu dilakukan:

  1. Buat skema untuk projek kami
  2. Buat pangkalan data untuk menyimpan dan mendapatkan data.
  3. Reka laman web menggunakan Adobe XD
  4. Buat semula laman web ini dengan CSS dan HTML
  5. Baca sensor dengan python
  6. Tunjukkan data sensor di laman web menggunakan termos.

Dalam petunjuk ini saya akan membimbing anda dalam perjalanan saya, dan semua masalah dan saat keselamatan yang saya lalui dalam beberapa minggu terakhir ini.

Langkah 1: Bekalan / Alatan

Bekalan, bahan dan alat adalah langkah pertama untuk projek yang berjaya!

Alat:

  • Besi pematerian
  • Timah Pematerian
  • Tang
  • Mesin gerudi
  • Pita

Bekalan:

  • Raspberry Pi dengan kad SD mikro (4GB semestinya cukup)
  • Rasberry Pi T-tukang sepatu
  • Papan catur dengan kepingan
  • Paparan 7 segmen (TM 1637)
  • 2 Sensor sentuh (TTP223B)
  • Pembaca RFID dengan kad (MFRC522)
  • MCP3008 (Bergantung pada sejauh mana anda mahu pergi, untuk setiap MCP anda boleh membaca 8 koordinat Catur)
  • Jenis Perintang Bergantung Cahaya 5288 (8 untuk setiap MCP yang anda miliki)
  • Tajuk (Lelaki hingga Lelaki dan Perempuan ke Lelaki)

Sekiranya anda perlu membeli semuanya, anggaran harga kos adalah sekitar 125 euro termasuk kos penghantaran (Bekalan sahaja)!

Terdapat fail Excel yang dilampirkan dengan pautan dan harga untuk semua yang anda perlukan!

Langkah 2: Skematik dan Perancangan

Skematik dan Perancangan!
Skematik dan Perancangan!
Skematik dan Perancangan!
Skematik dan Perancangan!

Langkah seterusnya dalam projek ini adalah membuat skema. Saya membuat 2: Satu di papan roti dan satu secara elektronik. Kami memerlukan skema ini untuk memastikan semuanya bersih dan memastikan kami tidak menghubungkan perkara yang tidak perlu!

Saya menggunakan program yang disebut "Fritzing" untuk membuat skema ini jika ada yang berminat.

Pengekodan Warna:

  • Merah = bekalan kuasa
  • Hijau = sambungan
  • Biru = tanah

Sambungan Raspberry Pi:

  • 3V3 => Garis VC di papan roti, memberi kuasa kepada segalanya
  • 5V => VCC paparan segmen 7
  • GND:

    • Tanah di atas papan roti
    • Tanah paparan segmen 7
  • GPIO4 => Jam Pilih pin MCP3008
  • GPIO10 => Pin MOSI MCP3008
  • GPIO9 => Pin MISO MCP3008
  • GPIO11 => CLK pin MCP3008
  • GPIO7 => Pin SDA MFRC522
  • GPIO19 => DIG pin sensor Sentuh pertama
  • GPIO26 => Pin DIG dari sensor Sentuh kedua
  • GPIO20 => Pin CLK dari paparan tujuh segmen
  • GPIO21 = Pin DIO dari paparan tujuh segmen

Beberapa catatan mengenai skema:

  • Skema ini hanya mengandungi 1 MCP, ini bermakna hanya 8 koordinat yang dapat dibaca sepenuhnya.
  • Saya akan menggunakan pin GPIO sebagai Chip Select saya. Oleh kerana hanya 2 pin pilih Chip yang tersedia dengan 8 MCP yang berpotensi.
  • Paparan 7 segmen adalah yang disarankan oleh guru, hanya 4 wayar yang diperlukan kerana ia berfungsi pada protokolnya sendiri.
  • Perintang pada pin digital sensor sentuh tidak diperlukan sepenuhnya, tetapi disarankan.

Menjelaskan komponen:

  • MCP dengan sensor cahaya:

    • MCP3008 adalah ADC 8 bit 10 bit:

      • MCP3008 akan membaca nilai analog sensor cahaya, nilai ini bergantung pada jumlah cahaya yang sedang bersinar pada sensor.
      • Dalam kod python saya akan menerima nilai analog itu dan menukarnya menjadi 1 atau 0
  • Sensor sentuh:

    Berfungsi seperti butang, saya menggunakan kelas untuk ini dengan kaedah panggilan balik. Lebih lanjut mengenai ini kemudian

    Pembaca RFID (MFRC 522):

    • Menggunakan protokol tertentu (SPI) dengan pakej yang dipasang.
    • Tidak sukar untuk dikodkan dengan pakej yang dipasang
    • Membaca teg dan mengembalikan nilai teg
    • Anda juga boleh menulis nilai ke tag, jadi daripada mengembalikan nilai heksadesimal, ia mengembalikan nama misalnya

    7 Segmen (TM1637)

    • Juga menggunakan pakej yang dipasang untuk pengekodan yang mudah
    • Buat pemboleh ubah dengan nilai integer, kemudian pisahkan dalam 4 watak dan tunjukkan watak-watak tersebut

Langkah 3: Pangkalan Data SQL

Pangkalan Data SQL
Pangkalan Data SQL

Langkah ketiga ke arah projek ini ialah membuat pangkalan data SQL 3NF yang dinormalisasi!

Kami memerlukan ini untuk:

  • Memasukkan data
  • Mendapatkan data dan menunjukkannya di laman web kami
  • Dapat melihat dengan tepat berapa banyak giliran yang telah dilalui dalam permainan catur semasa!

Jadual dijelaskan:

  • Permainan

    • Ini mengesan siapa yang memenangi permainan tertentu dan ketika permainan itu dimainkan
    • Kunci utama di sini ialah GameID
    • Tarikh mempunyai nilai standard tarikh semasa
    • Pemenang dan skor akan ditambahkan kemudian, setelah permainan selesai!
  • Pemain (Spelers dalam bahasa Belanda)

    • Ini dimasukkan secara manual, tetapi juga boleh dimasukkan menggunakan sistem kad RFID.
    • Tuliskan nama ke kad anda, kemudian baca kad tersebut dan masukkan nama ke dalam jadual ini
    • Ini juga melacak rekod menang / kalah setiap pemain, untuk dipaparkan di laman web
  • Historiek (Sejarah)

    • Inilah sejarah giliran
    • apabila catur dipindahkan, ia akan dikemas kini di sini
    • Ia mempunyai 3 kunci asing, pemain, permainan dan catur
    • ReadDate (InleesDatum) adalah tarikh apabila sensor dibaca
    • ReadTime adalah sama dengan ReadDate tetapi dengan cap waktu
    • LocationID (LocatieID) adalah nama untuk koordinat tempat ia berada. contohnya "a3"
  • Potongan catur (Schaakstukken dalam Belanda)

    • Setiap catur mempunyai ID, pasukan, nama dan status
    • Pasukan ini adalah 1 atau 2, hitam atau putih;
    • Nama kepingan yang pernah ada ialah "Pawn 1"
    • Status bermaksud sekeping itu hidup atau mati!

Langkah 4: Perkakasan

Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan
Perkakasan

Setelah mendapat semua bahagian yang betul, kita boleh mula membuat sesuatu!

Mari bahagikan bahagian ini kepada beberapa langkah kerana akan lebih mudah untuk dijelaskan:

  • Langkah 1: Anda ingin mengebor lubang ke setiap koordinat papan catur anda seperti yang ditunjukkan pada gambar pertama, juga menggerudi lubang di mana anda ingin meletakkan sensor sentuh, pembaca RFID dan paparan 7 segmen.

    Jangan lupa menggerudi beberapa lubang di sisi papan, ini adalah untuk wayar komponen yang berlainan di atas papan. Saya tahu banyak penggerudian

  • Langkah 2: Cuba pasangkan satu atau dua sensor ke Raspberry Pi, periksa sama ada ia berfungsi. Anda mahu menghubungkannya ke pembaca analog MCP seperti yang dijelaskan sebelumnya dalam Langkah 2 (Skema).
  • Langkah 3: Ini mungkin sukar dan merosakkan saraf, kerana tajuk pelompat tidak terlalu terpasang di tempatnya, anda mungkin ingin merekam semuanya ke papan, sama ada secara individu atau berganda sekaligus. Anda harus memastikan mereka tetap terpaku di papan catur, jika tidak, anda tidak akan berjaya membaca sensor

    PETUA! Sekiranya ia memudahkan anda, sebilangan gam sebenarnya dapat membantu menjaga sensor agar tetap berada di tempat semasa mengetiknya, saya dapati ini dengan cara yang sukar

Langkah 5: Perisian

Perisian
Perisian

Setelah membuat perkakasan yang boleh anda uji, mari cuba tulis beberapa kod untuknya! Sekiranya anda ingin melihat kod saya, sila ke github saya.

Back-endMula-mula kita memerlukan beberapa pakej untuk dipasang, saya teruskan dan membuat senarai untuk anda:

  • kelalang

    Inilah kod python anda yang akan dijalankan

  • Flask-soketIO

    Untuk berkomunikasi antara front-end dan back-end

  • kekenyangan

    Berguna untuk membaca sensor cahaya, berfungsi dengan matriks

  • muka jaring

    Untuk mencetak alamat IP anda sendiri pada paparan 7 segmen

  • Kelalang-CORS

    Perkongsian jalan silang, membolehkan pakej dikongsi di pelbagai domain

Di sebelah itu, saya telah menulis beberapa kelas dan anda bebas menggunakannya.

Bahagian hadapan

Kod laman web juga terdapat di laman github saya!

Untuk bahagian depan saya akan menggunakan Chessboard.js. Ini memasukkan papan catur yang mudah digunakan dengan kepingan yang mudah bergerak!

Semua yang ada di papan boleh disesuaikan jadi bersenang-senang! Setelah memuat turun versi terkini, anda perlu menyeret fail ke dalam projek anda dan memautkannya ke halaman di mana anda mahu menunjukkan papan catur!

Selepas itu, mari kita cuba membuat papan, tidak kelihatan terlalu keras:

Pertama, dalam html anda:

Kedua, dalam fail javascript anda:

board1 = Papan Catur ('board1', 'start');

dan di sana anda memilikinya, anda seharusnya dapat melihat papan catur sekarang! Jangan ragu untuk menyesuaikan papan dalam fail CSS!

Sekarang, kita mahu melihat beberapa pergerakan di papan catur, tidak terlalu keras. Tetapi kita perlu menyesuaikannya sehingga perintah bergerak dihantar oleh bahagian belakang. Saya tidak akan membahas dengan terperinci, tetapi kami mahu melakukan perkara seperti ini:

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

Kami menerima senarai dari program akhir kami, dan meletakkan tanda hubung di antara kedua koordinat, kemudian gunakan perintah board.move untuk melaksanakan langkah itu!

Itulah penjelasan saya tentang apa yang kami perlukan dari plugin chessboard.js, pergi ke github saya untuk melihat kod anda sendiri

Disyorkan: