英特尔物联网技术代码示例入门:用 C++ 编写的火警


简介

这款智能火警应用是一系列英特尔® 物联网技术代码示例入门实践(使用英特尔® 物联网开发人员套件、英特尔® Edison 开发板、云平台、API 和其他技术)的一部分。

从该实践中,开发人员可以学习到如何:

  • 连接英特尔® Edison 开发板 — 一个旨在创建原型,生产物联网和可穿戴计算产品的计算平台。
  • 使用英特尔® 物联网开发人员套件中的 MRAA 和 UPM 与英特尔® Edison 开发板 IO 和传感器库交互;该套件是一款完整的软硬件解决方案,可帮助开发人员探索物联网和实施创新项目。
  • 在英特尔® System Studio IoT Edition(面向 C/C++ 和 Java* 开发的 Eclipse* IDE)中运行这些代码示例;该工具是一个 IDE,可创建与传感器和制动器交互的应用,支持立即开发面向英特尔® Edison 或英特尔® Galileo 开发板的软件。
  • 使用 Microsoft* Azure* 的 Azure Redis Cache*、IBM* Bluemix* 的 Redis Store* 或使用 Amazon* Web Services* 的 Redis* 的 ElastiCache*,连接物联网解决方案(包括数据分析、机器学习和各种生产力工具)的不同云服务以简化将传感器连接到云,支持物联网项目快速正常运行的效率提高工具,设置 Web 应用服务器以保存火警数据。
  • 调用 Twilio* API 服务以发送文本讯息。

  • 它是什么

    使用英特尔® Edison 开发板,该项目支持您创建具备下列功能的智能火警:

  • 持续监控存在危险的温度水平;
  • 使用蜂鸣器发送声响告警;
  • 使用 LCD 发送可视告警;
  • 使用基于云的存储跟踪火警数据;
  • 向他人发送有关火警的文本信息。

  • 工作原理

    该智能火警使用 Grove* 温度传感器监控外界温度。

    如果温度高于阀值(比如设为 28 摄氏度),将通过蜂鸣器发出警报并在 LCD 上显示告警。

    此外,它还通过 Twilio* 向特定号码发送 SMS,向他们警报火灾危险。

    此外,它还可使用在 Microsoft* Azure*、IBM* Bluemix* 或 AWS*账户中运行的英特尔物联网示例数据存储 (Intel IoT Examples Datastore) 记录火灾事件。

    硬件要求

    Grove* Starter Kit,包括

  • 1、带有 Arduino breakout 开发板的英特尔® Edison 开发板
  • 2、Grove * 基座护罩 V2
  • 3、Grove* 温度传感器
  • 4、Grove* 蜂鸣器
  • 5、Grove* RGB LCD

  • 软件要求

  • 1、英特尔® System Studio IoT Edition(面向 C/C++ 和 Java* 开发的 Eclipse* IDE)
  • 2、Microsoft* Azure*、IBM* Bluemix* 或 AWS* 账户
  • 3、Twilio* 账户

  • 如何设置

    首先,使用电脑上的 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 以将现有项目导入至工作区,如下所示:

    1、从主菜单中选择 File > Import。


    2、Import Wizard 对话框打开。 选择 General > Existing Project into Workspace 并单击 Next。


    3、单击 Select root directory,然后单击相关的 Browse 按钮,以找到包含项目文件的目录。


    4、在Projects下方选择目录和您希望导入的项目文件,单击 OK,然后单击 Finish 以将文件导入至 Eclipse*。


    5、您的主 .cpp 程序将显示在 src 文件夹下方的工作区。


    连接 Grove* 传感器

    您需要具有连接至兼容 Arduino* 的 breakout 开发板的 Grove* 基座护罩 V2,以便将所有 Grove* 设备插入 Grove* 基座护罩 V2。 确保 Grove* 基座护罩 V2 上的微型 VCC 开关设置为 5V。

    1、将 Grove* 线缆的一端插入 Grove* 温度传感器,并将其另一端连接至 Grove* 基座护罩 V2 的 A0 端口上。


    2、将 Grove* 线缆的一端插入 Grove* 蜂鸣器,并将其另一端连接至 Grove 基座护罩 V2 的 D5 端口上。

    3、将 Grove* 线缆的一端插入 Grove* RGB LCD,并将其另一端插入 Grove* 基座护罩 V2 的任意 I2C 端口。

    英特尔® Edison 开发板设置

    该示例使用 restclient-cpp 库执行面向远程数据服务器的 REST 呼叫。 您可在 lib 目录中获得该代码。 restclient-cpp 库要求 libcurl 软件包(默认已安装在英特尔® Edison 开发板上)。

    此外,该使用使用 twilio-cplusplus 库执行面向 Twilio* SMS 服务器的 REST 呼叫。 您可在 lib 目录中获得面向 twilio-cplusplus 的代码。 twilio-cplusplus 库要求 ssl 和 crypto 软件包(默认已安装在英特尔® Edison 开发板上)。

    Twilio* API 密钥

    如欲选择发送文本讯息,您需要注册一个账户,并从 Twilio* 网站中获取 API 密钥:

    https://www.twilio.com

    若未事先获取 Twilio* API 密钥,您无法发送文本讯息, 不过仍然可以运行该示例,只是没有 SMS 告警。

    数据存储服务器设置

    您还可选择将该示例程序生成的数据存储在使用 Microsoft* Azure*、IBM* Bluemix*、AWS*、Node.js* 和 Redis* 数据存储部署的后端数据库中。

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

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

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

    1、在左下角右击 Target SSH Connections 选项卡的位置,并选择 New > Connection。


    2、显示 Intel® IoT Target Connection 窗口。 在 Filter 字段中,输入开发板的名称。


    3、在 Select one of the found connections 列表中选择设备名称并单击 OK。


    4、在 Target SSH Connections 选项卡中,右击设备并选择 Connect。


    如果收到有关用户名和密码的提示,用户名为 root,密码为您在配置英特尔® Edison 开发板时指定的密码。

    使用云服务器运行该示例

    如欲通过可选后端数据库运行该示例,需要设置 SERVER 和 AUTH_TOKEN 环境变量。 该操作可在 Eclipse* 中执行,以下所示:

    1、在 Run 菜单中选择 Run Configurations。显示 Run Configurations 对话框。

    2、在 C/C++ Remote Application 下方单击 doorbell。这样可以显示有关应用的信息。

    3、除使用与设置对应的服务器和验证令牌外,在 Commands to execute before application 字段中添加环境变量,如下所示:

    chmod 755 /tmp/fire-alarm; export SERVER="http://intel-iot-example-data.azurewebsites.net/logger/fire-alarm"; export AUTH_TOKEN="Enter Auth Token Here"; export TWILIO_SID="Enter Twilio SID Here"; export TWILIO_TOKEN="Enter Twilio Token Here"; export TWILIO_TO="Enter Number to Send to here Formattted 555-555-5555"; export TWILIO_FROM="Enter Number to be Sent >From Here Formated 555-555-5555"

    4、单击 Apply 以保存新的环境变量。

    现在,如果使用 Run 按钮运行应用,应该能够调用您的服务器以保存英特尔® Edison 开发板的数据。

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

    准备运行该示例时,在 Eclipse* 中单击顶部菜单栏中的 Run。


    这样将使用 Cross G++ Compiler 编译程序,使用 Cross G++ Linker 进行链接、将二进制代码传输至英特尔® Edison 开发板,然后在开发板上执行代码。

    运行程序后,您将看到类似于下图中的输出。


    成功的输出应该与下图中的输出类似。


    程序上传至英特尔® Edison 开发板后,开始持续监控温度。 如果超过阀值,Fire Alarm! 消息将显示在 LCD 上。


    当温度传感器被加热,Eclipse* 控制台将显示另一条输出信息,与上图类似。 这表示您已成功发出 SMS 告警。


    如欲获取 18 个英特尔® 物联网技术代码示例(用 C++ 编写)入门的完整列表,请参阅本篇英特尔® 开发人员专区博文 18 个用 C++ 编写的英特尔® 物联网技术代码示例入门

    如欲获取 18 个英特尔® 物联网技术代码示例(用 JavaScript* 编写)入门的完整列表,请参阅本篇英特尔® 开发人员专区博文 发布 18 个用 JavaScript* 编写的英特尔® 物联网技术代码示例入门

    有关该代码示例的更多详情,请访问 GitHub*