Mündəricat:

Rəqəmsal Şahmat - Şahmat Oyununuzu Onlayn izləyin: 5 addım
Rəqəmsal Şahmat - Şahmat Oyununuzu Onlayn izləyin: 5 addım

Video: Rəqəmsal Şahmat - Şahmat Oyununuzu Onlayn izləyin: 5 addım

Video: Rəqəmsal Şahmat - Şahmat Oyununuzu Onlayn izləyin: 5 addım
Video: "SİMA Şahmat Turniri - 2022" ♟️ 2024, Noyabr
Anonim
Rəqəmsal Şahmat - Şahmat Oyununuzu Onlayn İzləyin
Rəqəmsal Şahmat - Şahmat Oyununuzu Onlayn İzləyin

Gəncliyimdən bəri çox şahmat oynayıram və vebdə kompüterlərə və ya canlı rəqiblərə qarşı şahmat oynamaq üçün çox sayda veb sayt olduğu üçün heç vaxt şahmat oyununuzu izləyən bir veb sayt tapmadım. əslində real həyatda oynayır. Beləliklə, bu layihə ilə bunu həyata keçirməyi ümid edirəm!

Ümid edirəm:

  • Şahmat fiqurlarının hərəkətini izləyə bilmək
  • Keçmiş oyunlar haqqında bəzi lider lövhələrinə baxın.
  • Vaxtı izləyin və peşəkar bir oyun kimi sürətli oynayın.

Çox mürəkkəb bir layihədir, çünki tamamlandıqda oxumaq üçün 64 işıq sensoru və 8 çip tələb olunacaq. Hansı ki, artıq böyük bir işdir və digər sensorlardan heç birini saymırıq.

Kollecimiz bizə etməli olduğumuz işlərin böyük bir siyahısını verdi:

  1. Layihəmiz üçün bir sxem yaradın
  2. Məlumatların saxlanması və alınması üçün bir verilənlər bazası yaradın.
  3. Adobe XD istifadə edərək veb sayt hazırlayın
  4. Bu veb saytı CSS və HTML ilə yenidən yaradın
  5. Python ilə sensorları oxuyun
  6. Şüşə istifadə edərək veb saytındakı sensor məlumatlarını göstərin.

Bu təlimatda sizi səyahətimdə istiqamətləndirəcəyəm və son bir neçə həftə ərzində yaşadığım bütün çətinliklər və qurtuluş anları.

Addım 1: Təchizat/Alətlər

Təchizat, material və alətlər uğurlu bir layihə üçün ilk addımdır!

Alətlər:

  • Lehimleme dəmir
  • Lehimləmə Qalay
  • Kəlbətinlər
  • Qazma maşını
  • Tape

Təchizat:

  • Micro SD kartlı Raspberry Pi (4 GB kifayət olmalıdır)
  • Rasberry Pi ayaqqabı
  • Parça ilə şahmat taxtası
  • 7 seqmentli ekran (TM 1637)
  • 2 toxunma sensoru (TTP223B)
  • Kartlı RFID Oxucu (MFRC522)
  • MCP3008 (Nə qədər getmək istədiyinizə bağlı olaraq, hər MCP üçün 8 Şahmat koordinatını oxuya bilərsiniz)
  • 5288 tipli İşıqdan Rezistor (hər MCP üçün 8)
  • Başlıqlar (Kişidən kişiyə və qadından kişiyə)

Hər şeyi almaq lazımdırsa, təxmini xərc qiyməti göndərmə xərcləri də daxil olmaqla 125 avro ətrafında olmalıdır (Yalnız təchizat üçün)!

İstədiyiniz hər şeyə bağlantılar və qiymətlər əlavə edilmiş bir Excel faylı var!

Addım 2: Sxem və Planlaşdırma

Sxem və Planlaşdırma!
Sxem və Planlaşdırma!
Sxem və Planlaşdırma!
Sxem və Planlaşdırma!

Bu layihədə növbəti addım bir sxem yaratmaqdır. 2 etdim: Biri çörək taxtasında, biri sırf elektronikada. Hər şeyi təmiz saxlamaq və lazımsız əşyaları bağlamadığımızdan əmin olmaq üçün bu sxemlərə ehtiyacımız olacaq!

Kimsə maraqlanırsa bu sxemləri yaratmaq üçün "Fritzing" adlı bir proqramdan istifadə etdim.

Rəng Kodlaması:

  • Qırmızı = enerji təchizatı
  • Yaşıl = əlaqə
  • Mavi = torpaq

Raspberry Pi əlaqələri:

  • 3V3 => Çörək lövhəsində hər şeyə güc verən VC xətti
  • 5V => 7 seqmentli VCC
  • GND:

    • Çörək taxtasında yer
    • 7 seqmentli ekranın zəmini
  • GPIO4 => Saat MCP3008 pinini seçin
  • GPIO10 => MCP3008 -in MOSI pin
  • GPIO9 => MCP3008 -in MISO pimi
  • GPIO11 => MCP3008 -in CLK pimi
  • GPIO7 => MFRC522 SDA pin
  • GPIO19 => İlk Touch sensorunun DIG pin
  • GPIO26 => İkinci Touch sensorunun DIG pin
  • GPIO20 => Yeddi seqmentli ekranın CLK pin
  • GPIO21 = yeddi seqmentli ekranın DIO pimi

Sxemlər haqqında bir cüt qeyd edir:

  • Bu sxemdə yalnız 1 MCP var, bu o deməkdir ki, yalnız 8 koordinat tam oxunacaq.
  • Çip seçimim olaraq GPIO sancaqlarından istifadə edəcəyəm. Potensial olaraq 8 MCP ilə yalnız 2 Çip seçmə pinləri mövcud olduğundan.
  • 7 seqmentli ekran müəllim tərəfindən təklif olunanlardan biridir, öz protokolu üzərində işlədiyi üçün cəmi 4 telə ehtiyac var.
  • Toxunma sensorlarının rəqəmsal pinindəki rezistorlara tam ehtiyac yoxdur, lakin tövsiyə olunur.

Komponentlərin izahı:

  • İşıq sensoru olan MCP:

    • Bir MCP3008 8 kanallı 10 bit ADC -dir:

      • bir MCP3008, işıq sensörlərinin analoq dəyərini oxuyacaq, bu dəyər hazırda sensorda parlayan işıq miqdarına bağlıdır.
      • Python kodumda bu analoq dəyəri alacağam və 1 və ya 0 -a çevirəcəyəm
  • Toxunma sensorları:

    Eynilə bir düymə kimi işləyir, bunun üçün geri çağırma metodu ilə bir sinif istifadə edirəm. Bu barədə daha sonra

    RFID oxucu (MFRC 522):

    • Quraşdırılmış paketi olan xüsusi bir protokol (SPI) istifadə edir.
    • Quraşdırılmış bir paket ilə kodlaşdırmaq çətin deyil
    • Etiketi oxuyur və etiketin dəyərini qaytarır
    • Bir etiketə bir dəyər yaza bilərsiniz, buna görə onaltılı dəyəri qaytarmaq əvəzinə bir ad qaytarır

    7 Segment (TM1637)

    • Həm də asan kodlaşdırma üçün quraşdırılmış paketdən istifadə edir
    • Tam bir dəyərə malik bir dəyişən yaradın, sonra onu 4 xarakterə bölün və həmin simvolları göstərin

Addım 3: SQL verilənlər bazası

SQL verilənlər bazası
SQL verilənlər bazası

Bu layihəyə doğru üçüncü addım 3NF normallaşdırılmış SQL verilənlər bazası yaratmaqdır!

Buna ehtiyacımız olacaq:

  • Məlumat daxil edilir
  • Məlumat əldə etmək və veb saytımızda göstərmək
  • Mövcud şahmat oyununda nə qədər döndüyünü görə bilmək!

Cədvəllər izah edildi:

  • Oyunlar

    • Bu, müəyyən bir oyunu kimin qazandığını və oyunun nə vaxt oynandığını izləyir
    • Burada əsas açar GameID -dir
    • Tarix cari tarixin standart dəyərinə malikdir
    • Qalib və hesab oyun bitdikdən sonra əlavə olunacaq!
  • Oyunçular (Hollandiyada yazanlar)

    • Bunlar əl ilə daxil edilir, lakin RFID kart sistemi ilə də daxil edilə bilər.
    • Kartınıza bir ad yazın, sonra kartı oxuyun və adını bu cədvələ daxil edin
    • Həm də hər bir oyunçunun veb saytında göstərilməsi üçün qazandığı / itirdiyi rekordu izləyir
  • Tarixçi (Tarix)

    • Bu dönüş tarixi
    • bir şahmat parçası köçürüldükdə burada yenilənəcək
    • 3 xarici açar, oyunçu, oyun və şahmat var
    • ReadDate (InleesDatum), sensorun oxunduğu tarixdir
    • ReadTime, ReadDate ilə eynidır, lakin zaman damgası ilə
    • LocationID (LocatieID), yerləşdiyi koordinatın adıdır. məsələn "a3"
  • Şahmat Fiqurları (Hollandiyada Schaakstukken)

    • Hər bir şahmat parçasının şəxsiyyəti, komandası, adı və statusu var
    • Komanda ya 1, ya da 2, qara və ya ağ;
    • Həmişə yazılan əsərin adı "Piyon 1" olardı
    • Status, parçanın diri və ya ölü olduğunu bildirir!

Addım 4: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq

İndi bütün düzgün parçaları hazırladıqdan sonra bir şey yaratmağa başlaya bilərik!

Bu hissəni alt addımlara ayıraq, çünki izah etmək daha asan olacaq:

  • Addım 1: Şahmat taxtanızın hər koordinatına ilk şəkildə göstərildiyi kimi bir delik açmaq, həmçinin toxunma sensorlarını, RFID oxuyucusunu və 7 seqmentli ekranı yerləşdirmək istədiyiniz bir delik açmaq istəyirsiniz.

    Lövhənin yan tərəfində bir neçə delik açmağı unutmayın, bunlar lövhənin üstündəki müxtəlif komponentlərin telləri üçündür. Çox qazma, bilirəm

  • Addım 2: Bir və ya iki sensoru Raspberry Pi -yə bağlamağa çalışın, işlədiyini yoxlayın. Onları əvvəllər 2 -ci addımda (sxemlər) izah edildiyi kimi MCP analoq oxuyucusuna bağlamaq istəyirsiniz.
  • Addım 3: Bu çətin və çox sinir sarsıdıcı ola bilər, çünki tullanan başlıqlar çox yerində qalmadığından hamısını birdən -birə lövhəyə yapışdırmaq istəyə bilərsiniz. Şahmat taxtasında ilişib qaldıqlarından əmin olmalısan, əks halda sensorları uğurla oxuya bilməyəcəksən

    İPUCU! Əgər işinizi asanlaşdırsanız, bəzi yapışqanlar sensorları lentə alarkən yerlərində saxlamağa kömək edə bilər, bunu çətin bir şəkildə kəşf etdim

Addım 5: Proqram təminatı

Proqram təminatı
Proqram təminatı

Test edə biləcəyiniz bir cihaz hazırladıqdan sonra bunun üçün bir kod yazmağa çalışaq! Koduma baxmaq istəyirsinizsə, github -a daxil olun.

Əvvəlcə bir neçə paketin qurulmasına ehtiyacımız olacaq, davam etdim və sizin üçün bir siyahı hazırladım:

  • balon

    Python kodunuzun işləyəcəyi budur

  • Şüşə priz

    Ön və arxa tərəflər arasında ünsiyyət qurmaq

  • əsəbi

    İşıq sensorlarını oxumaq üçün faydalıdır, matrislərlə işləyir

  • netfaces

    7 seqmentli ekranda öz IP ünvanınızı çap etmək üçün

  • Şüşə-CORS

    Çarpaz mənşəli müraciət paylaşımı, paketlərin fərqli sahələrdə paylaşılmasına imkan verir

Bunun yanında bir neçə dərs yazdım və onlardan istifadə etməkdə sərbəstsiniz.

Ön tərəf

Veb sayt kodu github səhifəmdə də mövcuddur!

Ön tərəf üçün Chessboard.js istifadə edəcəyəm. Bu, hərəkət etmək asan olan parçaları olan istifadəsi asan bir şahmat taxtası əlavə edir!

Lövhədə hər şey fərdiləşdirilə bilər, buna görə əylənin! Ən son versiyanı yüklədikdən sonra sənədləri layihənizə sürükləməli və şahmat taxtası göstərmək istədiyiniz səhifəyə bağlamalı olacaqsınız!

Bundan sonra bir lövhə yaratmağa çalışaq, çox da çətin görünmür:

Əvvəlcə html -də:

İkincisi, javascript faylınızda:

board1 = ChessBoard ('board1', 'start');

və orada var, indi bir şahmat taxtası görə bilməlisən! CSS sənədlərində lövhəni düzəltməkdən çekinmeyin!

İndi biz şahmat taxtasında çox çətin olmayan bəzi hərəkətləri görmək istəyirik. Ancaq hərəkət əmrinin arxa tərəfi tərəfindən göndərilməsi üçün onu fərdiləşdirməliyik. Çox təfərrüata girməyəcəyəm, amma belə bir şey etmək istəyirik:

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

Arxa plan proqramımızdan bir siyahı alırıq və iki koordinatın arasına bir tire qoyuruq, sonra hərəkəti yerinə yetirmək üçün board.move əmrindən istifadə edirik!

Chessboard.js plagininə ehtiyacımızın izahı budur, kodu özünüz görmək üçün github -a daxil olun.

Tövsiyə: