Обнаружение размещения объекта на сетке

11

Я работаю над проектом Android ADK. Я ищу способ определения местоположения шахматных фигур на доске (8х8). Я смотрел на такие вещи, как NFC, но это выглядит слишком дорого. Есть ли другая технология, которую я должен рассмотреть. Мне нужно что-то, чтобы мир мог прочитать полное состояние доски в любое время. Например, некоторые части могут быть опрокинуты, и как только они будут восстановлены, мне нужны места. Чтобы объяснить это далее, в шахматной игре на тот момент, если фигуры будут перемещены в неправильное место, и ни один из игроков не заметит, игра будет продолжена. Поэтому мне нужно записать игру, даже если позиция невозможна в соответствии с правилами игры.

Я просто хочу указать общее направление, на какую технологию смотреть.

theJosh
источник
«В турнирной игре в шахматы, если фигуры перемещены в неправильное место, и ни один из игроков не заметил, игра будет продолжена». Мне любопытно. В шахматных правилах так сказано? (На самом деле, это имеет смысл, потому что - если больше никто не наблюдает - как они могли не продолжать, если никто из них не заметил?)
Телаклаво
@Telaclavo Я могу подтвердить, что это случилось со мной на турнире. На моем низком уровне игры не было очевидного решения.
Стивен Коллингс

Ответы:

13

Первая идея : RFID. Одна бирка (очень дешевая) под каждой частью. Каждый тег должен идентифицировать, какой это тип фигуры (из {6 белых} + {6 черных} = 12 различных типов). Одна схема приемопередатчика и мультиплексор от 1 до 64 для всей платы. Кроме того, 64 маленькие антенны, каждая под каждой позицией платы. Приемопередатчик работает на очень низкой радиочастотной мощности (вы должны найти оптимальный, экспериментально). Изменяя соединения мультиплексора, вы сканируете все 64 позиции и считываете идентификаторы тегов (если таковые имеются), присутствующих на каждом из них.

Я никогда не использовал микросхемы, о которых идет речь, но этот документ может помочь вам реализовать мультиплексор RFID (который будет самой сложной частью, вместе с его тщательной компоновкой).

Вторая идея : отличить каждый тип изделия по его уникальной магнитной проницаемости. К каждой части вы добавите определенную массу внизу. Эта дополнительная масса будет одинаковой для всех 32 штук (чтобы пользователи чувствовали себя с ними комфортно). Каждая дополнительная масса будет суммой двух масс: «магнитная» масса плюс «компенсационная» (немагнитная) масса. Единственная цель компенсационной массы состоит в том, чтобы сделать общую дополнительную массу равной для всех типов деталей. Вам нужно выделить 12 различных типов предметов. Каждый тип изделия должен иметь магнитную массу с уникальной магнитной проницаемостью . Вы, вероятно, выберете материалы с высоким , но есть множество материалов, из которых вы можете выбрать, каждый с разными (см. Одну таблицуμ μμμμздесь )

Под каждым положением доски вам нужно будет намотать несколько витков проволоки (чтобы диаметр был почти со стороны квадрата). У вас будет 64 катушки. Опять же, используйте мультиплексор от 1 до 64, чтобы подключить только один из них к измерителю индуктивности. Разница теперь в том, что мультиплексору не нужно иметь дело с RF. Вы можете связать один узел всех катушек вместе и использовать 64 аналоговых переключателя (очень дешево), чтобы направить, как я сказал, одну катушку к измерителю индуктивности. Схема должна будет в кратчайшие сроки определить, какова собственная индуктивность, измеренная на каждой из 64 катушек. Это не нуждается в большой точности. Просто нужно определить 13 различных возможных значений для L (то есть менее 4 бит!). Вы можете экспериментировать с методами во временной области (например, приложением постоянного напряжения и измерением наклона тока), или в частотной области (например, пытаясь быстро найти резонансную частоту с определенным добавленным конденсатором). Чтобы получить эти 12 разных значений для L, вы можете играть с разными проницаемостями и разными размерами для магнитного материала.

Поскольку вам необходимо сканировать 64 позиции (измерить 64 собственных индуктивности) за разумное время, я бы, вероятно, выбрал подходы во временной области. Например, если вы даете себе 1 секунду, чтобы прочитать все состояние платы, у вас есть 15,6 мс на каждое измерение индуктивности. Сложно, но выполнимо.

Если скорость действительно становится узким местом, вы могли бы сделать вашу систему в 8 раз быстрее, если бы вы включили 8 аналоговых интерфейсов вместо одного. Каждый интерфейс будет посвящен каждому ряду на доске. Таким образом, вы можете измерить 8 собственных индуктивностей одновременно (давая вам 125 мс для каждого измерения, и вы все равно получите полное состояние платы за 1 секунду). Я уверен, что одного MCU, даже с одним АЦП (с 8 каналами), будет достаточно.

Это может быть (без подробностей) схема для каждого внешнего интерфейса (которая может быть одна для всей платы или одна для каждой строки, как уже упоминалось) и способ быстрой оценки собственной индуктивности от до (N = 8 или 64). Общий узел для катушек будет верхним, а управляющие сигналы для аналоговых переключателей не показаны для простоты. TS будет постоянным, а VX, выбранный в TS, будет использоваться для вычисления собственной индуктивности. TG будет чуть длиннее, чем TS.L NL1LN

Идея 2

Преимущество этой второй идеи: без участия РФ. Тем не менее, вам нужно создать свои собственные «теги», с различной проницаемостью.

Telaclavo
источник
Спасибо. Кажется, твоя первая идея - путь. Мне нравится твоя креативность, вторая идея. Это может быть лучше для коммерческого продукта, где части могут быть изготовлены на заказ. Тем не менее, я просто делаю это для удовольствия.
TheJosh
@theJosh Даже после ответа в вашем вопросе есть предложение, которое все еще смущает меня. Один «Например, некоторые части могут быть опрокинуты, и после того, как они настроены заново, мне нужны местоположения», для меня не имеет большого смысла, потому что, если части опрокинуты, это должна быть память вашей системы, которая должен сказать пользователю, где разместить кусочки, а не наоборот. Я интерпретировал это предложение следующим образом: вы хотите, чтобы система могла читать любое произвольное состояние доски, не полагаясь на историю, и я отбросил более простые ответы, помня об этом.
Телаклаво
@theJosh (продолжение). Если бы это было не так, решение Дэвидкари было бы проще.
Телаклаво
Проблема с первой идеей заключается в том, что для радиочастотной идентификации требуется довольно короткий радиус действия. Если диапазон слишком велик (больше, чем квадрат), становится сложнее определить правильное положение фигуры. Не невозможно (надеюсь), просто намного сложнее.
@DavidKessner Правильно, поэтому я сказал, что ему нужно будет найти оптимальную РЧ мощность экспериментально. Расстояние от антенны до метки намного меньше расстояния между двумя соседними квадратами, поэтому оно должно быть выполнимым.
Телаклаво
4

Я видел много электронных шахматных досок, в которых просверлено отверстие в центре каждого из 64 квадратов, с простым фотоприемником под каждым отверстием, которое дает только 1 бит - «ничего здесь» или «кусок какого-то покрытие детектора ". Это требует (а) некоторой памяти и кода, чтобы запомнить старую конфигурацию доски и отследить, какая фигура переместилась куда, и (б) что-то особенное для обработки пешечного продвижения. Это может определить, какие квадраты заняты и какие квадраты открыты в любое время, но не полное состояние доски.

davidcary
источник
1
Умный! Очень простое оборудование, подкрепленное логикой!
Клабаккио
Это работает до тех пор, пока за один раз перемещается только одна часть. Это не работает в случае, когда упоминается OP, когда несколько частей опрокинуты, а затем возвращены обратно. В противном случае это хорошее решение.
1

GlyphChess решает эту проблему с помощью прозрачной шахматной доски. Сканер внизу считывает уникальный штрих-код, прикрепленный к нижней части каждой части, чтобы выяснить, какая часть находится где. «Секретный код PARC» Slashdot: сыграйте в шахматы GNU на своем сканере. Это может перечитать полное состояние доски в любое время. Поскольку на шахматной доске меньше 18 уникальных фигур, возможно, было бы лучше использовать легко узнаваемые опознавательные знаки, такие как маркеры касания, а не штрих-коды высокого разрешения, способные различать миллионы объектов.

davidcary
источник
Просто любопытно. Поскольку доска прозрачна, как они показывают пользователю черные и белые квадраты? Может быть, с некоторой промежуточной прозрачностью? И пользователь не видит свет?
Телаклаво
@Telaclavo: я не знаю - возможно, почти прозрачные квадраты окрашены в традиционный зеленый и бафф? Если бы я строил это сегодня, я бы сделал внутреннюю часть коробки белой, а затем поставил камеру внизу и поставил стеклянную шахматную доску сверху. Если у людей достаточно света, чтобы увидеть кусочки, то более чем достаточно света, отражающегося от белого интерьера и подсвечивающего штрих-код в нижней части каждого предмета, чтобы камера могла его прочитать - света не требуется.
Дэвидкари
1

Я бы сделал это, сделав цветовой сенсор для каждого квадрата, и поместил бы различную цветную метку внизу части.

Датчик цвета должен быть выполнен с использованием трех светодиодов (возможно, красного, зеленого и синего) и фототранзистора, чувствительного ко всему видимому свету. Последовательно включите светодиоды и измерьте, как фототранзистор измеряет отражение от шахматной фигуры.

Вы можете сделать это в обратном порядке, когда у вас есть белый светодиод и три разных фототранзистора, чувствительных к разным цветам. Но это сложнее сделать. Большинство фототранзисторов не являются селективными по цвету. Вы можете использовать фильтры, но проще использовать светодиоды разных цветов.

Если светодиоды горят достаточно долго, вы не увидите их «слишком много». Кроме того, светодиоды могут быть использованы для других целей, таких как маркировка доски или проведение крутых маленьких световых шоу, когда игра выиграна.

В этом есть небольшая хитрость, которая упрощает подключение и сборку. Avago имеет некоторый рассеянный свет для микросхем I2C, который может облегчить процесс. У других компаний есть подобные вещи.

Следующий трюк - сделать достаточно разноцветных ярлыков, чтобы у вас был уникальный цвет для каждой части. Это просто потребует проб и ошибок, поскольку мы не знаем точного спектра различных пигментов чернил / тонера для принтера. Тем не менее, это не должно быть слишком сложно при условии, что вы можете получить разрешение 6 бит от датчика освещенности. (6 битов дадут вам достаточный запас шума.)


источник
1

не нужно определять цвет, только оттенки серого. Каждая часть имеет оттенок серого на дне, и простая пара ИК-излучатель / детектор, установленная на плате, считывает аналоговое значение.

Geoff
источник
0

Однажды компания под названием «Zowie» выпустила несколько игровых наборов, в том числе «Зачарованный сад Элли», которые подключались к компьютеру и могли определять положение нескольких жетонов на игровой поверхности. Каждый жетон состоял из конденсатора и катушки с проводом, а игровая поверхность имела сетку из проводов; Пропускание тока через горизонтальный провод на частоте, совпадающей с частотой LC сборки катушки с крышкой, приведет к появлению этой частоты на вертикальных проводах. Сетка проводов составляла около шести проводов / дюйм в обоих направлениях, и кажущееся разрешение позиционирования составляло, вероятно, около 0,05 дюйма, но к плате ЦП подключалось только около 16 проводов; я думаю, что провода были расположены по схеме, так что каждый токен будет реагировать на два или более горизонтальных провода и стимулировать по меньшей мере два вертикальных провода; отметив, какая комбинация проводов будет реагировать на раздражители, процессор сможет выяснить, где находится токен. Я не помню, что утверждал Zowie в их патенте или какой уровень техники он цитировал, но вполне возможно, что уровень техники включал бы уже общедоступный подход, который подойдет для ваших целей.

Supercat
источник