检测对象在网格上的位置


11

我正在开发一个Android ADK项目。我正在寻找一种方法来检测棋盘上棋子的位置(8x8)。我当时在看NFC之类的东西,但是看起来太贵了。我应该考虑其他技术吗?我需要让世界能够随时读取董事会完整状态的信息。例如,有些作品可能会被撞倒,一旦重新设置好,我就需要这些位置。为了进一步解释这一点,在旅游象棋游戏中,如果棋子被移动到错误的位置并且没有玩家注意到游戏将继续。因此,即使根据游戏规则无法定位,我也需要记录游戏。

我只是想指出要看什么技术的一般方向。


“在锦标赛国际象棋比赛中,如果棋子被移动到错误的位置,并且没有玩家注意到比赛将继续进行”。我很好奇。象棋规则是这样说的吗?(实际上,这是有道理的,因为-如果没有其他人在观看-如果没有人注意,他们将无法继续?)
Telaclavo 2012年

@Telaclavo我可以确认,这是我在锦标赛中发生的。在我的低水平比赛中没有明显的解决方案。
史蒂芬·柯林斯

Answers:


13

第一个想法:RFID。每个标签下面都有一个标签(非常便宜)。每个标签应标识其是哪种类型({6白色} + {6黑色} = 12种不同类型)。整个电路板上有一个收发器电路和一个1-to-64多路复用器。此外,还有64个小天线,每个天线位于每个板子位置的下方。收发器以非常低的RF功率工作(实验上,您应该找到最佳功率)。通过更改多路复用器连接,您可以扫描所有64个位置,并读取每个位置上存在的标签的ID(如果有)。

我从来没有使用过它所讨论的IC,但是该文档可能会帮助您实现RFID多路复用器(这将是最具挑战性的部分,加上精心的布局)。

第二个想法:通过其独特的磁导率来区分每种零件类型。对于每块,您将在其底部添加一定的质量。所有32个零件的额外质量都是相同的(以便用户对它们感到舒适)。每个额外的质量将是两个质量的总和:“磁性”质量,再加上“补偿”(非磁性)质量。补偿质量的唯一目的是使所有类型的零件的总附加质量相等。您需要区分12种不同类型的作品。每种类型的零件都必须具有具有唯一磁导率的磁质量。您可能会选择高的材料,但是您可以选择很多材料,每种材料都有不同的(请参阅一张表)μ μμμμ在这里)。

在每个电路板位置的下方,您都需要缠绕几匝电线(以使直径几乎是正方形的一面)。您将有64个线圈。同样,使用1-to-64多路复用器,仅将其中一个连接到电感表。现在的区别在于,多路复用器不需要处理RF。您可以将所有线圈的一个节点绑在一起,并使用64个模拟开关(非常便宜)将一个线圈引到电感表。该电路将必须在最短的时间内确定在64个线圈中的每个线圈上测得的自感是多少。它不需要太多的准确性。它只需要确定L的13个不同可能值(小于4位!)。您可以尝试时域中的方法(例如,施加恒定电压并测量电流的斜率),或在频域中(例如,尝试通过增加一定的电容器来快速寻找谐振频率)。要获得L的那12个不同值,您可以使用不同的磁导率和磁性材料的不同尺寸。

由于您必须在合理的时间内扫描64个位置(测量64个自感),因此我可能会选择时域方法。例如,如果您允许自己1秒钟读取板的整个状态,则每个电感测量的时间为15.6 ms。具有挑战性,但可行。

如果速度最终成为瓶颈,那么如果将8个模拟前端(而不是1个)包括在内,则可以使系统速度提高8倍。每个前端将专用于板中的每一行。这样,您可以同时测量8个自感(每次测量为125 ms,并且在1秒内仍将处于整个板状态)。我敢肯定,即使有一个ADC(具有8个通道),一个MCU也足够。

这可以是(没有全部细节)每个前端的示意图(如上所述,可以是整个电路板的示意图,也可以是每行的示意图),以及一种快速估计自感至(N为8或0)的方法。 64)。线圈的公共节点将是顶部节点,为简单起见,未显示模拟开关的控制信号。TS将是恒定的,并且在TS处采样的VX将用于计算自感。TG会比TS稍长。L NL1LN

想法2

第二个想法的好处:不涉及RF。但是,您需要构建自己的具有不同磁导率的“标签”。


谢谢。您的第一个想法似乎是要走的路。我喜欢您第二个想法的创造力。对于可以定制零件的商业产品可能会更好。但是,我只是为了好玩而已。
2012年

@theJosh即使回答了,您的问题中还有一句话仍然让我感到困惑。一个“例如,某些片段可能会被敲掉,一旦它们放回原位,我需要位置”对我来说就没有多大意义,因为如果这些片段被敲掉,那应该是您系统的内存应该告诉用户放置碎片的位置,而不是相反。我将这句话解释为:您希望系统能够在不依赖历史的情况下读取任意板的状态,因此我考虑了这一点而放弃了更简单的答案。
Telaclavo

@theJosh(续)。如果不是这种情况,大卫的解决方案将更简单。
特拉克拉沃

第一个想法的问题是,它要求RFID的射程很短。如果范围太大(超过一个正方形),则很难检测到工件的正确位置。并非没有(我希望),只是更加困难。

@DavidKessner对,这就是为什么我说他需要通过实验找到最佳的RF功率。天线到标签的距离比两个相邻正方形之间的距离短得多,因此应该可行。
Telaclavo 2012年

4

我见过许多电子棋盘,在64个正方形的每个中心都钻有一个孔,每个孔下面都有一个简单的光电探测器,它只有1位-“这里什么都没有”,或者“某种东西是覆盖探测器”。这需要(a)一些内存和代码来记住板子的旧配置,并跟踪哪一块移到了哪里,以及(b)一些特殊的东西来处理典当升级。这样可以随时检测到哪些正方形已被占用,哪些正方形已打开,但无法检测到板子的完整状态。


1
聪明!逻辑备份非常简单的硬件!
clabacchio

只要一次只移动一件,该方法就起作用。对于OP提到的几个零件被敲打然后放回原处的情况,它不起作用。否则,这是一个很好的解决方案。

1

GlyphChess通过使用透明棋盘解决了这一问题。下方的扫描仪读取粘贴在每块底部的唯一条形码,以找出哪一块位于何处。 Slashdot:“ PARC的密码” :在扫描仪上玩GNU国际象棋 这可以随时重新读取板的完整状态。由于棋盘上只有不到18种独特的棋子,因此最好使用易于识别的 基准(例如d-touch标记),而不是能够识别数百万个对象的高分辨率条形码。


只是好奇。由于板是透明的,它们如何向用户显示黑白方块?也许有一些中间透明度?而且,用户看不到灯吗?
特拉克拉沃

@Telaclavo:我不知道-也许近乎透明的正方形为传统的绿色和浅黄色着色了?如果我今天要建造这个,我会把盒子的内部变白,然后在底部放置一个摄像头,在上面放置玻璃棋盘。如果有足够的光线供人类观看,则有足够多的光从白色内部反射并照亮每块底部的条形码,以供相机读取,无需任何照明。
davidcary 2012年

1

为此,我需要为每个正方形制作一个颜色传感器,并在该块的底部放置一个不同的颜色标签。

颜色传感器将使用三个LED(可能是红色,绿色和蓝色)和一个对所有可见光敏感的光电晶体管制成。依次打开LED并测量光电晶体管在棋盘上反射回来的光。

您可以反向进行操作,这里有一个白色LED和三个对不同颜色敏感的不同光电晶体管。但这很难做到。大多数光电晶体管不是那种颜色选择的。您可以使用滤镜,但只使用不同颜色的LED会更容易。

如果LED指示灯亮起的时间足够短,那么您就不会看到它“太多”。此外,LED还可用于其他用途,例如在游戏获胜时在棋盘上做标记或进行酷炫的小灯光表演。

这有一个小窍门,这使得所有内容都易于连接和构建。Avago的I2C芯片具有一些环境光,可能会使其变得更容易。其他公司也有类似的事情。

下一个技巧是制作足够多的不同颜色的标签,以使每块标签具有唯一的颜色。这将需要一些试验和错误,因为我们不知道各种打印机墨水/墨粉颜料的确切光谱。即使这样,只要您可以从光传感器获得大约6位的分辨率,也就不难了。(6位将为您提供足够的噪声余量。)


1

无需检测颜色,只需检测灰色阴影即可。每一块的底部都有一个灰色阴影,板上装有一个简单的红外发射器/检测器对,可以读取模拟值。


0

一家名为“ Zowie”的公司曾经制作过一些剧本,包括“艾莉的魔法花园”,该剧本可以连接到计算机,并且可以感知游戏表面上一些代币的位置。每个令牌都由一个电容器和一圈线圈组成,游戏表面上有一排网格。将电流以与线圈帽组件的LC频率匹配的频率通过水平导线会导致该频率出现在垂直导线上。线栅在两个方向上大约都是6线/英寸,并且明显的定位分辨率大约是0.05英寸,但是只有大约16根线连接到CPU板;我想这些线的排列方式应使得每个标记对两根或多根水平导线起反应并刺激至少两根垂直导线;通过指出哪种导线组合会对刺激做出反应,CPU可以确定令牌的位置。我不记得Zowie在其专利中提出的主张或所引用的现有技术,但是现有技术完全有可能包括一种已经可以满足您目的的公有领域方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.