Mendeteksi penempatan objek di grid


11

Saya sedang mengerjakan proyek Android ADK. Saya mencari cara untuk mendeteksi lokasi bidak catur di papan (8x8). Saya melihat hal-hal seperti NFC tetapi terlihat terlalu mahal. Apakah ada teknologi berbeda yang harus saya pertimbangkan. Saya butuh sesuatu yang dunia bisa baca keadaan papan penuh kapan saja. Sebagai contoh beberapa bagian mungkin akan terjatuh dan begitu mereka diatur kembali saya perlu lokasi. Untuk menjelaskan hal ini lebih lanjut, dalam permainan catur turoment jika kepingan dipindahkan ke lokasi yang salah dan tidak ada pemberitahuan pemain permainan akan berlanjut. Jadi saya perlu merekam permainan meskipun posisinya tidak mungkin berdasarkan aturan permainan.

Saya hanya ingin diarahkan ke arah umum tentang teknologi apa yang harus dilihat.


"Dalam permainan catur turnamen jika kepingan dipindahkan ke lokasi yang salah dan tidak ada pemain yang tahu permainan akan berlanjut". Saya penasaran. Aturan catur bilang begitu? (Sebenarnya, itu masuk akal, karena -jika tidak ada orang lain yang menonton-, bagaimana mungkin mereka tidak melanjutkan, jika tidak ada yang memperhatikan?)
Telaclavo

@Telaclavo saya dapat mengkonfirmasi, itu terjadi pada saya di sebuah turnamen. Tidak ada solusi yang jelas pada tingkat permainan saya yang rendah.
Stephen Collings

Jawaban:


13

Ide pertama : RFID. Satu tag (sangat murah) di bawah setiap bagian. Setiap tag harus mengidentifikasi jenis keping mana (dari {6 white} + {6 black} = 12 jenis yang berbeda). Satu sirkuit transceiver dan 1-ke-64 multiplexer untuk seluruh papan. Juga, 64 antena kecil, masing-masing di bawah setiap posisi papan. Transceiver beroperasi pada daya RF yang sangat rendah (Anda harus menemukan yang optimal, secara eksperimental). Dengan mengubah koneksi multiplexer, Anda memindai semua 64 posisi, dan membaca ID tag (jika ada) yang ada di masing-masing.

Saya tidak pernah menggunakan IC yang dibicarakan, tetapi dokumen ini mungkin membantu Anda menerapkan multiplexer RFID (yang akan menjadi bagian paling menantang, bersama dengan tata letaknya yang cermat).

Gagasan kedua : bedakan setiap jenis serpihan dengan permeabilitas magnetiknya yang unik. Untuk setiap bagian, Anda akan menambahkan massa tertentu di bagian bawahnya. Massa ekstra ini akan sama untuk semua 32 buah (sehingga pengguna merasa nyaman dengan mereka). Setiap massa tambahan akan menjadi jumlah dari dua massa: massa "magnetik", ditambah massa "kompensasi" (non-magnetik). Satu-satunya tujuan dari massa kompensasi adalah untuk membuat total massa ekstra sama dengan semua jenis potongan. Anda perlu membedakan 12 jenis potongan yang berbeda. Setiap jenis potongan harus memiliki massa magnetik dengan permeabilitas magnetik yang unik, . Anda mungkin akan memilih bahan dengan tinggi , tetapi ada banyak bahan yang dapat Anda pilih, masing-masing dengan berbeda (lihat satu tabelμ μμμμdi sini ).

Di bawah setiap posisi papan, Anda perlu melilitkan beberapa lilitan kawat (sehingga diameternya hampir sisi persegi). Anda akan memiliki 64 gulungan. Sekali lagi, gunakan multiplexer 1-ke-64, untuk menghubungkan hanya satu dari mereka ke induktansi meter. Perbedaannya, sekarang, adalah bahwa multiplexer tidak perlu berurusan dengan RF. Anda dapat mengikat satu simpul dari semua koil bersama-sama, dan menggunakan 64 switch analog (sangat murah), untuk mengarahkan, seperti yang saya katakan, satu koil ke induktansi meter. Rangkaian harus menentukan, dalam waktu sesingkat mungkin, berapa induktansi diri yang diukur pada masing-masing dari 64 kumparan. Tidak perlu banyak akurasi. Itu hanya perlu menentukan 13 nilai yang mungkin berbeda untuk L (yaitu kurang dari 4 bit!). Anda dapat bereksperimen dengan metode dalam domain waktu (mis., Menerapkan tegangan konstan, dan mengukur kemiringan arus), atau dalam domain frekuensi (misalnya, mencoba mencari frekuensi resonansi dengan cepat, dengan kapasitor tambahan tertentu). Untuk mencapai 12 nilai berbeda untuk L, Anda dapat bermain dengan permeabilitas yang berbeda, dan dimensi yang berbeda untuk bahan magnetik.

Karena Anda harus memindai 64 posisi (mengukur 64 induktansi diri) dalam waktu yang wajar, saya mungkin akan menggunakan pendekatan domain waktu. Misalnya, jika Anda membiarkan diri Anda 1 detik untuk membaca seluruh kondisi board, Anda memiliki 15,6 ms untuk setiap pengukuran induktansi. Menantang, tetapi bisa dilakukan.

Jika kecepatan akhirnya benar-benar menjadi hambatan, Anda bisa membuat sistem Anda 8x lebih cepat, jika Anda memasukkan 8 ujung depan analog, bukan satu. Setiap ujung depan akan dikhususkan untuk setiap baris di papan tulis. Dengan begitu, Anda dapat mengukur 8 induktansi diri secara bersamaan (memberi Anda 125 ms untuk setiap pengukuran, dan Anda akan tetap memiliki status papan keseluruhan dalam 1 detik). Saya yakin satu MCU, bahkan dengan ADC tunggal (dengan 8 saluran), sudah cukup.

Ini bisa (tanpa semua rincian) skema untuk setiap ujung depan (yang bisa menjadi satu untuk seluruh papan, atau satu untuk setiap baris, seperti yang disebutkan), dan cara untuk dengan cepat memperkirakan induktansi diri ke (N menjadi 8 atau 64). Node umum untuk kumparan akan menjadi yang teratas, dan sinyal kontrol untuk switch analog tidak ditampilkan, untuk kesederhanaan. TS akan konstan, dan VX sampel di TS akan digunakan untuk menghitung induktansi diri. TG akan sedikit lebih panjang dari TS.L NL1LN

Ide 2

Manfaat dari gagasan kedua ini: tidak melibatkan RF. Namun, Anda perlu membuat "tag" sendiri, dengan permeabilitas yang berbeda.


Terima kasih. Gagasan pertama Anda tampaknya merupakan jalan yang harus ditempuh. Saya suka kreativitas ide kedua Anda. Mungkin lebih baik untuk produk komersial di mana potongan bisa dibuat khusus. Namun, saya hanya melakukan ini untuk bersenang-senang.
theJosh

@Jos bahkan setelah menjawab, ada kalimat dalam pertanyaan Anda yang masih membingungkan saya. Yang "Sebagai contoh beberapa bagian mungkin akan jatuh dan setelah mereka diatur kembali saya perlu lokasi" tidak masuk akal bagi saya, karena jika potongan-potongan itu jatuh, itu harus menjadi memori sistem Anda yang harus memberi tahu pengguna tempat meletakkan potongan, dan bukan sebaliknya. Saya menafsirkan kalimat itu sebagai: Anda ingin sistem dapat membaca keadaan dewan arbitrer mana pun, tanpa bergantung pada sejarah, dan saya membuang jawaban yang lebih sederhana dengan pemikiran itu.
Telaclavo

@theJosh (lanjutan). Jika bukan itu masalahnya, solusi davidcary akan lebih sederhana.
Telaclavo

Masalah dengan ide pertama adalah bahwa ia membutuhkan jarak yang cukup pendek untuk RFID. Jika jangkauannya terlalu banyak (lebih dari satu persegi) maka menjadi lebih sulit untuk merasakan posisi potongan yang tepat. Bukan tidak mungkin (saya harap), hanya saja jauh lebih sulit.

@ DavidvidKessner Benar, itu sebabnya saya mengatakan bahwa dia perlu menemukan kekuatan RF yang optimal secara eksperimental. Jarak dari antena ke tag jauh lebih pendek daripada jarak antara dua kotak yang berdekatan, sehingga harus bisa dilakukan.
Telaclavo

4

Saya telah melihat banyak papan catur elektronik yang memiliki lubang yang dibor di tengah masing-masing 64 kotak, dengan fotodetektor sederhana di bawah setiap lubang, yang hanya memberikan 1 bit - "tidak ada apa-apa di sini", atau "sepotong jenis adalah meliputi detektor ". Ini membutuhkan (a) beberapa memori dan kode untuk mengingat konfigurasi papan yang lama, dan untuk melacak bagian mana yang dipindahkan, dan (b) sesuatu yang istimewa untuk menangani promosi gadai. Ini dapat mendeteksi kuadrat mana yang ditempati dan kuadrat mana yang terbuka kapan saja, tetapi tidak dalam keadaan penuh.


1
Pintar! Perangkat keras yang sangat sederhana didukung oleh logika!
clabacchio

Itu bekerja selama hanya satu potong yang pernah dipindahkan pada satu waktu. Itu tidak bekerja untuk kasus OP yang disebutkan di mana beberapa bagian dijatuhkan dan kemudian dipasang kembali. Kalau tidak, itu solusi yang baik.

1

GlyphChess memecahkan ini dengan menggunakan papan catur transparan. Pemindai di bawahnya membaca barcode unik yang menempel di bagian bawah masing-masing bagian untuk mengetahui bagian mana yang terletak. "Kode Rahasia PARC" Slashdot: Mainkan Catur GNU Pada Pemindai Anda Ini dapat membaca ulang status papan penuh kapan saja. Karena ada kurang dari 18 jenis yang unik dari potongan pada papan catur, mungkin akan lebih baik untuk menggunakan mudah mengenali fiducials seperti spidol d-touch daripada barcode resolusi tinggi mampu membedakan jutaan benda.


Hanya penasaran. Menjadi papan transparan, bagaimana mereka menunjukkan kotak hitam dan putih kepada pengguna? Mungkin dengan transparansi menengah? Dan, bukankah pengguna melihat lampu?
Telaclavo

@Telaclavo: Saya tidak tahu - mungkin kotak yang hampir transparan berwarna hijau dan buff tradisional? Jika saya membangun ini hari ini, saya akan membuat interior kotak putih, kemudian meletakkan kamera di bagian bawah dan menempatkan papan catur kaca di atas. Jika ada cukup cahaya bagi manusia untuk melihat potongan-potongan itu, ada lebih dari cukup cahaya yang memantul pada interior putih dan menerangi barcode di bagian bawah setiap bagian untuk dibaca kamera - tidak perlu lampu.
davidcary

1

Saya akan melakukan ini dengan membuat sensor warna untuk setiap kotak, dan menempatkan label warna yang berbeda di bagian bawah potongan.

Sensor warna akan dibuat menggunakan tiga LED (mungkin Merah, Hijau, dan Biru), dan foto-transistor sensitif terhadap semua cahaya yang terlihat. Nyalakan LED secara berurutan dan ukur apa yang diukur oleh fototransistor dari bidak catur.

Anda bisa melakukannya secara terbalik, di mana Anda memiliki LED putih dan tiga fototransistor yang sensitif terhadap warna yang berbeda. Tapi itu lebih sulit dilakukan. Kebanyakan phototransistors tidak selektif warna. Anda dapat menggunakan filter, tetapi lebih mudah untuk hanya menggunakan LED warna yang berbeda.

Jika LED menyala untuk waktu yang cukup singkat maka Anda tidak akan melihatnya "terlalu banyak". Juga, LED dapat digunakan untuk hal-hal lain seperti menandai papan atau melakukan pertunjukan cahaya kecil yang keren saat permainan dimenangkan.

Ada sedikit trik untuk ini, yang membuat semuanya mudah untuk dipasang dan dibangun. Avago memiliki sedikit cahaya sekitar untuk chip I2C yang mungkin membuatnya lebih mudah. Perusahaan lain memiliki hal serupa.

Trik berikutnya adalah membuat label berwarna yang cukup berbeda sehingga Anda memiliki warna yang unik per potong. Ini hanya akan memerlukan beberapa percobaan dan kesalahan, karena kita tidak tahu spektrum pasti dari berbagai pigmen tinta / toner printer. Meski begitu, seharusnya tidak terlalu sulit asalkan Anda bisa mendapatkan resolusi 6 bit dari sensor cahaya. (6 bit akan memberi Anda banyak margin noise.)


1

tidak perlu mendeteksi warna, hanya nuansa abu-abu. Setiap bagian memiliki warna abu-abu di bagian bawah dan sepasang pemancar / detektor IR sederhana yang dipasang di papan membaca nilai analog.


0

Sebuah perusahaan bernama "Zowie" pernah menghasilkan beberapa playset termasuk "Ellie's Enchanted Garden" yang akan terhubung ke komputer, dan yang dapat merasakan posisi beberapa token di permukaan permainan. Setiap token terdiri dari kapasitor dan kumparan kawat, dan permukaan permainan menampilkan kisi-kisi kabel; menempatkan arus melalui kabel horizontal pada frekuensi yang cocok dengan frekuensi LC dari rakitan tutup-koil akan menyebabkan frekuensi tersebut muncul pada kabel vertikal. Jaringan kawat sekitar enam kabel / inci di kedua arah, dan resolusi posisi yang jelas mungkin sekitar 0,05 ", tetapi hanya ada sekitar 16 kabel yang terhubung ke papan CPU; Saya kira kabel diatur dalam pola sedemikian rupa sehingga masing-masing token akan bereaksi terhadap dua atau lebih kabel horisontal dan merangsang setidaknya dua kabel vertikal; dengan mencatat kombinasi kabel mana yang akan bereaksi terhadap rangsangan, CPU dapat mengetahui di mana token itu berada. Saya tidak ingat apa yang diklaim Zowie dalam paten mereka, atau apa yang disebut sebelumnya oleh seni, tapi sangat mungkin sebelum seni akan mencakup pendekatan domain publik sekarang yang akan memadai untuk tujuan Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.