NFC新玩法:用NFC操控小车

【编者按】本文的作者是@大学生的Arduino。这次他手把手教大家使用NFC技术控制小车。比起无线控制,NFC技术操控小车的移动相对来说要麻烦一些,不过作者的目的是想以一个娱乐的方式来了解和学习NFC技术。

NFC 是当前最热门的技术之一,这次我用NFC技术和ShieldBot做了一个很有趣的Demo。ShieldBot是一个可移动的机器人平台,或者简单来说,是一辆小车!ShieldBot上有Arduino接口,可以插上一块Arduino,就可以轻松的对它进行控制。

另外,我找到了一些NFC卡片,每张卡片里面可以写入不同的数据。于是我想到,可以利用每张卡片定义一些动作,让ShieldBot来完成。如果这仅仅是一辆遥控车的话,确实没什么好玩的,我还设想了一些游戏的场景。

在一片空旷的地面上,设置一个起点和终点,开始的时候把车放到起点。另外,我们需要在起点和终点之间放置一些障碍物,比如一张凳子或者一双拖鞋,总之可以是任何东西。然后,我们的目标就是,利用手上的卡片,把ShieldBot通过障碍物,顺利到达终点。

如果你对这个demo感兴趣,可以跟着下面几个简单的步骤来完成。

Step 1:准备模块

首先,我们需要准备一些材料。所有材料都是现成的模块,你不需要焊接,你只需要把他们接起来。整个demo有两个部分组成:

控制台: 控制台用来读取卡片的信息,然后把命令通过红外发送给ShieldBot。

移动平台:其实就是ShieldBot,ShieldBot上有个红外接收器,接收来自控制台的命令。

另外,需要15张左右的NFC 卡片。

以下是产品清单:

l Seeeduino V3.0(或者Arduino) 两块
l NFC Shield
l Grove – Base Shield
l Energy Shield + 锂电池
l Grove – Infrared Emitter
l Grove – Buzzer
l Grove – Infrared Receive

Step2:搭建控制台以及ShieldBot

首先我们搭建控制台:

把Grove – Buzzer插到Base Shield的A0,Grove – Infrared Emitter插到D3,然后把Base Shield插入到Seeeduino。接着把Energy Shield以及NFC Shield依次插到Base Shield上。这样,控制台就搭好了。

ShieldBot上只要接一个Grove – Infrared Receive, 我们把它插到ShieldBot上的I2C接口。

Step3:卡片设计与数据写入

卡片分两种:控制卡和数字卡。这两种卡需要配合使用。具体的使用后面会做详细的描述。

我们需要把代码下载下来:https://github.com/loovee/NFC_ShieldBot_Demo ,这里面会有这个demo所有需要用到的代码。
打开Arduino IDE,点击File->Preferences,弹出一下界面:

把Sketchbook location的目录指向下载的代码的目录。点击OK完成操作。关闭Arduino IDE。重新打开Arduino IDE,点击File->Sketchbook->uart_write_card

把程序烧录到控制台的那个Seeeduino。接着打开串口工具,把GO AHEAD的卡片靠近NFC Shield的天线。

在串口工具输入1,按发送:

数据就写入GO AHEAD卡片中了。接着要写剩余的卡片。

疑问在于为什么要写入1呢?其实一张新的卡片里面是什么数据都没有的,所以我们要写入一些数据区分每张不同的卡片,至于卡片的内容,也是没有严格的限制的,只要我们在程序里面定义好就可以了,比如我把1定义成GO AHEAD,那么收到1的话,我执行GO AHEAD的动作就可以了。各种卡片你需要写入以下内容:

Step4. 烧录程序

有两部分代码需要烧录,控制台的程序以及ShieldBot的程序

我们先烧录控制台的程序:

打开Arduino IDE,File -> Sketchbook -> demo,接着点击Upload按钮完成。

同样,File -> Sketchbook -> ShieldBot,完成ShieldBot上的程序烧录。

Step5.玩

到这里,所有的硬件和软件都已经准备好了。控制方式也非常简单,只需要举一个简单的例子。如果我想让Shield Bot往前走40cm,那么我拿起NUM40的卡片,往控制台的NFC天线刷一下(可以听到蜂鸣器响一下),这时候它没有动作,接着我们再拿GO AHEAD刷一下,这时,ShieldBot往前走了大概40cm然后停下来了。如果想走50cm怎么办?可以用NUM10刷5次,或者用NUM10和NUM40各刷一次,在GO AHEAD。

实际操控如何呢?请看相关视频。

http://player.youku.com/embed/XNjA1NzA1NTA0

文章首发于ArduinoCN,雷锋网(搜索“雷锋网”公众号关注)已获得作者授权。

发表评论

电子邮件地址不会被公开。 必填项已用*标注