65.9K
CodeProject 正在变化。 阅读更多。
Home

Intel® IoT 技术代码示例操作:C++ 中的循迹机器人

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2016 年 6 月 20 日

CPOL

7分钟阅读

viewsIcon

10465

这款循迹机器人应用程序是英特尔® 物联网技术代码示例练习系列的一部分,该系列使用了英特尔® 物联网开发者套件、英特尔® Edison 板、云平台、API 及其他技术。

获取新的英特尔® 物联网开发者套件,这是一个完整的硬件和软件解决方案,使开发人员能够使用英特尔® Galileo 和英特尔® Edison 板创建令人兴奋的新解决方案。请访问 英特尔® 物联网开发者中心

这款循迹机器人应用程序是英特尔® 物联网技术代码示例练习系列的一部分,该系列使用了英特尔® 物联网开发者套件、英特尔® Edison 板、云平台、API 及其他技术。

通过此练习,开发人员将学习如何:

  • 连接英特尔® Edison 开发板,这是一个专为物联网和可穿戴计算产品原型设计和生产而设计的计算平台。
  • 使用英特尔® 物联网开发者套件中的 MRAA 和 UPM,与英特尔® Edison 板 IO 和传感器库进行交互。这是一个完整的硬件和软件解决方案,可帮助开发人员探索物联网并实施创新项目。
  • 在英特尔® 系统工作室物联网版(Eclipse* IDE,用于 C/C++ 和 Java* 开发)中运行这些代码示例,以创建与传感器和执行器交互的应用程序,从而快速开始为英特尔® Edison 或英特尔® Galileo 板开发软件。
  • 设置一个 Web 应用程序服务器,使用 Microsoft* Azure* 的 Azure Redis Cache*、IBM* Bluemix* 的 Redis Store* 或 Amazon Web Services* 的 Redis* ElastiCache* 来存储循迹检测数据。这些不同的云服务可用于连接物联网解决方案,包括数据分析、机器学习以及各种生产力工具,从而简化将传感器连接到云并快速启动物联网项目的过程。

它是什么

使用英特尔® Edison 板,该项目可让您创建一个循迹机器人,该机器人

  • 持续检查循迹传感器;
  • 如果在线上,则向前移动,使用步进电机;
  • 如果不在线上,则尝试旋转以寻找线条,使用步进电机;
  • 记录来自循迹传感器的事件,使用云端数据存储。

工作原理

循迹机器人使用两个连接的电机尝试跟随一条线,同时用循迹传感器对其进行跟踪。如果在线上,它会向前移动。否则,它会在原地旋转,尝试使用循迹传感器找到该线。

可选地,它还可以使用运行在您自己的 Microsoft* Azure*、IBM* Bluemix* 或 AWS* 帐户中的英特尔物联网示例数据存储来存储系统事件。

硬件要求

Grove* Robotics Kit 包含

  1. 带有 Arduino* 扩展板的英特尔® Edison 开发板
  2. Grove* 基座扩展板 V2
  3. Grove* 循迹传感器
  4. 步进电机控制器和步进电机 (x2)

软件要求

  1. 英特尔® System Studio 物联网版(用于 C/C++ 和 Java* 开发的 Eclipse* IDE)
  2. Microsoft* Azure*、IBM* Bluemix* 或 AWS* 帐户

如何设置

首先,使用 Git* 在您的计算机上克隆如何使用英特尔® 物联网技术代码示例存储库,如下所示:

$ git clone https://github.com/intel-iot-devkit/how-to-code-samples.git

想要下载 .zip 文件?在您的 Web 浏览器中,转到 https://github.com/intel-iot-devkit/how-to-code-samples,然后单击右下角的下载 ZIP 按钮。下载 .zip 文件后,将其解压缩,然后在该示例的目录中使用这些文件。

将程序添加到 Eclipse*

在 Eclipse* 中,选择导入向导,将现有项目导入工作区,如下所示:

  1. 从主菜单中,选择文件 > 导入
  2. 导入向导对话框打开。选择通用 > 现有项目到工作区,然后点击下一步
  3. 点击选择根目录,然后点击相关的浏览按钮,找到包含项目文件的目录。
  4. 项目下,选择包含您要导入的项目文件的目录,然后点击确定,再点击完成,将文件导入 Eclipse*。
  5. 您的主 .cpp 程序现在显示在工作区的src文件夹下。

连接 Grove* 传感器

您需要将 Grove* Base Shield V2 连接到 Arduino* 兼容的扩展板,以便将所有 Grove* 设备插入 Grove* Base Shield V2。确保将 Grove* Base Shield V2 上的微型 VCC 开关设置为 5V

您需要为英特尔® Edison 板供电,使用入门套件附带的外部电源适配器,或者替换为外部12V 1.5A 电源。您还可以使用外部电池,例如5V USB 电池。

此外,您还需要一个面包板和一个额外的5V 电源来为两个电机供电。注意:您需要一个独立的电池或电源为电机供电。您不能将同一个电源同时用于英特尔® Edison 板和电机,因此总共需要 2 个电池或 2 个电源。

  1. 将每个步进电机控制器插入 Arduino* 分线板的 4 个引脚,以便能够进行控制。将步进电机控制器 #1 连接到引脚 4、5、6 和 7,将步进电机控制器 #2 连接到引脚 9、10、11 和 12。将两个控制器都连接到接地(GND)、来自 Arduino* 分线板的5V 电源(VCC)以及用于电机的单独的5V 电源(VM)。
  2. 将 Grove* 循迹传感器的一端插入 Grove* 循迹传感器,另一端连接到 Grove* Base Shield V2 的 D2 端口。

英特尔® Edison 开发板设置

此示例使用restclient-cpp 库执行 REST 调用到远程数据服务器。代码可在lib 目录中找到。restclient-cpp 库需要libcurl 包,该包已默认安装在英特尔® Edison 板上。

数据存储服务器设置

或者,您可以将此示例程序生成的数据存储在后端数据库中,该数据库使用 Microsoft* Azure*、IBM* Bluemix* 或 AWS*,以及 Node.js* 和 Redis* 数据存储进行部署。

有关如何设置自己的云数据服务器的信息,请访问:

https://github.com/intel-iot-devkit/intel-iot-examples-datastore

将英特尔® Edison 开发板连接到 Eclipse*

  1. 在左下角,右键点击目标 SSH 连接选项卡上的任意位置,然后选择新建 > 连接
  2. 出现英特尔® 物联网目标连接窗口。在过滤器字段中,输入您的开发板名称。
  3. 选择一个找到的连接列表中,选择您的设备名称,然后点击确定
  4. 目标 SSH 连接选项卡上,右键点击您的设备,然后选择连接

如果提示输入用户名和密码,则用户名为 root,密码是您在配置英特尔® Edison 开发板时指定的密码。

使用云服务器运行示例

要使用可选的后端数据存储运行示例,您需要设置 SERVERAUTH_TOKEN 环境变量。您可以在 Eclipse* 中完成此操作,如下所示:

  1. 运行菜单中,选择运行配置
    显示运行配置对话框。
  2. C/C++ 远程应用程序下,点击门铃
    这会显示应用程序的信息。
  3. 应用程序执行前要执行的命令字段中,添加环境变量,使其看起来像这样,除了使用与您自己的设置对应的服务器和身份验证令牌:

    chmod 755 /tmp/line-follower; export SERVER="http://intel-examples.azurewebsites.net/logger/line-follower"; export AUTH_TOKEN="YOURTOKEN"
    
  4. 点击应用保存您的新环境变量。

现在,当您使用运行按钮运行程序时,它应该能够调用您的服务器,直接从英特尔® Edison 开发板保存数据。

在英特尔® Edison 开发板上运行代码

当您准备运行示例时,点击 Eclipse* 顶部菜单栏中的运行

这将使用 Cross G++ Compiler 编译程序,使用 Cross G++ Linker 链接程序,将二进制文件传输到英特尔® Edison 开发板,然后在开发板本身上执行它。

运行程序后,您应该会看到与下图类似的输出。

有关 C++ 中 18 个英特尔® 物联网技术代码示例的完整列表,请访问此英特尔® 开发者中心博客文章 18 个英特尔® 物联网技术代码示例现已提供 C++ 版本

有关 JavaScript* 中 18 个英特尔® 物联网技术代码示例的完整列表,请访问此英特尔® 开发者中心博客文章 宣布推出 18 个新的英特尔® 物联网技术代码示例

有关此代码示例的更多详细信息,请访问GitHub*

© . All rights reserved.