65.9K
CodeProject 正在变化。 阅读更多。
Home

C++ 中的植物照明系统

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (3投票s)

2017年6月23日

CPOL

9分钟阅读

viewsIcon

9034

这个自动植物照明系统监控应用程序是物联网 (IoT) 代码示例练习系列操作指南的一部分,这些练习使用 Intel® IoT 开发套件、Intel® Edison 板、Intel® IoT 网关、云平台、API 和其他技术。

获取新的 Intel® IoT 开发套件,它是一个完整的硬件和软件解决方案,允许开发人员使用 Intel® Galileo 和 Intel® Edison 板创建令人兴奋的新解决方案。请访问 Intel® IoT 开发者专区

引言

这个自动植物照明系统监控应用程序是物联网 (IoT) 代码示例练习系列操作指南的一部分,这些练习使用 Intel® IoT 开发套件、Intel® Edison 板、Intel® IoT 网关、云平台、API 和其他技术。

通过此练习,开发人员将学习如何:

  • 连接 Intel® Edison 板或 Intel® IoT 网关,这些计算平台专为原型设计和生产物联网和可穿戴计算产品而设计。
  • 使用 Intel® IoT 开发套件中的 MRAA 和 UPM 与 Intel® Edison 板或 Arduino 101*(在美国以外品牌为 Genuino 101*)板 IO 和传感器存储库接口,这是一个完整的硬件和软件解决方案,可帮助开发人员探索物联网并实施创新项目。
  • 在 Intel® System Studio IoT Edition(用于 C/C++ 和 Java* 开发的 Eclipse* IDE)中运行这些代码示例,以创建与传感器和执行器交互的应用程序,从而为开发 Intel® Edison 板或 Intel® Galileo 板的软件提供快速启动。
  • 设置一个 Web 应用程序服务器来设置照明时间,并使用 Microsoft* 的 Azure Redis Cache*、IBM Bluemix* 的 Redis Store* 或 Amazon Web Services (AWS)* 的 Elasticache*(使用 Redis*)存储这些数据,这些是连接物联网解决方案的不同云服务,包括数据分析、机器学习和各种生产力工具,以简化将传感器连接到云并快速启动和运行物联网项目的过程。
  • 调用 Twilio* API 的服务以发送短信。
  • 连接到使用 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 网关,该项目可让您创建一个自动植物照明监控系统,该系统:

  • 使用光传感器根据可配置的日程检查独立的自动化照明系统是否打开或关闭。
  • 可以通过内置网络界面用手机访问,以设置照明时间。
  • 使用连接的湿度传感器监测水位。
  • 使用基于云的数据存储记录照明系统中的事件。
  • 发送短信以在系统未按预期工作时提醒用户。

工作原理

此照明系统具有一些有用的功能。

您可以使用手机通过直接从 Intel® Edison 板或 Intel® IoT 网关提供的网页设置照明系统日程。

如果照明系统应该打开但光传感器未检测到光,则应用程序会通过 Twilio* 向指定的号码发送短信警报。

它还会以指定的时间间隔自动检查湿度传感器数据并记录该信息。

可选地,数据可以使用您自己的 Microsoft Azure*、IBM Bluemix*、AT&T M2X*、AWS*、Predix* 或 SAP* 帐户存储。

硬件要求

Grove* 室内环境套件包含

  1. 带有 Arduino* 扩展板的英特尔® Edison 开发板
  2. Grove Base Shield V2
  3. Grove 湿度传感器
  4. Grove 光传感器
  5. Grove RGB LCD

DFRobot* Intel® Edison 入门套件包含

  1. 带 Arduino* breakout 板的 Intel® Edison 模块
  2. 湿度传感器.
  3. 模拟环境光传感器
  4. LCD 键盘 Shield

软件要求

  1. Intel® System Studio(用于 C/C++ 和 Java* 开发的 Eclipse IDE)
  2. Microsoft Azure*、IBM Bluemix*、AT&T M2X*、AWS*、Predix* 或 SAP* 帐户(可选)
  3. Twilio* 帐户

如何设置

此示例已是 Intel® System Studio 中包含的物联网示例之一。要开始使用它,请按照以下步骤操作

  1. 从主菜单中,选择 Intel® IoT > 导入 IoT 示例
  2. 展开 C++ > 操作指南代码示例 > 植物照明系统 的树视图,然后单击 导入示例
  3. 从选择窗口中选择您的开发板,然后选择 下一步
  4. 从选择项目类型窗口中选择 Intel® IoT C/C++ 项目,然后单击 下一步
  5. 从选择目标操作系统下拉菜单中选择 Yocto,然后单击 下一步
  6. 下一个选项卡将要求输入连接名称和目标名称。如果您不知道这些,请单击 搜索目标
  7. 从下拉列表中选择您的 Edison。选择 确定
  8. 您的连接名称和目标名称应该已填写。选择 完成
  9. 将打开一个新窗口,您需要为项目选择一个名称并单击 下一步
  10. 您的项目源文件现在默认在 IDE 的左上方可用。

连接 Grove* 传感器

您需要将 Grove* Base Shield V2 连接到与 Arduino* 兼容的 breakout 板,才能将所有 Grove 设备插入 Grove Base Shield V2。确保 Grove Base Shield V2 上的微小 VCC 开关设置为 5V

  1. 将 Grove 线缆的一端插入 Grove* 光传感器,并将另一端连接到 Grove Base Shield V2 上的 A0 端口。
  2. 将 Grove 线缆的一端插入 Grove 湿度传感器,并将另一端连接到 Grove Base Shield V2 上的 A1 端口。
  3. 将 Grove 线缆的一端插入 Grove RGB LCD,并将另一端连接到 Grove Base Shield V2 上的任何 I2C 端口。

连接 DFRobot* 传感器

您需要将 LCD Keypad Shield 连接到与 Arduino* 兼容的 breakout 板,才能将所有 DFRobot* 设备插入 LCD Keypad Shield。

  1. 将 DFRobot* 线缆的一端插入模拟环境光传感器,并将另一端连接到 LCD Keypad Shield 上的 A2 端口。

  2. 将 DFRobot* 线缆的一端插入湿度传感器,并将另一端连接到 LCD Keypad Shield 上的 A3 端口。

Twilio* API 密钥

要选择性地发送短信,您需要注册一个帐户并从 Twilio* 网站获取 API 密钥

https://www.twilio.com

您仍然可以运行示例,但如果没有 Twilio API 密钥,您将无法发送短信警报。

Intel® IoT 网关设置

您可以使用连接到 Arduino 101*(在美国以外品牌为 Genuino 101*)的 Intel® IoT 网关运行此示例。

请确保您的 Intel® IoT 网关已使用 Intel® IoT 网关软件套件设置,请按照此处网站上的说明操作

https://software.intel.com/en-us/getting-started-with-intel-iot-gateways-and-iotdk

Arduino 101*(在美国以外品牌为 Genuino 101*)需要安装 Firmata* 固件。如果您的网关上安装了 IMRAA,这将自动完成。否则,请手动将 StandardFirmata 或 ConfigurableFirmata 草图安装到您的 Arduino 101*(在美国以外品牌为 Genuino 101*)上。

物联网云设置

您可以选择性地使用 Microsoft Azure*、IBM Bluemix*、AT&T M2X*、AWS*、Predix* 或 SAP* 的基于云的物联网平台存储此示例程序生成的数据。

有关如何连接到您自己的云服务器的信息,请访问

https://github.com/intel-iot-devkit/iot-samples-cloud-setup

数据存储服务器设置

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

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

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

为您的硬件套件配置示例

要为正在使用的特定硬件套件(Grove* 或 DFRobot*)配置示例

  1. 从主菜单中,选择 项目 > 属性 对话框。
  2. 展开 C/C++ General 部分。
    单击 路径和符号 子部分,然后单击 符号 选项卡。
  3. 现在单击 GNU C++,然后单击 添加 按钮。
  4. 名称 字段中,输入“INTEL_IOT_KIT”。在 字段中,根据您希望使用的硬件套件,输入“GROVEKIT”(这是默认值)或“DFROBOTKIT”。
  5. 您的新名称符号和值现在将显示。单击 确定
  6. 将出现另一个对话框,要求重建项目。单击 确定

将 Intel® Edison 板或 Intel® IoT 网关连接到 Intel® System Studio

  1. 目标 SSH 连接选项卡上,右键点击您的设备,然后选择连接

如果提示输入用户名和密码,则用户名是 root,密码是您在配置 Intel® Edison 板或 Intel® IoT 网关时指定的任何密码。

使用云服务器运行示例

要运行带有可选后端数据存储的示例,您需要设置 SERVERAUTH_TOKEN 环境变量。您可以在 Intel® IoT 网关中执行此操作到 Intel® System Studio,如下所示

  1. 运行菜单中,选择运行配置
    显示运行配置对话框。

  2. C/C++ 远程应用程序下,点击门铃
    这会显示应用程序的信息。

  3. 应用程序执行前要执行的命令 字段中,添加以下环境变量,但使用与您自己的设置对应的服务器和身份验证令牌

     chmod 755 /tmp/watering-system; export SERVER="http://intel-iot-example-data.azurewebsites.net/logger/watering-system"; 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. 点击应用保存您的新环境变量。

现在,当您使用 运行 按钮运行程序时,它应该能够调用您的服务器以直接从 Intel® Edison 板或 Intel® IoT 网关保存数据。

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

当您准备好运行示例时,单击 Intel® System Studio 顶部菜单栏中的 运行

这将使用 Cross G++ 编译器编译程序,使用 Cross G++ 链接器链接程序,将二进制文件传输到 Intel® Edison 板或 Intel® IoT 网关,然后在其板上执行。

运行程序后,您应该会看到与下图类似的输出。

成功输出应类似于下图所示。

重新生成 HTML 和 CSS

如果您对 index.htmlstyles.css 文件进行任何更改,则需要重新生成用于通过内置 Crow* Web 服务器提供资产的 .hex 文件。有关使用 shell 脚本的帮助,请访问此链接

how-to-run-the-shellscript.md

设置照明日程

照明系统的日程是使用在示例程序运行时从 Intel® Edison 板或 Intel® IoT 网关提供的单页 Web 界面设置的。

连接的 Grove* 湿度传感器的最新数据值显示在网页底部。

Web 服务器在端口 3000 上运行,因此如果 Intel® Edison 板或 Intel® IoT 网关连接到 192.168.1.13 上的 Wi-Fi,则如果您在同一网络上,则要浏览的地址是 http://192.168.1.13:3000

重要提示:此软件为示例软件。它不设计或不打算用于任何医疗、生命救助或生命维持系统、交通系统、核系统,或任何其他任务关键型应用程序,其中系统故障可能导致严重伤害或死亡。该软件可能未经充分测试,可能包含错误;它可能不适合商业发布。该软件尚未获得任何监管批准,因此可能无法在某些国家或环境中使用。

© . All rights reserved.