İçindekiler:

Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: 5 Adım
Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: 5 Adım

Video: Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: 5 Adım

Video: Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: 5 Adım
Video: 7 Hamlede Mat Edebileceğiniz Satranç Açılışı 2024, Kasım
Anonim
Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin
Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin

Gençliğimden beri çok fazla satranç oynuyorum ve web'de bilgisayarlara veya canlı rakiplere karşı satranç oynayabileceğiniz çok sayıda web sitesi bulunduğundan, bir zamanlar satranç oyununuzu izleyen bir web sitesi bulamadım. aslında gerçek hayatta oynuyor. Yani bu proje ile bunu gerçekleştirmeyi umuyorum!

şunu umuyorum:

  • Satranç taşlarının hareketlerini takip edebilme
  • Geçmiş oyunlarla ilgili bazı skor tablolarına bakın.
  • Zamanı takip edin ve profesyonel bir oyun gibi hızlı oynayın.

Bu çok karmaşık bir proje çünkü tamamlanması halinde 64 ışık sensörü ve 8 çipin okunması gerekecek. Bu zaten büyük bir görev ve diğer sensörleri saymıyoruz bile.

Üniversitem bize yapılacakların büyük bir listesini verdi:

  1. Projemiz için bir şema oluşturun
  2. Verilerin depolanması ve alınması için bir veritabanı oluşturun.
  3. Adobe XD kullanarak bir web sitesi tasarlayın
  4. Bu web sitesini CSS ve HTML ile yeniden oluşturun
  5. Sensörleri python ile okuyun
  6. Şişeyi kullanarak sensör verilerini web sitesinde gösterin.

Bu eğitici yazıda, yolculuğumda ve bu son birkaç hafta içinde yaşadığım tüm sıkıntılar ve kurtuluş anlarında size rehberlik edeceğim.

Adım 1: Sarf Malzemeleri/Araçlar

Sarf malzemeleri, malzemeler ve araçlar, başarılı bir projenin ilk adımıdır!

Aletler:

  • Havya
  • Lehimleme Kalay
  • pense
  • Sondaj makinesi
  • Kaset

Gereçler:

  • Mikro SD kartlı Raspberry Pi (4GB yeterli olacaktır)
  • Rasberry Pi T-ayakkabıcı
  • Satranç tahtası parçaları ile
  • 7 segmentli ekran (TM 1637)
  • 2 Dokunma sensörü (TTP223B)
  • Kartlı RFID Okuyucu (MFRC522)
  • MCP3008 (Ne kadar ileri gitmek istediğinize bağlı olarak, her MCP için 8 Satranç koordinatını okuyabilirsiniz)
  • Hafif Bağımlı Direnç tipi 5288 (sahip olduğunuz her MCP için 8)
  • Başlıklar (Erkek-Erkek ve Kadın-Erkek)

Her şeyi satın almanız gerekiyorsa, nakliye masrafları dahil tahmini maliyet fiyatı yaklaşık 125 Euro olmalıdır (yalnızca Malzemeler)!

İhtiyacınız olan her şeye bağlantılar ve fiyatlar eklenmiş bir Excel dosyası var!

Adım 2: Şemalar ve Planlama

Şemalar ve Planlama!
Şemalar ve Planlama!
Şemalar ve Planlama!
Şemalar ve Planlama!

Bu projedeki bir sonraki adım bir şematik oluşturmaktır. 2 tane yaptım: Biri breadboard üzerinde, diğeri tamamen elektronik. Her şeyi temiz tutmak ve gereksiz şeyleri bağlamadığımızdan emin olmak için bu şemaya ihtiyacımız olacak!

İlgilenen varsa bu şemaları oluşturmak için "Fritzing" adlı bir program kullandım.

Renk kodlaması:

  • Kırmızı = güç kaynağı
  • Yeşil = bağlantı
  • mavi = toprak

Raspberry Pi bağlantıları:

  • 3V3 => Breadboard üzerinde her şeye güç sağlayan VC hattı
  • 5V => 7 segmentli ekranın VCC'si
  • GND:

    • Breadboard üzerinde zemin
    • 7 segmentli ekranın zemini
  • GPIO4 => MCP3008'in Saat Seçim pini
  • GPIO10 => MCP3008'in MOSI pini
  • GPIO9 => MCP3008'in MISO pini
  • GPIO11 => MCP3008'in CLK pini
  • GPIO7 => MFRC522'nin SDA pini
  • GPIO19 => İlk Touch sensörünün DIG pini
  • GPIO26 => İkinci Touch sensörünün DIG pini
  • GPIO20 => Yedi segmentli ekranın CLK pini
  • GPIO21 = Yedi segmentli ekranın DIO pini

Şemalar hakkında birkaç not:

  • Bu şema sadece 1 MCP içerir, bu sadece 8 koordinatın tam olarak okunabileceği anlamına gelir.
  • Chip Select'im olarak GPIO pinlerini kullanacağım. Potansiyel olarak 8 MCP ile sadece 2 Chip seçim pimi mevcut olduğundan.
  • 7 segmentli ekran bir öğretmen tarafından önerilmiştir, kendi protokolünde çalıştığı için sadece 4 kabloya ihtiyaç vardır.
  • Dokunmatik sensörlerin dijital pimindeki dirençlere tam olarak ihtiyaç yoktur, ancak tavsiye edilir.

Bileşenleri açıklamak:

  • Işık sensörlü MCP:

    • Bir MCP3008, 8 kanallı 10 bitlik bir ADC'dir:

      • bir MCP3008, ışık sensörlerinin analog değerini okuyacaktır, bu değer sensörde o anda parlayan ışık miktarına bağlıdır.
      • Python kodumda bu analog değeri alacağım ve onu 1 veya 0'a dönüştüreceğim
  • Dokunmatik sensörler:

    Tıpkı bir düğme gibi çalışır, bunun için geri çağırma yöntemiyle bir sınıf kullanıyorum. Bu konuda daha sonra

    RFID okuyucu (MFRC 522):

    • Yüklü bir paketle belirli bir protokol (SPI) kullanır.
    • Kurulu bir paketle kodlamak zor değil
    • Etiketi okur ve etiketin değerini döndürür
    • Ayrıca bir etikete bir değer yazabilirsiniz, böylece onaltılık değeri döndürmek yerine örneğin bir ad döndürür.

    7 Segment (TM1637)

    • Ayrıca kolay kodlama için kurulu bir paket kullanır
    • Tamsayı değerine sahip bir değişken oluşturun, ardından 4 karaktere bölün ve bu karakterleri gösterin

3. Adım: SQL Veritabanı

SQL Veritabanı
SQL Veritabanı

Bu projeye doğru üçüncü adım, 3NF normalleştirilmiş bir SQL veritabanı oluşturmaktır!

Buna ihtiyacımız olacak:

  • Veri ekleme
  • Veri alma ve web sitemizde gösterme
  • Mevcut satranç oyununda tam olarak kaç tur geçtiğini görebilmek!

Açıklanan tablolar:

  • Oyunlar

    • Bu, belirli bir oyunu kimin kazandığını ve oyunun ne zaman oynandığını izler.
    • Buradaki birincil anahtar bir GameID'dir
    • Tarih, geçerli tarihin standart bir değerine sahiptir
    • Kazanan ve skor, oyun bittikten sonra eklenecektir!
  • Oyuncular (Hollandaca Speler)

    • Bunlar manuel olarak takılır, ancak RFID kart sistemi kullanılarak da yerleştirilebilir.
    • Kartınıza bir isim yazın, ardından kartı okuyun ve ismi bu tabloya girin
    • Ayrıca, web sitesinde görüntülenecek her oyuncunun kazanma / kaybetme kaydını da izler.
  • Tarih (Tarih)

    • Bu dönüş tarihi
    • bir satranç taşı taşındığında burada güncellenecektir
    • 3 adet yabancı anahtar, oyuncu, oyun ve satranç taşına sahiptir.
    • ReadDate (InleesDatum), sensörün okunduğu tarihtir
    • ReadTime, ReadDate ile aynıdır ancak bir zaman damgası vardır
    • LocationID(LocatieID), konumlandığı koordinatın adıdır. örneğin "a3"
  • Satranç Taşları (Hollandaca Schaakstukken)

    • Her satranç taşının bir kimliği, takımı, adı ve durumu vardır.
    • Takım 1 veya 2, siyah veya beyaz;
    • Hiç taşın adı "Piyon 1" olacaktır.
    • Durum, parçanın canlı veya ölü olduğu anlamına gelir!

4. Adım: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

Artık tüm doğru parçaları yerleştirdiğimize göre, bir şeyler yaratmaya başlayabiliriz!

Açıklaması daha kolay olacağı için bu kısmı alt adımlara ayıralım:

  • Adım 1: İlk resimde gösterildiği gibi satranç tahtanızın her koordinatına bir delik açmak istiyorsunuz, ayrıca dokunmatik sensörler, RFID okuyucu ve 7 segmentli göstergeyi yerleştirmek istediğiniz yere bir delik açın.

    Tahtanın yan taraflarına delikler açmayı unutmayın, bunlar panonun üzerindeki farklı bileşenlerin kabloları içindir. Bir sürü sondaj biliyorum

  • Adım 2: Raspberry Pi'ye bir veya iki sensör bağlamayı deneyin, çalışıp çalışmadıklarını kontrol edin. Bunları daha önce Adım 2'de (Şematikler) açıklandığı gibi MCP analog okuyucusuna bağlamak istiyorsunuz.
  • 3. Adım: Bu, atlama teli başlıkları yerine çok fazla takılmadığından, bu zor ve çok sinir bozucu olabilir, hepsini tek tek veya bir kerede birden fazla olmak üzere panoya bantlamak isteyebilirsiniz. Satranç tahtasında takılı kaldıklarından emin olmalısınız, aksi takdirde sensörleri başarılı bir şekilde okuyamazsınız.

    İPUCU! Sizin için kolaylaştıracaksa, bir miktar yapıştırıcı sensörleri bantlarken daha fazla yerinde tutmaya yardımcı olabilir, bunu zor yoldan keşfettim

Adım 5: Yazılım

Yazılım
Yazılım

Test edebileceğiniz bir donanım yaptıktan sonra, bunun için bir kod yazmayı deneyelim! Koduma bir göz atmak isterseniz, lütfen github adresime gidin.

Back-endÖnce birkaç paketin yüklenmesi gerekecek, ben devam ettim ve sizin için bir liste yaptım:

  • şişe

    Python kodunuz bu üzerinde çalışacak

  • Şişe-soketIO

    Ön uç ve arka uç arasında iletişim kurmak için

  • dizi

    Işık sensörlerini okumak için kullanışlıdır, matris ile çalışır

  • ağlar

    7 segmentli ekranda kendi IP adresinizi yazdırmak için

  • Şişe-CORS

    Çapraz kaynak rücu paylaşımı, paketlerin farklı etki alanları arasında paylaşılmasına izin verir

Bunun yanında birkaç ders yazdım ve bunları kullanmakta özgürsünüz.

Başlangıç aşaması

Web sitesi kodu da github sayfamda mevcut!

Ön uç için Chessboard.js kullanacağım. Bu, taşınması kolay taşlarla kullanımı kolay bir satranç tahtası ekler!

Tahtadaki her şey özelleştirilebilir, bu yüzden iyi eğlenceler! En son sürümü indirdikten sonra, dosyaları projenize sürüklemeniz ve onları bir satranç tahtası göstermek istediğiniz sayfaya bağlamanız gerekecek!

Ondan sonra bir tahta oluşturmaya çalışalım, çok zor görünmüyor:

İlk olarak, html'nizde:

İkincisi, javascript dosyanızda:

tahta1 = Satranç Tahtası('tahta1', 'başlangıç');

ve işte karşınızda, şimdi bir satranç tahtası görebilmelisiniz! Tahtayı CSS dosyalarında özelleştirmekten çekinmeyin!

Şimdi, satranç tahtasında çok zor olmayan bazı hamleler görmek istiyoruz. Ancak, taşıma komutunun arka uç tarafından gönderilmesi için onu özelleştirmemiz gerekiyor. Çok fazla ayrıntıya girmeyeceğim ama şöyle bir şey yapmak istiyoruz:

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

Arka uç programımızdan bir liste alıyoruz ve iki koordinat arasına bir tire koyuyoruz, ardından hareketi yürütmek için board.move komutunu kullanıyoruz!

Chessboard.js eklentisi için neye ihtiyacımız olduğuna dair açıklamam bu, kodu kendiniz incelemek için github adresime gidin

Önerilen: