İçindekiler:

Elektronik Satranç Tahtasının 4x4 Demosu/ Arduino Mega + RFID Okuyucu + Hall Etkisi Sensörleri ile: 7 Adım
Elektronik Satranç Tahtasının 4x4 Demosu/ Arduino Mega + RFID Okuyucu + Hall Etkisi Sensörleri ile: 7 Adım

Video: Elektronik Satranç Tahtasının 4x4 Demosu/ Arduino Mega + RFID Okuyucu + Hall Etkisi Sensörleri ile: 7 Adım

Video: Elektronik Satranç Tahtasının 4x4 Demosu/ Arduino Mega + RFID Okuyucu + Hall Etkisi Sensörleri ile: 7 Adım
Video: Arduino Dersleri #8 "Trafik Lambası Arduino IDE Kodu" 2024, Kasım
Anonim
Elektronik Satranç Tahtasının 4x4 Demosu/ Arduino Mega + RFID Okuyucu + Hall Etkisi Sensörleri ile
Elektronik Satranç Tahtasının 4x4 Demosu/ Arduino Mega + RFID Okuyucu + Hall Etkisi Sensörleri ile

Merhaba yapımcılar, Ben Tahir Miriyev, Orta Doğu Teknik Üniversitesi, Ankara / Türkiye'den 2018 mezunuyum. Uygulamalı Matematik alanında uzmanlaştım, ancak özellikle elektronik, tasarım ve programlama ile ilgili bazı el işleri söz konusu olduğunda, bir şeyler yapmayı her zaman sevdim. Endüstriyel Tasarım bölümümüzde verilen prototipleme üzerine benzersiz bir kurs sayesinde, gerçekten ilginç bir şey yapma şansım oldu. Proje, bir dönem (4 ay) boyunca süren bir Dönem Projesi olarak değerlendirilebilir. Öğrencilere, halihazırda var olan ürünleri/demoları tasarlamak için yaratıcı bir yaklaşım bulma ve Arduino mikrodenetleyicileri ve sensörlerini kullanarak fikirlerini gerçekleştirme görevi verildi. Satranç hakkında düşünüyordum ve başarılı projeler üzerinde biraz araştırma yaptıktan sonra, önceki projelerde yapımcıların temel olarak hazır satranç motorlarını (her figürün tüm hareketlerinin çekirdekte programlandığı) ve Raspberry Pi, bir miktar MUX kullandığını fark ettim. 'es, LED'ler ve reed anahtarları. Projemde ise satranç motoru anlamında her türlü harici yazılımdan kurtulmaya ve RFID okuyucu, Hall efekt sensörleri ve Arduino Mega kullanarak Figür Tanıma sorununa yaratıcı bir çözüm bulmaya karar verdim.

Adım 1: Figür Tanıma Problemi Nedir ve Nasıl Çözdüm

Figür Tanıma Problemi Nedir ve Nasıl Çözdüm
Figür Tanıma Problemi Nedir ve Nasıl Çözdüm

Basitçe söylemek gerekirse, "beyin" = mikro denetleyiciye sahip bir satranç tahtanız olduğunu ve tahtanızın hangi figürü elinizde tuttuğunuzu ve nereye koyduğunuzu anlamasını sağlamanız gerektiğini varsayalım. Bu, Şekil Tanıma sorunudur. Bu sorunun çözümü, tüm taşları tahtadaki ilk konumlarında duran bir satranç motorunuz olduğunda önemsizdir. Neden böyle olduğunu açıklamadan önce, bazı açıklamalar yapmama izin verin.

Burada işlerin nasıl yürüdüğü konusunda hevesli olanlar için, neden kamış anahtarlara ihtiyacımız olduğuna dair bir açıklama yapmam gerekiyor (veya benim durumumda Hall etkisi sensörleri kullandım): eğer her parçanın altına bir mıknatıs yerleştirir ve onu yerden alırsanız. Sensörün üzerindeki manyetik alanın varlığından/yokluğundan dolayı kart üzerinde bir kare (her karenin altında bir reed switch olduğunu varsayarak) karenin üzerinde duran bir parçanın olup olmadığını kontrolörünüzün anlamasını sağlayabilirsiniz.. Ancak yine de mikrodenetleyiciye tam olarak hangi parçanın karede durduğu hakkında hiçbir şey söylemez. Sadece karede bir parça olduğunu/olmadığını söyler. Bu noktada, satranç oyunu başladığında tüm taşların ilk konumlarına yerleştirildiği bir satranç motoru kullanılarak çözülebilecek bir Şekil Tanıma problemi ile karşı karşıyayız. Bu şekilde mikrodenetleyici, tüm adresler hafızada sabitlenmiş olarak, her parçanın nerede durduğunu en başından "bilir". Bununla birlikte, bu bize büyük bir sınırlama getiriyor: Diyelim ki herhangi bir sayıda parça seçip bunları tahtada herhangi bir yere rastgele yerleştirip oyunu analiz etmeye başlayamazsınız. Her zaman en baştan başlamanız gerekir, tüm parçalar orijinal olarak tahtada olmalıdır, çünkü bir parçayı kaldırıp başka bir kareye yerleştirdikten sonra mikro denetleyicinin konumlarını izlemesinin tek yolu budur. Özünde, fark ettiğim ve üzerinde çalışmaya karar verdiğim sorun buydu.

Çözümüm yaratıcı olmasına rağmen oldukça basitti. Bir kartın ön tarafına bir RFID okuyucu yerleştirdim. Bu arada, parçaların altına sadece bir mıknatıs değil, aynı zamanda her parçanın benzersiz bir kimliği olan bir RFID etiketi de ekledim. Böylece istediğiniz kareye figür yerleştirmeden önce parçayı RFID okuyucuya yakın tutarak ID'yi okumasını, parçayı tanımlamasını, hafızaya kaydetmesini ve ardından istediğiniz yere yerleştirmesini sağlayabilirsiniz. Ayrıca reed anahtarlar kullanmak yerine devre tasarımını basitleştirmek için benzer şekilde çalışan salon efekt sensörleri kullandım, tek farkı mikrodenetleyiciye dijital veri olarak 0 veya 1 göndermesi yani "var" anlamına gelmesi. veya sırasıyla karede herhangi bir parça "yok". LED'ler de ekledim (maalesef aynı renkte değil, yoktu), böylece parçayı kaldırdığınızda, kaldırılan bir parçanın yerleştirilebileceği tüm kare yerler yanacaktır. Satranç öğrenenler için eğitici bir uygulama olarak düşünün:)

Son olarak, birkaç teknik kullanmama rağmen, projenin basit ve anlaşılır olduğunu, derinlemesine çalışılmadığını veya fazla karmaşık olmadığını belirtmek isterim. 8x8 satranç tahtası ile devam edecek zamanım olmadı (ayrıca Türkiye'de 64 hall efekt sensörü pahalı olduğu için proje ile ilgili tüm masrafları ben karşıladım), bu yüzden 4x4 demo versiyonunu sadece iki parça test ederek yaptım: Piyon ve Kraliçe. Satranç motoru kullanmak yerine Arduino için aşağıdaki videoda göreceğiniz her şeyi oluşturan bir kaynak kodu yazdım.

2. Adım: İşler Nasıl Çalışır?

Image
Image

Projenin nasıl yapıldığının adım adım açıklamasına geçmeden önce, açıklayıcı bir video izlemenin ve neden bahsettiğim hakkında sezgisel bir fikir edinmenin daha iyi olacağını düşünüyorum.

Not 1: Kırmızı LED'lerden biri (sıradaki ilk/ soldan sağa) yandı, boşver.

Not 2: Yaygın olarak kullanılmasına rağmen, kendi tecrübelerime dayanarak, RFID Teknolojisinin DIY uygulamalarında (tabii alternatifleriniz varsa) kullanmak için en iyi fikir olmadığını söyleyebilirim. Her şey işe yaramadan önce, satranç taşlarını okuyucuya yaklaştırarak ve kimliği doğru bir şekilde okuyana kadar bekleyerek birçok deneme yaptım. Bunun için seri port kurulmalıdır, çünkü RFID okuyucunun ID'yi okuma şekli sadece bir baş ağrısıdır. Konuyu anlamak için kişinin kendi başına denemesi gerekir. Daha fazla yardıma ihtiyacınız olursa, lütfen bana mail atın ([email protected]) veya skype ekleyin (tahir.miriyev9r1), böylece bir konuşma planlayabilir ve her şeyi ayrıntılı olarak tartışabiliriz, her şeyi ayrıntılı olarak açıklayacağım.

3. Adım: Araçlar ve Bileşenler

Araçlar ve Bileşenler
Araçlar ve Bileşenler
Araçlar ve Bileşenler
Araçlar ve Bileşenler
Araçlar ve Bileşenler
Araçlar ve Bileşenler

Proje için kullandığım tüm araçların listesi: Elektronik bileşenler:

  • Breadboard (x1)
  • Çok yönlü A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Hall efekti sensörleri (x16)
  • Temel 5 mm LED'ler (x16)
  • Atlama telleri
  • 125 kHz RFID Okuyucu ve Anten (x1)
  • Arduino Mega (x1)
  • RFID 3M Etiketleri (x2)

Diğer materyaller:

  • pleksiglas
  • parlak kağıt
  • kısa Kalaslar (ahşap)
  • Akrilik boya (koyu yeşil ve krem) x2
  • ince karton
  • 10 mm yuvarlak mıknatıslar (x2)
  • Piyon ve Vezir parçaları
  • Havya ve havya malzemeleri

Adım 4: Şemalar (Fritzing)

Şemalar (Fritzing)
Şemalar (Fritzing)

Şemalar biraz karmaşık, biliyorum ama fikir açık olmalı. Fritzing'i ilk kez kullandım (bu arada şiddetle tavsiye edilir), muhtemelen bağlantılar daha doğru çizilebilirdi. Neyse, şemaların içindeki her şeyi not ettim. Not: Fritzing veritabanındaki bileşenler arasında RDIF Reader'ın tam modelini bulamadım. Kullandığım model 125Khz RFID modülü - UART. Bu modülü Arduino ile nasıl ayarlayacağınızla ilgili Youtube'da eğitimler bulabilirsiniz.

Adım 5: İşlem

İşlem
İşlem

İşlerin nasıl yapıldığını açıklama zamanı. Lütfen adım adım açıklamayı takip edin:

1. A B C D 1 2 3 4 numaralandırılmış 16 kare yapmak için 21x21 cm'lik bir karton alın ve tahtanın üst kısmının duvarlarını kesmek ve yapıştırmak için fazladan bir karton alın. Karton ince olduğu için her kareye 3'er ayaklı 16 salon efekt sensörü ve 2'şer ayaklı 16 LED yapıştırabilirsiniz.

2. Bileşenleri ayarladıktan sonra, Hall etkisi sensörlerinin ayaklarını ve LED'leri jumper kablolarına lehimlemek için biraz lehimleme yapmanız gerekecektir. Bu noktada LED'lerin + ve - ayakları ile Hall efekt sensörlerinin VCC, GND ve PIN ayakları ile kafanız karışmaması için renkli kabloları akıllıca seçmenizi tavsiye ederim. Tabii ki, sensörlü bir PCB yazdırılabilir ve hatta WS2812 tipi LED'ler zaten lehimlenmiştir, ancak projeyi basit tutmaya ve biraz daha "el işi" yapmaya karar verdim. Bu noktada yapmanız gereken tek şey kabloları ve sensörleri hazırlamaktır, daha sonraki aşamalarda Fritzing şemasından sonraki aşamalarda her bir telin ucunu nereye bağlamanız gerektiğini görebilirsiniz. Kısaca, bazıları doğrudan Arduino Mega'daki PIN'lere gidecek (Arduino'da yeterince var), diğerleri breadboard'a ve tüm GND'ler tek bir kabloya lehimlenebilir (ortak zemin yaparak) daha sonra Arduino kartındaki GND'ye bağlanmalıdır. Burada önemli bir not: Hall etkisi sensörleri OMNIDIRECTIONAL'dır, yani bir mıknatısın hangi kutbunun sensöre yakın tutulacağı önemli değildir, yakınlarda bir manyetik alan varken 0 veri gönderir ve olmadığında 1 veri gönderir, yani, mıknatıs sensörden uzaktadır (5 sm diyelim).

3. Benzer 21x21 cm karton hazırlayın ve Arduino Mega'yı ve uzun bir breadboard'u üzerine sabitleyin. Yine mukavvadan istediğiniz yükseklikte 4 duvar kesip, 21x21 cm karelik bu iki kat karton ile dikey olarak yapıştırabilirsiniz. Ardından, işleri ayarlamak için Fritzing Schematics'i takip edin. LED'ler ve Hall etkisi sensörleriyle işiniz bittikten sonra RFID okuyucuyu da ayarlayabilirsiniz.

4. Temel kodları kullanarak sinyal göndererek tüm LED'lerin ve sensörlerin çalışıp çalışmadığını test edin. Her şeyin düzgün çalışıp çalışmadığını test etmenize ve panonun daha ileri yapımına geçmenize izin vereceği için bu adımdan kaçınmayın.

5. Piyon ve Veziri, altına 10 cm yarıçapında iki mıknatıs ve ayrıca yuvarlak RFID etiketleri iliştirerek hazırlayın. Daha sonra, Arduino IDE'deki Seri Ekrandan bu etiketlerin kimliklerini okumanız gerekecek.

6. Her şey yolunda giderse, ana kodu başlatabilir ve bir şeyler deneyebilirsiniz!

7 (isteğe bağlı). Demonuza daha doğal bir görünüm kazandıracak ahşapla sanatsal çalışmalar yapabilirsiniz. Bu sizin iradenize ve hayal gücünüze kalmış.

6. Adım: Farklı Aşamalardan Bazı Fotoğraflar ve Videolar

Image
Image
Farklı Aşamalardan Bazı Fotoğraflar ve Videolar
Farklı Aşamalardan Bazı Fotoğraflar ve Videolar
Farklı Aşamalardan Bazı Fotoğraflar ve Videolar
Farklı Aşamalardan Bazı Fotoğraflar ve Videolar

7. Adım: Kaynak Kodu

Kaynak kodu
Kaynak kodu

Şimdi bir prototiple işimiz bittiğinde, aşağıdaki Arduino kodu ile onu hayata geçirmeye hazırız. Kod analizi sürecini anlaşılır kılmak adına elimden geldiğince yorum bırakmaya çalıştım. Dürüst olmak gerekirse, mantık ilk bakışta biraz karmaşık görünebilir, ancak kodun mantığına daha derine inerseniz, daha kapsamlı görünecektir.

Not: Gerçek satranç tahtasına benzer şekilde, kareleri A1, A2, A3, A4, B1, …, C1, …, D1,.., D4 olarak soyut olarak numaralandırdım. Ancak kodda bu gösterimi kullanmak pratik değildir. Bu nedenle dizileri kullandım ve kareleri sırasıyla 00, 01, 02, 03, 10, 11, 12, 13, …, 32, 33 olarak temsil ettim.

İlginiz için teşekkür ederiz! Her şeyi test edin ve gözden kaçırdığım her türlü hata, iyileştirme, öneri vb. yorumlarda özgürce yazın. Proje hakkında bazı görüşlerinizi bekliyorum. Proje ile ilgili herhangi bir yardıma ihtiyacınız olursa bana mail atın (miriyevt@gmail)..com) veya skype (tahir.miriyev9r1) ekleyin, böylece bir konuşma planlayabilir ve ayrıntılı olarak tartışabiliriz. İyi şanslar!