Daftar Isi:

Catur Digital - Lacak Game Catur Online Anda: 5 Langkah
Catur Digital - Lacak Game Catur Online Anda: 5 Langkah

Video: Catur Digital - Lacak Game Catur Online Anda: 5 Langkah

Video: Catur Digital - Lacak Game Catur Online Anda: 5 Langkah
Video: Choo Choo? #shorts 2024, November
Anonim
Catur Digital - Lacak Game Catur Anda Secara Online
Catur Digital - Lacak Game Catur Anda Secara Online

Saya telah bermain banyak catur sejak saya masih muda, dan karena web memiliki banyak sekali situs web untuk bermain catur melawan komputer atau lawan langsung, saya tidak pernah menemukan situs web yang melacak permainan catur Anda yang Anda mainkan. benar-benar bermain di kehidupan nyata. Jadi dengan proyek ini saya berharap untuk menyadarinya!

Saya berharap untuk:

  • Mampu melacak pergerakan bidak catur
  • Lihat beberapa papan peringkat tentang game sebelumnya.
  • Lacak waktu dan mainkan cepat seperti game profesional.

Ini adalah proyek yang sangat kompleks karena jika selesai akan membutuhkan 64 sensor cahaya dan 8 chip untuk membaca. Yang sudah merupakan tugas besar dan kami bahkan tidak menghitung sensor lainnya.

Kampus saya memberi kami daftar besar hal-hal yang harus dilakukan:

  1. Buat skema untuk proyek kami
  2. Membuat database untuk menyimpan dan mendapatkan data.
  3. Rancang situs web menggunakan Adobe XD
  4. Buat ulang situs web ini dengan CSS dan HTML
  5. Baca sensor dengan python
  6. Tampilkan data sensor di situs web menggunakan labu.

Dalam instruksi ini saya akan memandu Anda dalam perjalanan saya, dan semua masalah dan saat-saat keselamatan yang telah saya lalui beberapa minggu terakhir ini.

Langkah 1: Persediaan/Alat

Persediaan, bahan, dan alat adalah langkah pertama menuju proyek yang sukses!

Peralatan:

  • Solder Besi
  • Timah solder
  • Tang
  • Mesin bor
  • Tape

Perlengkapan:

  • Raspberry Pi dengan kartu micro SD (4GB seharusnya cukup)
  • Rasberry Pi T-cobbler
  • Papan Catur dengan bidak
  • Tampilan 7 segmen (TM 1637)
  • 2 Sensor sentuh (TTP223B)
  • Pembaca RFID dengan kartu (MFRC522)
  • MCP3008 (Tergantung seberapa jauh Anda ingin pergi, untuk setiap MCP Anda dapat membaca 8 koordinat Catur)
  • Light Dependent Resistor tipe 5288 (8 untuk setiap MCP yang Anda miliki)
  • Header (Pria ke Pria dan Wanita ke Pria)

Jika Anda perlu membeli semuanya, perkiraan harga biaya harus sekitar 125 euro termasuk biaya pengiriman (Hanya persediaan)!

Ada file Excel yang dilampirkan dengan tautan dan harga untuk semua yang Anda butuhkan!

Langkah 2: Skema dan Perencanaan

Skema dan Perencanaan!
Skema dan Perencanaan!
Skema dan Perencanaan!
Skema dan Perencanaan!

Langkah selanjutnya dalam proyek ini adalah membuat skema. Saya membuat 2: Satu di papan tempat memotong roti dan satu murni elektronik. Kami akan membutuhkan skema ini untuk menjaga semuanya tetap bersih dan memastikan kami tidak menghubungkan hal-hal yang tidak perlu!

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

Kode Warna:

  • Merah = catu daya
  • Hijau = koneksi
  • Biru = tanah

Koneksi Raspberry Pi:

  • 3V3 => Garis VC di papan tempat memotong roti, memberi daya pada semuanya
  • 5V => VCC dari tampilan 7 segmen
  • GND:

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

Beberapa catatan tentang skema:

  • Skema ini hanya berisi 1 MCP, ini berarti hanya 8 koordinat yang dapat dibaca sepenuhnya.
  • Saya akan menggunakan pin GPIO sebagai Chip Select saya. Karena hanya 2 pin pilih Chip yang tersedia dengan potensi 8 MCP.
  • Tampilan 7 segmen adalah salah satu yang disarankan oleh seorang guru, hanya 4 kabel yang diperlukan karena bekerja pada protokol itu sendiri.
  • Resistor pada pin digital sensor sentuh tidak sepenuhnya diperlukan, tetapi disarankan.

Menjelaskan komponen:

  • MCP dengan sensor cahaya:

    • MCP3008 adalah ADC 8 saluran 10 bit:

      • sebuah MCP3008 akan membaca nilai analog sensor cahaya, nilai ini tergantung pada jumlah cahaya yang saat ini menyinari sensor.
      • Dalam kode python saya, saya akan menerima nilai analog itu dan mengubahnya menjadi 1 atau 0
  • Sensor sentuh:

    Bekerja seperti tombol, saya menggunakan kelas untuk ini dengan metode panggilan balik. Lebih lanjut tentang ini nanti

    Pembaca RFID (MFRC 522):

    • Menggunakan protokol tertentu (SPI) dengan paket yang diinstal.
    • Tidak sulit untuk membuat kode dengan paket yang diinstal
    • Membaca tag dan mengembalikan nilai tag
    • Anda juga dapat menulis nilai ke tag, jadi alih-alih mengembalikan nilai heksadesimal, itu mengembalikan nama misalnya

    7 Segmen (TM1637)

    • Juga menggunakan paket yang diinstal untuk pengkodean yang mudah
    • Buat variabel dengan nilai integer, lalu bagi menjadi 4 karakter dan tunjukkan karakter tersebut

Langkah 3: Basis Data SQL

Basis Data SQL
Basis Data SQL

Langkah ketiga menuju proyek ini adalah membuat database SQL yang dinormalisasi 3NF!

Kami akan membutuhkan ini untuk:

  • Memasukkan data
  • Mendapatkan data dan menampilkannya di situs web kami
  • Mampu melihat dengan tepat berapa banyak putaran yang telah berlalu dalam permainan catur saat ini!

Tabel menjelaskan:

  • permainan

    • Ini melacak siapa yang memenangkan permainan tertentu dan kapan permainan itu dimainkan
    • Kunci utama di sini adalah GameID
    • Tanggal memiliki nilai standar tanggal saat ini
    • Pemenang dan skor akan ditambahkan nanti, setelah permainan selesai!
  • Pemain (Speler dalam bahasa Belanda)

    • Ini dimasukkan secara manual, tetapi juga dapat dimasukkan menggunakan sistem kartu RFID.
    • Tulis nama ke kartu Anda, lalu baca kartu dan masukkan nama ke tabel ini
    • Ini juga melacak catatan menang / kalah setiap pemain, untuk ditampilkan di situs web
  • Historiek (Sejarah)

    • Ini adalah sejarah giliran
    • ketika bidak catur dipindahkan, itu akan diperbarui di sini
    • Ini memiliki 3 kunci asing, pemain, permainan, dan bidak catur
    • ReadDate (InleesDatum) adalah tanggal ketika sensor dibaca
    • ReadTime sama dengan ReadDate tetapi dengan stempel waktu
    • LocationID(LocatieID) adalah nama untuk koordinat di mana posisinya. misalnya "a3"
  • Buah Catur (Schaakstukken dalam bahasa Belanda)

    • Setiap bidak catur memiliki ID, tim, nama, dan status
    • Tim adalah 1 atau 2, hitam atau putih;
    • Nama bidak yang pernah ada adalah "Pion 1"
    • Statusnya berarti potongan itu hidup atau mati!

Langkah 4: Perangkat Keras

Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras

Sekarang setelah kita memiliki semua bagian yang benar, kita dapat mulai membuat sesuatu!

Mari kita bagi bagian ini menjadi beberapa sub langkah karena akan lebih mudah untuk dijelaskan:

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

    Jangan lupa untuk mengebor beberapa lubang di sisi papan, ini untuk kabel dari berbagai komponen di atas papan. Banyak pengeboran, saya tahu

  • Langkah 2: Coba sambungkan satu atau dua sensor ke Raspberry Pi, periksa apakah berfungsi. Anda ingin menghubungkannya ke pembaca analog MCP seperti yang dijelaskan sebelumnya di Langkah 2 (Skema).
  • Langkah 3: Ini mungkin rumit dan sangat menegangkan, karena header jumper tidak terlalu macet di tempatnya, Anda mungkin ingin merekatkan semuanya ke papan, baik satu per satu atau beberapa sekaligus. Anda harus memastikan mereka tetap menempel di papan catur, jika tidak, Anda tidak akan berhasil membaca sensor

    TIP! Jika itu memudahkan Anda, beberapa lem mungkin benar-benar membantu menjaga sensor lebih pada tempatnya saat merekatkannya, saya menemukan ini dengan cara yang sulit

Langkah 5: Perangkat Lunak

Perangkat lunak
Perangkat lunak

Setelah Anda membuat perangkat keras yang dapat Anda uji, mari kita coba menulis beberapa kode untuk itu! Jika Anda ingin melihat kode saya, silakan kunjungi github saya.

Back-endPertama kita akan membutuhkan beberapa paket untuk diinstal, saya melanjutkan dan membuat daftar untuk Anda:

  • labu

    Inilah yang akan dijalankan oleh kode python Anda

  • Flask-socketIO

    Untuk berkomunikasi antara front-end dan back-end

  • mati rasa

    Berguna untuk membaca sensor cahaya, bekerja dengan matriks

  • netiface

    Untuk mencetak alamat IP Anda sendiri pada tampilan 7 segmen

  • Flask-CORS

    Berbagi sumber daya lintas asal, memungkinkan paket untuk dibagikan di berbagai domain

Di samping itu, saya telah menulis beberapa kelas dan Anda bebas menggunakannya.

Paling depan

Kode situs web juga tersedia di halaman github saya!

Untuk front-end saya akan menggunakan Chessboard.js. Ini memasukkan papan catur yang mudah digunakan dengan bidak yang mudah dipindahkan!

Segala sesuatu di papan dapat disesuaikan jadi bersenang-senanglah! Setelah mengunduh versi terbaru, Anda harus menyeret file ke dalam proyek Anda dan menautkannya ke halaman tempat Anda ingin menampilkan papan catur!

Setelah itu, mari kita coba membuat papan, tidak terlihat terlalu sulit:

Pertama, di html Anda:

Kedua, di file javascript Anda:

board1 = Papan Catur('papan1', 'mulai');

dan begitulah, Anda seharusnya bisa melihat papan catur sekarang! Jangan ragu untuk menyesuaikan papan dalam file CSS!

Sekarang, kami ingin melihat beberapa gerakan di papan catur, tidak terlalu sulit. Tapi kita perlu menyesuaikannya agar perintah pindah dikirim oleh back-end. Saya tidak akan membahas terlalu banyak detail, tetapi kami ingin melakukan sesuatu seperti ini:

new_lijst = [Data.data[0], Data.data[1];perintah = new_lijst[0].concat('-', new_lijst[1]); board1.move(perintah);

Kami menerima daftar dari program back-end kami, dan menempatkan tanda hubung di antara dua koordinat, lalu gunakan perintah board.move untuk mengeksekusi gerakan!

Itulah penjelasan saya tentang apa yang kami butuhkan dari plugin chessboard.js, kunjungi github saya untuk melihat sendiri kodenya

Direkomendasikan: