引言
这款访问控制系统应用是一系列英特尔® 物联网技术代码示例入门实践(使用
英特尔® 物联网开发人员套件、英特尔® Edison 开发板、云平台、API 和其他技术)的一部分。
从该实践中,开发人员可以学习到如何:
- 连接英特尔® Edison 开发板 — 一个旨在创建原型,生产物联网和可穿戴计算产品的计算平台。
- 使用英特尔® 物联网开发人员套件中的 MRAA 和 UPM 与英特尔® Edison 开发板 IO 和传感器库交互;该套件是一款完整的软硬件解决方案,可帮助开发人员探索物联网和实施创新项目。
- 在英特尔® System Studio IoT Edition(面向 C/C++ 和 Java* 开发的 Eclipse* IDE)中运行这些代码示例;该工具是一个 IDE,可创建与传感器和制动器交互的应用,支持立即开发面向英特尔® Edison 或英特尔® Galileo 开发板的软件。
- 使用 Microsoft 的 Azure Redis Cache、IBM Bluemix* 的 Redis Store 或使用 Amazon Web Services* (AWS) 的 Redis* 的 ElastiCache*,连接物联网解决方案(包括数据分析、机器学习和各种生产力工具)的不同云服务以简化将传感器连接到云,支持物联网项目快速正常运行的效率提高工具,设置 web 应用服务器支持用户进入访问码以禁用警报系统并保存该警报数据。
它是什么
使用英特尔® Edison 开发板,该项目向您展示如何创建支持以下功能的智能访问控制系统:
- 监控运动传感器,以便在用户位于需要授权的区域时能够检测到;
- 支持使用手机通过内置 Web 界面访问以禁用警报;
- 使用基于云的存储追踪访问码。
工作原理
该访问控制系统可提供以下用户流:
- PIR 运动传感器寻找运动。
- 用户启动运动检测器,将有 30 秒的时间从浏览器中输入正确的代码。
- 如果用户没有及时输入代码,那么将会发出警报。
- 如果用户输入正确的代码,那么系统将会留出 2 分钟的时间让用户通过。
此外,还记录了多种事件(motion-detected
、invalid-code
等)。
此外,它还可使用在 Microsoft Azure、IBM Bluemix 或 AWS 账户中运行的英特尔物联网示例数据存储 (Intel IoT Example Datastore) 保存所有数据。
硬件要求
Grove* 运输和安全套件包括:
- 带有 Arduino breakout 开发板的英特尔® Edison 开发板
- Grove * 基座护罩 V2
- Grove* PIR 运动传感器
- Grove* RGB LCD
软件要求
- 英特尔® System Studio IoT Edition(面向 C/C++ 和 Java 开发的 Eclipse IDE)
- 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,并点击右下方的 Download ZIP按钮。 下载 .zip 文件后,对其进行解压,然后使用目录中的文件(对本例而言)。
将程序添加至 Eclipse
在 Eclipse* 中选择 Import Wizard 以将现有项目导入至工作区,如下所示:
- 从主菜单中选择 File > Import。
- Import Wizard 对话框打开。 选择 General > Existing Project into Workspace 并单击 Next。
- 单击 Select root directory,然后单击相关的 Browse 按钮,以找到包含项目文件的目录。
- 在 Projects 下方选择目录和您希望导入的项目文件,单击 OK,然后单击 Finish 以将文件导入至 Eclipse*。
- 您的主 .cpp 程序将显示在 src 文件夹下方的工作区。
连接 Grove 传感器
您需要具有连接至兼容 Arduino 的 breakout 开发板的 Grove 基座护罩 V2,以便将所有 Grove 设备插入 Grove 基座护罩 V2。 确保 Grove* 基座护罩 V2 上的微型 VCC 开关设置为 5V。
- 将 Grove* 线缆的一端插入 Grove* PIR 运动传感器,并将其另一端连接至 Grove* 基座护罩 V2 的 D4 端口上。
- 将 Grove* 线缆的一端插入 Grove* RGB LCD,并将其另一端连接至 Grove* 基座护罩 V2 的任一 I2C 端口上。
英特尔® Edison 开发板设置
该示例使用 restclient-cpp库执行面向远程数据服务器的 REST 呼叫。 您可在 lib目录中获得该代码。 restclient-cpp库要求 libcurl软件包(默认已安装在英特尔® Edison 开发板上)。
该示例还使用 Crow* Web 微框架,以提供易于使用,但功能强大的 Web 服务器。 Crow 库要求 libboost软件包安装于英特尔® Edison 开发板,并将所需的包含和库文件添加至 Eclipse* Cross G++ Compiler 和 Cross G++ Linker。
更新 opkg base feed,以便安装所需的相关性。 建立 SSH 与英特尔® Edison 开发板之间的连接,并运行以下命令:
vi /etc/opkg/base-feeds.conf
编辑文件以包含以下内容:
src/gz all http://repo.opkg.net/edison/repo/all src/gz edison http://repo.opkg.net/edison/repo/edison src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
依次按下 Esc、:、q和 Enter,保存文件。
每个英特尔® Edison 开发板只需这样操作一次,如果已经操作过,可跳至下一步。
通过运行以下命令,将 boost库安装于英特尔® Edison 开发板:
opkg update opkg install boost-dev
复制库
您需要将库和包含文件从开发板复制到运行 Eclipse 的计算机,以便 Cross G++ Compiler 和 Cross G++ Linker 能够找到它们。 通过从计算机(而非英特尔® Edison 开发板)运行scp
命令,可轻松完成这一操作,如下所示:
scp -r USERNAME@xxx.xxx.x.xxx:/usr/include/boost ~/Downloads/iotdk-ide-linux/devkit-x86/sysroots/i586-poky-linux/usr/include
scp USERNAME@xxx.xxx.x.xxx:/usr/lib/libboost* ~/Downloads/iotdk-ide-linux/devkit-x86/sysroots/i586-poky-linux/usr/lib
更改 USERNAME@xxx.xxx.x.xxx
以匹配您为开发板设置的用户名和 IP 地址。
更改 ~/Downloads/iotdk-ide-linux
以匹配计算机安装英特尔 ® 物联网开发人员套件的位置。
在 Windows* 上复制库
我们提供一个实用的链接,以完成这一设置:
注:您需要通过在开发板上运行 configure_edison --password
命令,以打开 SSH。 设置密码后,确保将其写下。 您只需操作一次,它在重启英特尔® Edison 开发板时设置。
数据存储服务器设置
您还可选择将该示例程序生成的数据存储在使用 Microsoft* Azure*、IBM* Bluemix*、AWS*、Node.js* 和 Redis* 数据存储部署的后端数据库中。
连接英特尔® Edison 开发板和 Eclipse
- 在左下角右击 Target SSH Connections选项卡的位置,并选择 New > Connection。
- 显示 Intel® IoT Target Connection窗口。 在 Filter字段中,输入开发板的名称。
- 在 Select one of the found connections列表中选择设备名称并单击 OK。
- 在 Target SSH Connections选项卡中,右击设备并选择 Connect。
如果收到有关用户名和密码的提示,用户名为 root,密码为您在配置英特尔® Edison 开发板时指定的密码。
使用云服务器运行该示例
如欲通过可选后端数据库运行该示例,需要设置 SERVER
和 AUTH_TOKEN
环境变量。 该操作可在 Eclipse* 中执行,以下所示:
- 在 Run菜单中选择 Run Configurations。
显示 Run Configurations对话框。 - 在 C/C++ Remote Application下方单击 doorbell。
这样可以显示有关应用的信息。 在“应用前要执行的命令”字段中,使用适用于您的设置的服务器和验证口令添加环境变量,如以下示例所示:
chmod 755 /tmp/access-control; export SERVER="http://intel-examples.azurewebsites.net/logger/access-control"; export AUTH_TOKEN="YOURTOKEN"
单击 Apply以保存新的环境变量。
现在,如果使用 Run按钮运行应用,应该能够调用您的服务器以保存
英特尔® Edison 开发板的数据。
在英特尔® Edison 开发板上运行代码
准备运行该示例时,在 Eclipse 中单击顶部菜单栏中的 Run。
这样将使用 Cross G++ Compiler 编译程序,使用 Cross G++ Linker 进行链接、将二进制代码传输至英特尔® Edison 开发板,然后在开发板上执行代码。
运行程序后,您将看到类似于下图中的输出。
生成 HTML 和 CSS
如果要对 index.html或 styles.css文件进行更改,需要生成以通过内置 Crow* Web 服务器提供资产的 .hex 文件。 了解关于如何使用 shell 脚本的更多信息。
禁用警报
您可在示例程序运行时,直接使用英特尔® Edison 开发板提供的单页 Web 界面禁用警报。
该 Web 服务器运行在端口 3000
上,因此,如果英特尔® Edison 开发板连接至 192.168.1.13
上的Wi-Fi*,您在同一网络上时浏览的地址是 http://192.168.1.13:3000
。
关于完整的“18 种英特尔物联网技术代码示例入门在 C++ 中的使用”,请阅读英特尔® 开发人员专区上发布的博客“18 种英特尔物联网技术代码示例入门现可在 C++ 中使用”。
关于完整的“18 种英特尔物联网技术代码示例入门在 JavaScript* 中的使用”,请阅读英特尔® 开发人员专区上发布的博客“18 种全新英特尔物联网技术代码示例入门现已发布”。
有关该代码示例的更多详情,请访问 GitHub*。