JavaScript 中的循迹机器人
此循线机器人应用程序是使用 Intel® IoT Developer Kit、Intel® Edison 板、Intel® IoT Gateway、云平台、API 和其他技术进行物联网(IoT)代码示例练习系列的一部分。
获取新的 Intel® IoT Developer Kit,这是一个完整的软硬件解决方案,可让开发人员使用 Intel® Galileo 和 Intel® Edison 板创建激动人心的新解决方案。请访问 Intel® Developer Zone for IoT。
引言
此循线机器人应用程序是使用 Intel® IoT Developer Kit、Intel® Edison 板、Intel® IoT Gateway、云平台、API 和其他技术进行物联网(IoT)代码示例练习系列的一部分。
通过此练习,开发人员将学习如何:
- 连接 Intel® Edison 板或 Intel® IoT 网关,这些计算平台专为原型设计和生产物联网和可穿戴计算产品而设计。
- 使用 Intel® IoT Developer Kit 中的 MRAA 和 UPM,与 Intel® Edison 板或 Arduino 101*(美国以外品牌为 Genuino 101*)板的 IO 和传感器存储库进行接口,这是一个帮助开发人员探索物联网和实施创新项目的完整软硬件解决方案。
- 在 Intel® XDK IoT Edition 中运行此代码示例,这是一个用于创建与传感器和执行器交互的应用程序的 IDE,可以快速开始为 Intel® Edison 板或 Intel® IoT Gateway 开发软件。
- 使用 Microsoft Azure* 中的 Azure Redis Cache*、IBM Bluemix* 中的 Redis Store* 或 Amazon Web Services (AWS)* 中的 Redis* Elasticache* 存储循线检测数据,这些是用于连接物联网解决方案的不同云服务,包括数据分析、机器学习以及各种提高生产力的工具,可简化将传感器连接到云端并快速启动您的物联网项目的过程。
- 连接到使用 Microsoft Azure* 的 IoT Hub、IBM Bluemix* 的 IoT、Amazon Web Services (AWS)* 的 IoT、AT&T M2X*、GE 的 Predix* 或 SAP Cloud Platform* IoT 的服务器,这些是用于机器对机器通信的不同基于云的物联网平台。
它是什么
使用 Intel® Edison 板或 Intel® IoT Gateway,该项目可让您创建一个循线机器人,该机器人
- 持续检查循线传感器。
- 如果在直线上,则向前移动,使用步进电机。
- 如果不在直线上,则尝试旋转以找到直线,使用步进电机。
- 使用基于云的数据存储记录来自循线传感器的事件。
工作原理
循线机器人使用两个连接的电机尝试沿线行驶,并用循线传感器跟踪它。如果在直线上,它就会向前移动。否则,它会原地旋转,尝试使用循线传感器找到它。
可选地,数据可以使用您自己的 Microsoft Azure*、IBM Bluemix*、AT&T M2X*、AWS*、Predix* 或 SAP* 帐户存储。
硬件要求
Grove* Robotics Kit 包含
- Intel® Edison 板(带 Arduino* 扩展板)或 Intel® IoT Gateway(带 Arduino 101*(美国以外品牌为 Genuino 101*)板)
- Grove 循线传感器
- 步进电机控制器和步进电机(x2)
软件要求
- 英特尔® XDK 物联网版
- Microsoft Azure*、IBM Bluemix*、AT&T M2X*、AWS*、Predix* 或 SAP* 帐户(可选)
如何设置
首先,使用 Git* 在您的计算机上克隆 How-To Code Samples 存储库,如下所示
$ git clone https://github.com/Intel®-iot-devkit/how-to-code-samples.git
想要下载 .zip 文件?在您的网络浏览器中,访问 https://github.com/Intel®-iot-devkit/how-to-code-samples,然后点击右下角的 Download ZIP 按钮。下载 .zip 文件后,解压缩它,然后使用此示例目录中的文件。
将程序添加到 Intel® XDK IoT Edition
在 Intel® XDK IoT Edition 中,选择 导入您的 Node.js 项目
在 New Project 屏幕上,点击文件夹图标
导航到示例项目所在目录并选择它
为项目选择一个名称,然后点击 Create 按钮。然后点击 Continue 按钮完成项目的创建
您需要从计算机连接到您的 Intel® Edison 板才能将其代码发送到板上。
单击左下角的 IoT 设备 菜单。如果您的 Intel® Edison 板被自动识别,请选择它。
否则,请选择 手动添加连接。在 地址 字段中,键入 192.168.2.15
。在 端口 字段中,键入 58888
。单击 连接 以保存您的连接。
在 Intel® Edison 板上手动安装程序
或者,您可以手动设置 Intel® Edison 板上的代码。
在建立与 Intel® Edison 板的 SSH 连接后,克隆 How-To Code Samples 存储库到您的 Intel® Edison 板,如下所示
$ git clone https://github.com/Intel®-iot-devkit/how-to-code-samples.git
然后,导航到包含此示例的目录。
要在 Intel® Edison 板上安装 Git*(如果您还没有的话),请建立与该板的 SSH 连接并运行以下命令
$ opkg install git
连接 Grove* 传感器
您需要将 Grove* Shield 连接到 Arduino* 兼容的扩展板,以便将所有 Grove 设备插入 Grove Shield。确保 Grove Shield 上的微小 VCC 开关设置为 5V。
您需要为 Intel® Edison 板供电,使用您的入门套件随附的外部电源适配器,或将其替换为外部 12V 1.5A 电源。您也可以使用外部电池,例如 5V USB 电池。
此外,您还需要一个面包板和一个额外的 5V 电源来为两个电机供电。注意:您需要一个独立的电池或电源来为电机供电。您不能为 Intel® Edison 板和电机使用相同的电源,因此总共需要 2 个电池或 2 个电源。
-
将每个步进电机控制器插入 Arduino* 扩展板的四个引脚,以便能够控制它。将步进电机控制器 #1 连接到引脚 4、5、6 和 7。将步进电机控制器 #2 连接到引脚 9、10、11 和 12。将两个控制器连接到地(GND)、来自 Arduino* 扩展板的 5V 电源(VCC)以及用于电机的独立 5V 电源(VM)。
-
将 Grove* 电缆的一端插入 Grove* 循线传感器,另一端连接到 Grove* Shield 上的 D2 端口。
手动设置 Intel® Edison 板
如果您手动在 Intel® Edison 板上运行此代码,则需要安装一些依赖项。
要获取此示例在 Intel® Edison 板上执行所需的 Node.js* 模块,请运行以下命令
npm install
Intel® IoT 网关设置
您可以使用连接到 Arduino 101*(美国以外品牌为 Genuino 101*)板的 Intel® IoT Gateway 来运行此示例。
请确保您的 Intel® IoT 网关已使用 Intel® IoT 网关软件套件设置,请按照此处网站上的说明操作
https://software.intel.com/en-us/getting-started-with-intel-iot-gateways-and-iotdk
您必须按照上述链接中“Connecting to the Intel® XDK”部分中的说明,在 Intel® IoT Gateway 上安装 Intel® XDK。
Arduino 101*(美国以外品牌为 Genuino 101*)板需要安装 Firmata* 固件。如果您在网关上安装了 IMRAA,这将自动完成。否则,请手动将 StandardFirmata 或 ConfigurableFirmata 草图安装到您的 Arduino 101*(美国以外品牌为 Genuino 101*)板上。
您还需要在示例中配置 config.json
以使用 Arduino 101*(美国以外品牌为 Genuino 101*)板。请参阅下面的“配置示例”部分。
物联网云设置
您可以选择性地使用 Microsoft Azure*、IBM Bluemix*、AT&T M2X*、AWS*、Predix* 或 SAP* 的基于云的物联网平台存储此示例程序生成的数据。
有关如何连接到您自己的云服务器的信息,请访问
https://github.com/intel-iot-devkit/iot-samples-cloud-setup
MQTT 服务器设置
您还可以选择使用 MQTT(一种机器对机器的消息传递服务器)存储此示例程序生成的数据。您可以使用 MQTT 连接到 Microsoft Azure*、IBM Bluemix*、AT&T M2X* 或 AWS*。
有关如何连接到您自己的云 MQTT 消息服务器的信息,请访问
https://github.com/Intel®-iot-devkit/Intel®-iot-examples-mqtt
配置示例
要为 Intel® Edison 板配置示例,只需将 config.json 中的 platform
键保留为 edison
。要为 Intel® IoT Gateway 配置示例,请将 config.json 中的 platform
键更改为 firmata
,如下所示
{ "platform": "firmata", "CLOCKWISE": 1, "WHITE_LINES": 0 }
要为可选的 Microsoft Azure*、IBM Bluemix* 或 AWS* 数据存储配置示例,请将 SERVER
和 AUTH_TOKEN
键添加到 config.json 文件,如下所示
{ "platform": "edison", "CLOCKWISE": 1, "WHITE_LINES": 0, "SERVER": "http://Intel®-examples.azurewebsites.net/logger/line-follower", "AUTH_TOKEN": "s3cr3t" }
有关如何为可选的 Microsoft Azure*、IBM Bluemix*、AT&T M2X*、AWS*、Predix* 或 SAP* 物联网云服务器配置示例的信息,请访问
https://github.com/intel-iot-devkit/iot-samples-cloud-setup
使用 Intel® XDK IoT Edition 运行程序
当您准备好运行示例时,请确保已保存所有文件。
单击 上传 图标将文件上传到 Intel® Edison 板。
单击 Intel® XDK IoT Edition 底部的 运行 图标。这将会在 Intel® Edison 板上运行代码。
如果您对代码进行了更改,请单击 上传并运行。这将在 Intel® Edison 板上运行您所做的最新更改。
程序运行时,您将看到与上面类似的输出。
手动运行程序
要在 Intel® Edison 板上手动运行示例,请建立与该板的 SSH 连接并执行以下命令
node index.js
确定 Intel® Edison 板的 IP 地址
您可以通过运行以下命令来确定 Intel® Edison 板连接到的 IP 地址
ip addr show | grep wlan
您将看到类似以下的输出
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 inet 192.168.1.13/24 brd 192.168.1.255 scope global wlan0
IP 地址显示在 inet
旁边。在上例中,IP 地址为 192.168.1.13
。
重要提示:此软件是示例软件。它并非设计或意图用于任何医疗、生命支持或生命维持系统、交通系统、核系统或任何其他关键任务应用程序,在这些应用程序中系统的故障可能导致重伤或死亡。该软件可能未经充分测试,可能包含错误或缺陷;它可能并非旨在或适合商业发布。该软件尚未获得任何监管批准,因此可能未在某些国家或环境中获得认证。