风筝
发表于: 2020-6-21 09:17:12 | 显示全部楼层

在之前的文章中,我们使用NodeMCU开发板实现了在Google表格中记录温度数据。现在,在本篇文章中,我们将这些数据发送到Thinger.io云平台并以图形方式进行显示。 BMP180传感器与NodeMCU ESP8266相连,用于收集温度、湿度和高度数据,这些数据将被发送到Thinger.io云平台。在本文中,我们将学习如何管理thinger.io云平台的不同功能,例如设备、端点、数据桶(data buckets)以及访问令牌。


所需的组件

●    NodeMCU ESP8266开发板

●    BMP180压力传感器

●    跳线

●    面包板


电路原理图

这款ESP8266数据记录器的电路图非常简单,仅需将BMP180传感器与NodeMCU进行连接即可。

ESP8266-Data-Logger-Circuit-Diagram.jpg


BMP180传感器使用I2C通信协议。因此,我们需要将BMP180的SCL和SDA引脚连接到NodeMCU的SCL和SDA引脚(D1和D2)。另外,将BMP180的VIN和GND引脚连接到NodeMCU的3.3V和GND。请勿将传感器直接连接到5V,因为它会对传感器造成永久损坏。

ESP8266-Data-Logger-Setup.jpg


ESP8266温度数据记录器的Thinger.io设置

Thinger.io是一个用于物联网的开源云平台。它提供了用于以简单的方式对连接的产品进行原型设计、扩展和管理的所有必需工具。 Thinger.io提供了三个基本工具,即数据桶(Data Bucks)、仪表板(Dashboard)和端点(Endpoint)来处理设备数据。这些工具可用于可视化设备数据并扩展设备的互操作性。

●    数据桶(Data Bucks):数据桶可用于以可扩展的方式存储设备数据,编程不同的采样间隔或记录设备引发的事件。

●    仪表板(Dashboard):仪表板工具具有一些带有可自定义窗口小部件的面板,可以使用拖放技术在数分钟内创建面板,以可视化实时数据和存储的数据。

●    端点(Endpoint):端点可用于将平台与其他服务(例如IFTTT、自定义Web服务、电子邮件或呼叫其他设备)集成。


在这款ESP8266温度数据记录器中,我们将探索使用这些工具。


要将数据发送到Thinger.io,您需要在Thinger.io平台上创建一个免费账户,然后按照以下步骤连接设备。


第1步:首先创建一个新设备。要创建新设备,请在菜单选项卡中单击Devices,然后单击添加Add Device

Thinger-io.png

然后在表格中填写设备ID、说明和凭据,并为您的设备生成随机凭据,然后点击Add Device。

Thinger-io-Device-Setup.png

现在您的设备已准备好连接。在下一步中,我们将对NodeMCU进行编程,以将数据发送到Thinger.io平台。


NodeMCU数据记录器的IFTTT设置

当温度超过极限时,我们在这里使用IFTTT发送电子邮件警告。 IFTTT(If This Then That)是一项基于Web的服务,通过它,我们可以创建称为小程序(applet)的条件语句。使用这些小程序,我们可以发送电子邮件、Twitter、Facebook通知。


要使用IFTTT,请先登录IFTTT账户,如果没有账户,请先进行创建。


现在搜索“ Webhooks”,然后单击Services中的Webhooks

IFTTT-Setup.png

然后,在Webhooks窗口中,单击右上角的Documentation以获取私钥。复制此密钥,此密钥将在Thinger.io中创建端点时使用。

IFTTT-Webhooks_0.png

之后,使用Webhooks和电子邮件服务创建一个applet。要创建小程序,请点击您的个人资料,然后点击Create。


现在,在下一个窗口中,单击This图标。现在,在搜索部分中搜索Webhooks,然后单击Webhooks。

IFTTT-Service.png

现在,选择Receive a Web Request触发器,并将输入事件名称temp,然后单击“创建触发器”。

IFTTT-Trigger.png

之后,点击Then That,然后点击Email。


现在,在电子邮件中,单击send me an email,然后输入电子邮件主题和正文,然后单击“创建操作”。在最后一步中,单击Finish完成小程序设置。

IFTTT-Action-Service.png


编程NodeMCU记录数据

在本文末尾提供了用于将数据发送到Thinger.io的完整代码。在这里,我们将解释一些重要的部分。


首先包含所有必需的库。 ThingerESP8266.h用于在IoT平台与NodeMCU之间建立连接,而Adafruit_BMP085.h用于读取BMP传感器数据。您可以从Arduino IDE库管理器安装ThingerESP8266.h库。

  1. #include <ThingerESP8266.h>
  2. #include <ESP8266WiFi.h>
  3. #include <Wire.h>
  4. #include <Adafruit_BMP085.h>
复制代码

接下来,在代码中输入凭据,以便可以识别设备并将其与您的帐户关联。

  1. #define USERNAME "Your account Username"
  2. #define DEVICE_ID "NodeMCU"   //Your Device Name
  3. #define DEVICE_CREDENTIAL "FcLySVkP8YFR"
复制代码

然后,输入您的端点名称。端点用于将平台与外部服务(例如IFTTT\HTTTP请求等)集成。

  1. #define EMAIL_ENDPOINT "IFTTT"
复制代码

定义用来保存压力、温度和高度数据的变量。

  1. int Pressure, Temperature, Altitude;
复制代码

在void loop()函数内,读取传感器数据。 pson数据类型可以容纳不同的数据类型。因此,Pson数据类型用于同时接收多个值。

  1. thing["data"] >> [](pson& out){
  2.     out["Pressure"] = bmp.readPressure()/100;
  3.     out["Altitude"]= bmp.readAltitude();
  4.     out["Temperature"] = bmp.readTemperature();
  5.      };
复制代码

如果温度值超过15度,则使用if条件调用端点。这里的data是端点名称。

  1. if(Temperature > 15){
  2.       thing.call_endpoint( EMAIL_ENDPOINT,"data");}
  3.   Serial.print("Sending Data");
复制代码

Thinger.io云平台上的记录数据

现在,将BMP传感器连接到NodeMCU并上传代码。 NodeMCU将使用您的账户凭据与您之前创建的设备连接。如果连接成功,它将显示已连接,如下图所示:

Thinger-io-Data.png

您可以通过单击“Device”菜单上的设备名称来检查设备统计信息,例如发送的数据(Transmitted Data)、接收的数据(Received Data)、IP地址、连接的时间(Time Connected)等。

Logging-Data-on-Thinger.io_.png

当我们现在接收数据时,我们将创建一个仪表板(dashboard)以使用小部件可视化数据。


要创建一个仪表板,请从菜单标签中点击Dashboards,然后点击Add Dashboard

Thinger.io-Dashboard.png

现在,在下一个窗口中,输入仪表板详细信息,例如仪表板名称、ID和描述,然后单击Dashboard。


之后,通过单击仪表板名称访问新的仪表板。默认情况下,仪表板将显示为空。要添加小部件,首先需要通过单击仪表板的右上方开关来启用编辑模式。然后点击Add Widget按钮。

Thinger.io-Widget.png

当您点击Add Widget按钮时,它将显示一个弹出窗口,您可以在其中选择小部件类型、背景颜色等。在本文中,我选择了Gauge Widget。

Widget-Settings.png

当您单击保存时,它将带您进入下一个界面,您需要在其中选择Source Value、Device、Resource、Value和Refresh模式。选择所有值,然后单击Save按钮。

Device-Widget-Settings.png


现在,对其余变量重复相同的过程。最终的仪表板如下所示:

BMP-Sensor-Data.png


在Thinger.io中创建端点发送电子邮件报警

现在,我们将创建一个端点,以将Thinger.io与IFTTT集成。设备可以调用端点来执行任何操作,例如发送电子邮件、发送SMS、调用REST API、与IFTTT交互、从其他帐户调用设备或调用任何其他HTTP端点。


要创建端点(Endpoint),请在菜单标签中单击Endpoint选项,然后单击Add Endpoint。


现在,在下一个窗口中,输入所需的详细信息,包含:

●    端点ID(Endpoint Id):端点的唯一标识符。

●    端点描述(Endpoint Description):编写有关端点的描述或详细信息。

●    端点类型(Endpoint Type):从给定的选项中选择端点类型。

●    事件名称(Maker Event Name):输入您的IFTTT小程序名称。

●    频道密钥(Maker Channel Key):您的Webhooks秘密密钥。

Thinger.io-Endpoint-Details.png


之后,单击Test Endpoint检查是否一切正常。它应该向您发送一封电子邮件,其中包含有关温度数据的报警。

NodeMCU-Data-Logger-Dashboard.png

您可以发送电子邮件或电报消息,也可以使用Endpoint功能发送HTTP请求,而不必使用IFTTT Webhook触发器。


以上就是NodeMCU ESP8266将BMP180传感器的温度、压力和高度数据记录到互联网的方式。


代码

以下就是本文使用的完整代码: main.rar (602 Bytes, 下载次数: 18)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 54 | 回复: 107



手机版|

GMT+8, 2024-11-21 20:13 , Processed in 0.040998 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表