IoT 产品之路:如何构建智能家居原型
本文描述的练习演示了如何重新创建“产品开发路径”项目中的原型。
获取新的 Intel® 物联网开发者套件,这是一套完整的硬件和软件解决方案,使开发者能够利用 Intel® Galileo 和 Intel® Edison 主板构建令人兴奋的新解决方案。请访问 Intel® 物联网开发者专区。
物联网产品开发路径项目是系列项目的一部分,该系列项目展示了如何从最初的创意阶段到原型设计和完善,再到创建可行的产品,来开发商业物联网解决方案。它使用了 Intel® 物联网商业开发者套件,其原型构建在 Intel® NUC Kit DE3815TYKHE 小型 PC 和 Arduino* 101 主板上。
本文描述的练习演示了如何重新创建“产品开发路径”项目中的原型。它不需要特殊设备或深厚的专业知识。其目的是普遍指导物联网项目的原型开发阶段。要查看项目概述,请参阅 物联网产品开发路径:智能家居概述。
引言
通过本次练习,开发者将学习如何执行以下操作:
- 连接到 Intel® NUC Kit DE3815TYKHE。
- 使用 Intel® 物联网开发者套件中的 MRAA 和 UPM,与 Intel® NUC 的 I/O 和传感器存储库进行接口。Intel® 物联网开发者套件是一个完整的硬件和软件解决方案,可帮助开发者探索物联网并实现创新项目。
- 在 Intel® XDK IoT Edition 中运行代码示例。Intel® XDK IoT Edition 是一个用于创建与传感器和执行器交互的应用程序的 IDE,能够快速启动适用于 Intel® 物联网平台的软件开发。
- 使用 IBM Bluemix* 平台设置并连接到云服务。该平台为解决方案的各个部分提供了数据存储、云分析和通信中心。
- 访问 GitHub 获取最新的代码示例和文档。
功能说明
本项目模拟了智能家居的以下部分:
- 前门。当前门状态发生变化时(例如,打开、关闭、锁定或解锁),该状态将显示在管理应用程序中。
- 门铃。当模型上的门铃按钮被按下时,管理应用程序将显示通知。
- 车库门。用户可以从移动应用程序发送命令来升降车库门。移动应用程序还将显示门打开或关闭的进度,并指示门在关闭时是否被阻挡。
工作原理
此智能家居应用程序基于以下传感器数据运行:
- 车库门的开/关状态
- 车库门被阻挡/未被阻挡的状态
- 事件:门铃响,前门锁/解锁,前门开/关,车库门开/关,车库门被阻挡
所有数据流都通过云作为中介。例如,如果客户打开车库门,该命令将被传递到云,然后传递到车库门本身。这种方法使得状态信息可以在云中维护,以便从多个终端进行访问和分析。例如,可以远程检查车库门的状态,并且用户可以远程关闭无意中留开的车库门。
此演示设计为可以实现其他未包含在此演示中的功能(特别是在涉及云资源的情况下)。
设置 Intel® NUC Kit DE3815TYKHE
本节介绍在 Intel NUC 上安装 Intel® 物联网网关软件套件的说明。
注意:由于本地存储驱动器的容量有限,我们不建议设置恢复分区。您可以使用 USB 驱动器恢复到出厂映像。
如果您与网关位于同一网络中,现在可以从开发机远程使用网关。如果您想使用 Intel® 物联网网关开发者中心而不是命令行,请在浏览器中输入 IP 地址,然后完成首次设置。
注意:如果您在 Intel 网络中,则需要设置代理服务器。
- 如果您还没有 Intel® 物联网平台市场账户,请在 Intel® 物联网平台市场 创建一个账户。
- 订购 Intel® 物联网网关软件套件,然后按照您通过电子邮件收到的说明下载映像文件。
- 解压存档,然后将 .img 文件写入 4 GB USB 驱动器。
- 在 Microsoft Windows* 上,您可以使用 Win32 Disk Imager* 等工具:https://sourceforge.net/projects/ win32diskimager
- 在 Linux* 上,使用
sudo dd if=GatewayOS.img of=/dev/ sdX bs=4M; sync
,其中 sdX 是您的 USB 驱动器。
- 将 USB 驱动器从您的系统拔出,然后将其插入 Intel NUC,并连接显示器、键盘和电源线。
- 打开 Intel NUC,然后在启动时按 F2 进入 BIOS。
- 从 USB 驱动器启动
- 在高级菜单中,选择启动。
- 在启动配置下,选择操作系统选择中的 Linux。
- 在启动设备下,确保选中了 USB 复选框。
- 保存更改,然后重新启动系统。
- 按 F10 进入启动选择菜单,然后选择 USB 驱动器。
- 使用 root:root 登录系统。
- 在本地存储上安装 Wind River Linux
~# deploytool -d /dev/mmcblk0 --lvm 0 --reset-media –F
- 使用 poweroff 命令关闭网关,拔下 USB 驱动器,然后重新打开网关以从本地存储设备启动。
- 插入以太网电缆,然后使用 ifconfig eth0 命令查找分配给网关的 IP 地址(假设您已正确设置网络)。
- 使用 Intel IoT Gateway Developer Hub 将 MRAA 和 UPM 存储库更新到官方存储库 (https://01.org) 的最新版本。您也可以通过输入以下命令来实现相同的结果:
~# smart update
~# smart upgrade
~# smart install upm - 插入 Arduino 101 主板,然后重新启动 Intel® NUC。Firmata* 草图已刷入 Arduino 101,您现在可以开始使用 MRAA 和 UPM 了。
设置 Arduino 101 主板
Arduino 101 主板的设置说明可在 https://www.arduino.cc/en/Guide/Arduino101 获取。
连接其他组件
本节介绍从 Intel® NUC 到其余硬件组件的连接。原型物料清单总结在表 1 中,组件的组装则在图 1 中说明。
表 1. 智能家居原型组件
组件 (Component) | 详细说明 | |
---|---|---|
基本系统 |
Intel® NUC Kit DE3815TYKHE |
|
Arduino* 101 板 |
||
USB Type A 转 Type B 线缆 |
用于连接 Arduino 101 板到 NUC |
|
Grove* Starter Kit Plus IoT Edition 的组件 |
Base Shield V2 |
|
带驱动器的齿轮步进电机 |
http://www.seeedstudio.com/depot/Gear-Stepper-Motor-with-Driver-p-1685.html |
|
按钮模块 |
||
触摸传感器模块 |
http://www.seeedstudio.com/depot/Grove-Touch-Sensor-p-747.html |
|
光传感器模块 |
http://www.seeedstudio.com/depot/Grove-Light-Sensor-p-746.html |
|
旋转传感器模块 |
http://www.seeedstudio.com/depot/Grove-Rotary-Angle-Sensor-p-770.html |
|
红色 LED |
||
带 RGB 背光的 LCD 模块 |
http://www.seeedstudio.com/depot/Grove-LCD-RGB-Backlight-p-1643.html |
|
蜂鸣器模块 |
安装 Intel® XDK IoT Edition
Intel® XDK IoT Edition 支持用于物联网的 JavaScript* 和 Node.js 编程。
注意:如果您是 Windows 用户,我们建议您在主机上安装 Bonjour Print Services,它允许 Intel® XDK IoT Edition 自动检测网络上安装的物联网设备。安装 Bonjour 不是强制性的,但它可以使连接到主板更加容易。您仍然可以通过手动输入主板的 IP 地址和任何必要的登录信息来连接到您的主板。如果您使用的是公司主机,您的防火墙可能会阻止 Bonjour。
- 访问 IDE 下载页面 https://software.intel.com/en-us/ iot/software/ide,为您的主机系统下载 Intel® XDK IoT Edition 安装程序。确保在下拉列表中选择了您的 OS 平台,然后单击下载按钮。
- 通过执行以下操作之一来运行安装程序:
- 对于 Windows:右键单击您刚刚下载的安装程序,然后选择“以管理员身份运行”。如果显示确认消息,请单击“是”继续。
- 对于 Mac OS*:双击您刚刚下载的 .dmg 文件以提取安装程序。双击 .pkg 文件开始安装。
- 对于 Linux
- 打开终端。
- 导航到存储安装程序所在的文件夹。例如,如果安装程序存储在 Desktop 文件夹中,请输入 cd ~/Desktop/
- 要解压安装文件,请输入 tar zxvf installername
- 导航到包含已解压文件的文件夹。
- 要运行安装程序,请输入 ./install.sh
- 按照安装向导中的说明安装 Intel XDK IoT Edition。
- 安装 Bonjour* 打印服务(推荐;仅限 Windows 操作系统)
- 从 http:// support.apple.com/kb/DL999 下载 Bonjour。
- 单击下载。
- 右键单击 BonjourPSSetup.exe,然后选择“以管理员身份运行”。如果您看到确认消息,请单击“是”继续。
- 按照安装向导中的说明安装 Bonjour。
- 为了让 Intel XDK IoT Edition 检测到 Intel NUC,您需要先安装 xdk-daemon 包,该包可从官方软件包存储库 (https://01.org) 获取。如果您已经安装,请确保其已更新到版本 0.0.35 或更高版本。要执行这些任务,请使用以下命令:
~# smart update
~# smart install xdk-daemon - 安装或更新包后,重新启动 Intel NUC 以允许服务启动。现在您可以从 Intel XDK IoT Edition 将网关添加为手动连接,并开始在远程设备上运行您的项目。
IBM Bluemix 设置
本节介绍创建 Bluemix 应用程序、添加 MongoDB* 连接以及存储/检索数据。
创建带有 MongoLab 服务的 Bluemix 应用程序
- 登录到 Bluemix 控制台。访问 console.ng.bluemix.net 并选择 LOG IN。
- 登录后,您将进入 DASHBOARD 视图。
- 单击 CREATE APP。
- 选择 WEB。
- 选择 SDK for Node.js 选项,然后单击 CONTINUE。
- 为您的应用程序命名,然后单击 FINISH。
- IBM Cloud 创建您的应用程序后,单击 ADD A SERVICE OR API。
- 在 Data & Analytics 部分,选择 MongoLab。
- 单击 BI 确认服务创建。
- 服务创建后,将出现一个要求您重新部署应用程序的弹出窗口。单击 RESTAGE。
- 等待您的应用程序完成部署。完成后将显示一条消息,指示“Your app is running”。
使用 Cloud Foundry* 部署您的 IBM Bluemix 应用程序
登录到您的 Bluemix 账户以安装 cf 命令行界面。
限制: Cloud Foundry 命令行界面不受 Cygwin 支持。请在 Cygwin 命令行窗口以外的命令行窗口中使用 Cloud Foundry 命令行界面。
安装 cf 命令行界面后,请按照列出的步骤下载入门代码,并了解如何将应用程序推送到 IBM Bluemix 云。
连接并在 Intel® 物联网网关上运行应用程序
- 在 Intel® XDK IoT Edition 的 Develop 窗口中,单击 Serial Terminal。
- 在与 Port 标签关联的下拉菜单中选择您的主板。
- 单击 Connect 按钮建立连接。
- 用户名:root
- 密码:<您的唯一密码>
- 键入以下命令以查看主板的 IP 地址:ifconfig
- 选择 Add Manual Connection 选项。
- 输入 IP 地址。
- 输入密码。
- 连接建立后,单击向下箭头将项目下载到主板。
- 单击 Run 按钮。
此时应用程序应该已在主板上运行。
应用程序详情
IBM Bluemix 的云应用程序
这款适用于 Bluemix 的 Node.js 应用利用 MongoDB 进行数据存储,并提供 REST API 路由,用于插入和获取与传感器和使用条件相关的数据。它还利用 Web Sockets 进行客户端和移动应用程序的实时更新。
连接到 Arduino 101 的 Intel NUC 的原型应用程序
这款 Node.js 应用运行在您的 Intel® NUC(网关)上,并连接到 Arduino 101 以实现与传感器和外设的交互。它还将数据发送到 IBM Bluemix 云应用程序以存储传感器数据。Web Sockets 是允许客户端(Intel NUC 和 Arduino 101)与 IBM Bluemix 云应用程序通信的主要通信协议。在离线模式下,该应用程序利用 SQLite* 进行数据存储,并在连接重新建立时将数据发送到云。此外,该应用程序在离线时也与移动应用通信。
此应用程序允许用户通过触摸传感器和蜂鸣器模拟门铃,通过光传感器捕获物体存在,通过伺服电机模拟车库门的移动,以及通过旋转传感器模拟门打开或关闭的操作。
管理和移动应用程序
管理和移动应用程序嵌入在 Intel NUC 上运行的应用程序中并由其调用。与其为不同平台提供多个版本的富客户端应用程序(或承担跨平台富客户端开发的复杂性),团队决定使用 Intel® XDK IoT Edition 以 HTML5 和 JavaScript 实现这些应用程序。这种方法允许管理员和最终用户使用的多个硬件平台消费每个应用程序的单个版本。
- 管理应用程序近乎实时地显示正在交互的传感器,并通过 REST API 调用显示信息日志。它运行在 PC 或平板电脑上,可以详细查看智能家居的运行情况,包括事件、状态和日志,以及访问云数据和分析。
- 移动应用程序允许用户通过 Web Sockets 打开或关闭车库门。它运行在智能手机或其他移动设备上,使用户能够打开和关闭车库门,以及监控门打开、关闭或被阻挡的进度。
结论
本次练习展示了主流组织创建可行的物联网原型,这些原型集成了运行在 Intel® NUC(网关)上的软件,以及管理和移动应用程序以及云功能。
使用 Intel® 物联网商业开发者套件、Intel® NUC 和 Arduino 101 主板,项目团队可以以相对较低的成本且无需专业技能即可构建物联网项目的原型。Grove Starter Kit Plus IoT Edition 提供了传感器和其他组件,进一步简化了快速原型开发。
附加信息
本文描述的练习演示了如何重新创建“产品开发路径”项目中的原型。要查看项目概述,请参阅 物联网产品开发路径:智能家居。