我正在开发一个 Android ADK 项目。我正在寻找一种方法来检测棋盘上棋子的位置(8x8)。我在看 NFC 之类的东西,但它看起来太贵了。有没有我应该考虑的不同技术。我需要一些东西,让世界能够随时阅读董事会的完整状态。例如,一些部件可能会被撞倒,一旦它们被设置好,我就需要这些位置。为了进一步解释这一点,在巡回国际象棋比赛中,如果棋子被移动到错误的位置并且没有玩家注意到游戏将继续进行。所以我需要记录比赛,即使根据比赛规则,位置是不可能的。
我只想指出要看什么技术的大致方向。
我正在开发一个 Android ADK 项目。我正在寻找一种方法来检测棋盘上棋子的位置(8x8)。我在看 NFC 之类的东西,但它看起来太贵了。有没有我应该考虑的不同技术。我需要一些东西,让世界能够随时阅读董事会的完整状态。例如,一些部件可能会被撞倒,一旦它们被设置好,我就需要这些位置。为了进一步解释这一点,在巡回国际象棋比赛中,如果棋子被移动到错误的位置并且没有玩家注意到游戏将继续进行。所以我需要记录比赛,即使根据比赛规则,位置是不可能的。
我只想指出要看什么技术的大致方向。
第一个想法:RFID。每件下面有一个标签(非常便宜)。每个标签都应该标识它是哪种类型的作品(在 {6 个白色}+{6 个黑色}=12 种不同类型中)。一个收发器电路和一个用于整个电路板的 1 到 64 多路复用器。此外,还有 64 根小天线,每根天线都位于每个电路板位置下方。收发器以非常低的射频功率运行(您应该通过实验找到最佳功率)。通过更改多路复用器连接,您可以扫描所有 64 个位置,并读取每个位置上存在的标签(如果有)的 ID。
我从未使用过它提到的 IC,但本文档可能会帮助您实现 RFID 多路复用器(这将是最具挑战性的部分,连同其精心的布局)。
第二个想法:通过其独特的磁导率来区分每种类型。对于每件作品,您将在其底部添加一定的质量。所有 32 件的额外质量将相同(以便用户对它们感到舒适)。每个额外的质量将是两个质量的总和:一个“磁性”质量,加上一个“补偿”(非磁性)质量。补偿质量的唯一目的是使所有类型的零件的总额外质量相等。您需要区分 12 种不同类型的作品。每种类型的块都必须具有具有独特磁导率的磁质量,\$\mu\$。您可能会选择具有高 \$\mu\$ 的材料,但是您可以选择很多材料,每种材料都有不同的 \$\mu\$(请参见此处的一张表)。
在每个电路板位置下方,您需要缠绕几圈电线(这样直径几乎是正方形的一侧)。您将有 64 个线圈。同样,使用 1 至 64 多路复用器,仅将其中一个连接到电感计。现在不同的是,多路复用器不需要处理射频。您可以将所有线圈的一个节点连接在一起,并使用 64 个模拟开关(非常便宜),如我所说,将一个线圈引导至电感计。电路必须在尽可能短的时间内确定在 64 个线圈中的每一个线圈上测得的自感是多少。它不需要太多的准确性。它只需要确定 L 的 13 个不同的可能值(小于 4 位!)。您可以尝试时域中的方法(例如,施加恒定电压,并测量电流的斜率),或在频域中(例如,尝试快速寻找谐振频率,添加一定的电容器)。要获得这 12 个不同的 L 值,您可以使用不同的磁导率和磁性材料的不同尺寸。
由于您必须在合理的时间内扫描 64 个位置(测量 64 个自感),我可能会选择时域方法。例如,如果您允许自己用 1 秒时间读取电路板的整个状态,那么每次电感测量的时间为 15.6 毫秒。具有挑战性,但可行。
如果速度最终真的成为瓶颈,你可以让你的系统快 8 倍,如果你包括 8 个模拟前端,而不是一个。每个前端将专用于板上的每一行。这样,您可以同时测量 8 个自感(每次测量时间为 125 ms,并且您仍然可以在 1 秒内获得整个电路板状态)。我敢肯定,即使只有一个 ADC(有 8 个通道),一个 MCU 就足够了。
这可能是(没有所有细节)每个前端的原理图(可能是整个电路板一个,或者每行一个,如上所述),以及一种快速估计自感 \$L_1\$ 到 \$ 的方法L_N\$(N 为 8 或 64)。线圈的公共节点将是顶部节点,为简单起见,未显示模拟开关的控制信号。TS 将是恒定的,并且在 TS 处采样的 VX 将用于计算自感。TG 会比 TS 稍微长一点。
第二个想法的好处:不涉及射频。但是,您需要构建自己的“标签”,具有不同的渗透率。
我见过很多电子棋盘,在 64 个方格的每一个的中心都钻了一个洞,每个洞下面都有一个简单的光电探测器,它只给出 1 位——“这里什么都没有”,或者“某种东西是覆盖探测器”。这需要 (a) 一些内存和代码来记住棋盘的旧配置,并跟踪哪个棋子移动到哪里,以及 (b) 一些特殊的东西来处理典当提升。这样可以随时检测哪些方格被占用,哪些方格开放,但不能检测出棋盘的全状态。
GlyphChess 通过使用透明棋盘解决了这个问题。下面的扫描仪读取贴在每件作品底部的唯一条形码,以确定哪一块位于何处。 “PARC 的密码” Slashdot:在您的扫描仪上玩 GNU Chess 这可以随时重新读取棋盘的完整状态。由于棋盘上只有不到 18 种独特的棋子,因此使用易于识别的 基准点(例如d-touch 标记)而不是能够区分数百万个对象的高分辨率条形码可能会更好。
我会通过为每个正方形制作一个颜色传感器来做到这一点,并在块的底部放置一个不同的颜色标签。
颜色传感器将由三个 LED(可能是红色、绿色和蓝色)和一个对所有可见光敏感的光电晶体管制成。依次打开 LED 并测量光电晶体管测量的棋子反射的内容。
你可以反过来做,你有一个白色 LED 和三个对不同颜色敏感的不同光电晶体管。但这更难做到。大多数光电晶体管都没有那种颜色选择性。您可以使用过滤器,但使用不同颜色的 LED 会更容易。
如果 LED 亮起的时间足够短,那么您不会看到它“太多”。此外,LED 还可用于其他用途,例如在游戏获胜时标记棋盘或做炫酷的小灯光秀。
这有一个技巧,它使所有东西都易于连接和构建。Avago 为 I2C 芯片提供了一些环境光,这可能会使其更容易。其他公司也有类似的情况。
下一个技巧是制作足够多不同颜色的标签,以便每件都有独特的颜色。这只需要一些试验和错误,因为我们不知道各种打印机墨水/墨粉颜料的确切光谱。即便如此,只要您可以从光传感器获得大约 6 位的分辨率,这应该不会太难。(6 位会给你足够的噪声容限。)