跳转到主要内容

英特尔® EDISON 开发板和英特尔® 物联网开发套件上使用 CYLON.JS*

editor 提交于

<br>英特尔® Edison 开发板是一款令人惊叹的全新单板计算机。 英特尔 Edison 开发板配备了双核英特尔® 凌动™ 处理器、通用 I/O (GPIO) 和其他外部接口,能够充分满足物理计算需求。 正因为如此,我们在 Cylon.js (http://cylonjs.com)、面向机器人的 JavaScript* 框架和物联网 (IoT) 应用中新增了完整的英特尔开发板支持。</br>

本文将为初学者介绍基本的知识和信息,并帮助他们访问可用的功能。 我们将向大家展示如何借助 Cylon.js 使用英特尔® 物联网开发人员套件中的几乎所有设备。 请注意,我说的是几乎所有设备。 出于安全考虑,继电器不属于我们的设备使用范围内,因为集成交流电 (AC) 设备与英特尔® Edison 开发板比较复杂,需要另写文章对其进行论述。

<strong>连接所有组件后的英特尔® Edison 开发板图:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-761.jpg&quot; alt=""></center>

借助 Cylon.js,我们能够整合套件内的所有直流电设备,进而创建单个集成式解决方案:智能前门系统。 该智能前门系统将配备灯光、门铃、LCD 指示灯面板、声音和光传感器,甚至还配置自己的 API。 它将是一款完备的(即使经过了精简)物联网解决方案。

请注意,您需要使用外部 DC 电源,提供充足的电流将所有设备同时连接至英特尔 Edison 开发板。 所有电压为 7-15 伏、电流约为 1000 毫安(1.0 安)的电源均可正常使用。

<strong>第 1 部分 — 灯光</strong>

<strong>所用部件: Grove* - LED</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-762-b.gif&q…; alt=""></center>

我们首先开启灯光,由套件内的 LED 表示。 打开 LED 即为物联网 “Hello, World”,在这里您可以了解基本的入门信息。 我们将使用 LED 连接器。 您还需要选择其中一个任意颜色的 LED,将其插入小型 Grove 板。 请记住,LED 上较长的导线为“正极+”,需要连接至 Grove 板的“正极+”。

<strong>将 LED 插入 Grove LED 板:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-763-c.jpg&q…; alt=""></center>

所使用的代码如下: https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制/粘贴或将代码输入至英特尔® XDK IoT Edition 的 “main.js” 编辑器窗口,然后保存并上传至开发板。

运行代码,并观察 LED 闪烁。

<strong>第 2 部分 — 灯光开关</strong>

<strong>添加的部件: 按钮</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-764-d.gif&q…; alt=""></center>

现在我们添加按钮,以便用户自己打开和关闭 LED。 该代码展示了 Cylon.js 如何在物理环境下对用户操作进行响应。 JavaScript 中通常使用事件。 如果您曾经使用过 jQuery,您会看到 “mouseOver” 等通用事件术语。 Cylon.js 广泛利用能够响应硬件设备动作的事件。 在这种情况下,按钮驱动程序支持“按下 (push)和“释放 (release)”两种事件。 我们将 “release” 事件连接至 LED,如果有人按下然后释放按钮,该 LED 会开启/关闭。

<strong> 将按钮插入 Grove 按钮板:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-765-e.jpg&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制/粘贴或将代码输入至英特尔® XDK IoT Edition 的 “main.js” 编辑器窗口,以替换之前的代码,然后保存并上传至开发板。

运行代码,按下按钮,并更改 LED 状态。

<strong> 第 3 部分 — 显示器</strong>

<strong>添加的部件: LCD</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-766-f.gif&q…; alt=""></center>

现在将添加显示器,这样我们可以在向系统添加更多功能时,观察开发板的运行方式。 套件中的显示器为使用内置 RGB LED 的背光液晶显示器 (LCD)。 这样有助于我们更改文本显示和背景灯颜色。

该 LCD 为 I2C 设备,即“内部集成芯片”通信。 I2C 是应用于多种高级传感器和设备的标准接口。 我们需要将 LCD 插入 Grove 护罩上的其中一个 “i2c” 接头。

首先添加面向 LCD 的代码。 然后添加代码,以在首次运行 Cylon.js 代码时显示消息。 最后将代码添加至 button.on(“released”) 事件,以将显示器更新至当前显示状态。

<strong> 插入 LCD:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-767-g.jpg&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制并粘贴,或将英特尔® XDK IoT Edition 编辑器窗口中的代码输入至 “main.js”,以替换之前的代码,然后保存并上传至开发板。

运行代码,按下按钮,并更改 LED 显示的消息。

<strong>第 4 部分 - Web API</strong>

<strong>添加的部件:无</strong>

我们将添加 Cylon.js HTTP API,以便观察 web UI 并使用 REST 进行系统控制。 Cylon.js API 为模块化 API,通过多种不同的插件形式实施,因此您可以根据需求添加不同的方式来实现通信。 目前我们提供 “http”、“socketio” 和 “mqtt” API 插件,未来将添加更多插件。

HTTP API 插件(也包含 Robeaux (http://robeaux.io))是一款基于 React 的简单页面 web 应用。 该应用能够为您显示遥控装置的当前状态,并允许您更改它们的数据。

各种 Cylon.js API 插件均使用一致的方法了解您希望与之进行通信的遥控装置或设备。 这种“路径选择”通过规范(面向物理输入/输出的通用协议或简称 “cppp.io”)的形式记录下来。

例如,在当前的 “Doorbot” 项目中,LED 设备的路径为 “/api/robots/doorbot/devices/led”。 模式为 “/api/robots/<robot name>/devices/<device name>”,通过该模式,我们可以使用 Cylon.js API 支持其他软件控制设备或向遥控装置发送命令。

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制并粘贴,或将英特尔® XDK IoT Edition 编辑器窗口中的代码输入至 “main.js”,以替换之前的代码,然后保存并上传至开发板。

运行代码,并浏览找到开发板通过端口 3000(面向 Robeaux 的默认端口)分配的 IP 地址。

如下所示为 Robeaux 快照:

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-768-h.png&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

点击 “doorbot” 遥控装置。 您将看到显示的设备列表。 点击 “button” 设备。 您将看到显示的按钮详情。

在 “Device Events” 下方的字段中输入 “push” ,然后点击 “Listen” 按钮。 现在请按下实际按钮。 您将在 web 网页中看到由服务器端事件触发的事件。 这种方法有助于我们有效测试设备是否连接正确。

<strong> 第 5 部分 — 门铃</strong>

<strong>添加的部件: 触摸传感器,蜂鸣器</strong>

现在我们将添加一种方法帮助来访者使蜂鸣器(自己)发出声音。 从 Cylon.js 的角度来说,触摸传感器只是一种按钮。 因此,蜂鸣器的运行方式与 LED 类似,可以开启或关闭。

触摸触摸传感器将触发 touch.on(“released”) 事件。 我们将使蜂鸣器发出声音,并在 LCD 显示屏上显示消息。

<strong>Grove 触摸传感器板和蜂鸣器板图:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-769-i.jpg&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

插入触摸传感器和蜂鸣器。

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制并粘贴,或将英特尔® XDK IoT Edition 编辑器窗口中的代码输入至 “main.js”,以替换之前的代码,然后保存并上传至开发板。

运行代码,轻击触摸传感器,并收听蜂鸣器发出的声音。

<strong> 第 6 部分 - 前门开启系统</strong>

<strong>添加的部件: 旋转式电位计,伺服器</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-770-j.gif&q…; alt=""></center>

现在我们将添加功能,以移动使用旋转式电位计进行控制的伺服器。 这项功能适用于开锁或移动安全摄像头,为简单起见,我们只使用套件内的其他几个部件。

旋转式电位计(简称 “pot”)是一种可变电阻器。 根据打开方式的不同,其另一端发出的电压也或多或少 — 类似于音量旋钮。 事实上,大多数音量刻度盘都是旋转式电位计。

伺服器是一种特殊的电机,可在一定的运动范围(通常为 180 度)内来回移动。 伺服器通常用作无线电控制飞机或船舶的零件,用于控制方向舵的角度。 它们还可用于开锁,在一定的范围内移动摄像头等等。

<strong>Grove 伺服器与旋转式电位计图:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-771-k.jpg&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

插入伺服器与旋转式电位计。

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制并粘贴,或将英特尔® XDK IoT Edition 编辑器窗口中的代码输入至 “main.js”,以替换之前的代码,然后保存并上传至开发板。

运行代码、旋转刻度盘,并观察伺服器的移动。

<strong>第 7 部分 - 火灾报警器</strong>

<strong>添加的部件: 温度传感器</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-772-l.gif&q…; alt=""></center>

智能门禁系统关注的不仅仅是来访者。 我们还希望能够检测可能引发火灾的热量,并设置声音报警,以做出适当的响应。 如果门的另一边发生火灾,您一定不希望开启这扇门。

温度传感器将运用内置于 Cylon.js 的 UPM 通用库支持。 UPM 是一种英特尔® 通用库,能够支持多种不同的传感器。 Grove* - 温度传感器就是其中的一种。

<strong>Grove 温度传感器图:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-773-m.jpg&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

插入温度传感器。

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制并粘贴,或将英特尔® XDK IoT Edition 编辑器窗口中的代码输入至 “main.js”,以替换之前的代码,然后保存并上传至开发板。

运行代码,查看 LCD 显示的最新温度值。

<strong>第 8 部分 - 安全警报</strong>

<strong>添加的部件: 声音传感器</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-774-n.gif&q…; alt=""></center>

如果有人(物体)接近前门,智能门禁系统可通过声音传感器探测到声音,并打开灯光。 闯入者会被吓跑,而来访的客人则能够找到门铃。

套件内的声音传感器只是一台模拟输入设备。 与旋转刻度盘类似,它可提供从 0 至 1024 的输入范围。 在这种情况下,传感器检测到的音量与传感器针脚输出的电压相对应。

<strong>Grove 声音传感器图:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-775-o.jpg&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

插入声音传感器。

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制并粘贴,或将英特尔® XDK IoT Edition 编辑器窗口中的代码输入至 “main.js”,以替换之前的代码,然后保存并上传至开发板。

运行代码,制造噪音,观察 LED 的开启。

<strong>第 9 部分 - 安全警报(续)</strong>

<strong>添加的部件: 光传感器</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-776-p.gif&q…; alt=""></center>

与声音传感器的工作方式类似,如果夜间有人接近前门,我们能够检测到光,并打开我们自己的灯。 同样,闯入者会被吓跑,而来访的客人则能够找到门铃。

套件内的光传感器是另一种模拟输入设备,因此其代码与声音传感器的类似。

<strong>Grove 光传感器板图:</strong>

<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001205-777-q.jpg&q…; alt=""></center>

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

插入光传感器。

所使用的代码如下:

https://github.com/hybridgroup/Using-Cylon.js-With-The-Intel-Edison-and…

复制并粘贴,或将英特尔® XDK IoT Edition 编辑器窗口中的代码输入至 “main.js”,以替换之前的代码,然后保存并上传至开发板。

运行代码,让传感器接触到光,然后观察 LED 的开启。

<strong>结论</strong>

在本文中,我们向大家展示了如何将 Cylon.js 运用于英特尔® Edison 开发板,以及组装英特尔® 物联网开发人员套件内除继电器之外的所有部件。 此外,我们还创建了完整的缩小版智能前门系统。

英特尔® Edison 开发板是一款小外形,但功能十分强大的设备。本文中我们对该设备功能的介绍还只是冰山一角。借助 Cylon.js,我们能够轻松发掘该设备的功能来创建下一代智能硬件设备。 您将创建什么?

文章来源:<a href="https://software.intel.com/zh-cn/articles/using-cylonjs-with-the-intel-…