将ESP8266连接到Thingspeak

当制造商和业余爱好者想到物联网(物联网)时,他们想到了两件事:一个是ESP8266,另一个是Things Pake。一个是物联网系统的硬件部分,而另一个为系统提供了必要的API(或用户界面)。在此项目中,我将向您展示如何将ESP8266连接到ThingsPeak应用程序以及ESP8266 ThingsPeak协作的工作方式。

概述

我们已经看到了使用ESP8266和AREST平台的一个这样的物联网实现。使Things pak Difand和“与众不同”的原因是使用简单的HTTP协议来传输,存储和检索不同传感器的信息。

此外,ThingsPeak应用程序使我们能够记录传感器数据,跟踪位置甚至事物的社交网络。

ThingsPeak的另一个重要的事情(或者是独特的功能)是MATLAB的支持。ThingsPeak和Matlab之间的紧密关系导致将MATLAB的几个关键功能集成到Thesspepeak应用程序中。

这样的功能是分析和可视化用户数据,即以图形方式的传感器数据,没有MATLAB许可证。

将公司的内容搁置一旁,ThingsPeak应用程序是我们与物联网相关项目的绝佳工具,因此该项目重点介绍了基础知识,即如何将ESP8266连接到ThingsPeak应用程序,以及如何在我们未来的项目中使用ESP8266 Things -Peak界面。

创建Things pakeak帐户

您需要做的第一件事是用ThingsPeak创建一个帐户。由于与MATLAB合作,您可以使用Mathworks凭据使用此页面中的链接中的符号来登录到ThingsPeak:Thingspeak

如果您没有一个,则需要创建一个使用Mathworks的帐户并登录到ThingsPeak应用程序。

笔记:Mathworks帐户可用于MATLAB和ThingsPeak登录。

登录后,您需要创建一个新的通道,以存储数据。为此,请访问频道 - >我的频道,然后单击新频道。

将ESP8266连接到Things pakeak新频道

在相应的部分中输入频道的名称和字段1的名称。通道中的字段用于保存数据,每个通道最多可以具有8个字段。输入详细信息后,保存频道。

就我而言,我创建了一个名为“测试通道”的频道,而字段1为“随机数”。您将在后面的部分中看到为什么。

将ESP8266连接到Thingspeak字段详细信息

您在ThingsPeak应用程序中还需要做其他一些事情,但是当您需要时,我会告诉它。

下一步是为项目准备硬件,其中包括ESP8266 WiFi模块,Arduino Uno板和一些连接电线。

该项目的先决条件

我将向您展示如何将ESP8266连接到ThingsPeak应用程序的两种方法。对于这两种方式,您需要确保将ESP8266模块加载或闪烁在命令固件上。

有关此的更多信息,我建议您仔细阅读项目中提到的程序如何更新Flash ESP8266固件

笔记:

  • 要刷新AT命令固件,您需要通过将GPIO0连接到GND并重置模块来启用ESP8266中的编程模式。
  • 但是在此电路中(假设您已经刷新了固件),ESP模块处于正常模式,即GPIO0可以保持浮动。

使用AT命令固件刷新ESP后,您现在可以继续将ESP8266连接到ThingsPeak。正如我之前所说,您可以通过两种方式进行操作:一个是通过命令进行的,另一种方式是通过Arduino(即使是这种方式使用命令,但Arduino都可以控制它们)。

我将向您展示将ESP8266连接到ThingsPeak的两种方法。

ESP8266 Things Pake界面的电路图通过命令

为了将ESP8266连接到ThingsPeak的电路图非常简单。实际上,您可能以前已经看到过这种联系。Arduino Uno董事会仅用于在计算机和ESP8266之间传输数据,即它充当USB至uart转换器。

将ESP8266连接到命令电路的ThingsPeak

需要组件

  • 任何Arduino董事会或USB到UART转换器
  • ESP8266 WiFi模块(ESP-01)
  • 连接电线

使用AT命令将ESP8266连接到ThingsPeak

将Arduino板连接到计算机,并打开Arduino的串行监视器,并使用以下命令检查连接性。

请注意,我将波特率设置为115200,并在串行显示器中选择了“ NL&CR”选项。

在获得“确定”响应后,您可以使用以下命令继续将ESP模块连接到WiFi网络。

at+cwjap =“ ssid”,“密码”

用WiFi网络的名称替换SSID,然后输入密码代替密码。

现在,您将获得有关WiFi连接的确认响应,如下所示。

连接WiFi

wifi获得了IP

好的

将ESP8266连接到命令wifi的ThingsPeak

现在,您需要使用以下命令设置单个连接。

at+cipmux = 0

下一步是使用TCP协议连接到ThingsPeak API。为此,您需要使用以下命令。

at+cipstart =“ tcp”,“ api.thingspeak.com”,80

另外,您可以使用主机API.ThingsPeak.com的IP地址,即184.106.153.149。

at+cipstart =“ tcp”,“ 184.106.153.149”,80

将ESP8266连接到命令的ThingsPeak启动TCP

笔记:

  • 启动TCP连接后,如果您不执行任何操作,则该连接将在一段时间后自动关闭,通常是1分钟后。

现在,您已成功启用了ESP8266和ThingsPeak之间的“ TCP”连接。接下来,您可以通过此TCP连接发送任何数据。

为此,请使用以下命令。

在+cipsend = 51

获取 /更新?api_key = xxxxxxxxxxxxxxxxxx&field1 = 255

在+cipclose

建立了TCP连接后,您可以使用某些命令发送数据。这部分可能有些棘手,但是尝试了几次,您将了解该过程。

为了发送数据,您需要发送三个不同的信息:一个是实际的发送命令,接下来是数据以及ThessPeak字段键,最后是CLOSE CONLECT CONNECTING命令。我将尝试以详细的方式解释这些步骤。

在发送数据之前,您需要获取API密钥。为此,转到频道(您刚刚创建的一个),然后单击“ API键”选项卡。在此下方,您可以找到Write API键,该键是16个字符的字母数字字符串。记下此键。

将ESP8266连接到命令API键的ThingsPeak

现在,使用以下命令初始化数据传输。

在+cipsend = 51

值51是要传输数据的长度。这包括完整的数据,包括API密钥和“ \ r”和“ \ n”值。对于此命令,您将获得以下响应。

好的

>

现在键入以下信息并发送发送。在这里,“ xxxxxxxxxxxxxxxxx”不过是16个字符写API键,您刚刚复制了。数字“ 143”是您要传输到field1的实际数据。

get /update?api_key = xxxxxxxxxxxxxxxxxx&field1 = 143

键入此文本并击中发送后,您将不会得到任何响应。它实际上正在等待关闭命令。点击上述文本后,请立即键入以下命令并点击发送。

在+cipclose

当您发送发送的那一刻,您将获得以下响应(不是确切的响应,而是类似的答案)。

RECV 51字节

发送确定

+ipd,1:5 claped

将ESP8266连接到命令的ThingsPeak

在这里,数字5表示,这是我的5Th给该键的消息。现在,打开ThingsPeak API并打开您的频道。在“私有视图”选项卡中,您可以在“字段1”图表中看到值'143'。

将ESP8266连接到命令API的ThingsPeak

而已。如果您理解并遵循所有这些步骤,那么您可能已经成功将ESP8266连接到ThingsPeak API。要发送更多数据,请重复创建TCP连接的步骤。

ESP8266的电路图使用Arduino

由于我将编程Arduino并通过Arduino控制ESP8266,因此电路图将略有不同。但是组件将相同。

将ESP8266连接到Things pakeak arduino电路

使用Arduino将ESP8266连接到ThingsPeak

我不想问一个旧问题,即您是否厌倦了手动键入所有AT命令?显然,答案是肯定的。Arduino来营救。按照上述电路图进行所有连接,我们将继续执行代码。

代码

使用以下代码上传到Arduino。请注意,您对代码进行了很少的更改。这些更改将是关于WiFi SSID,WiFi密码和API密钥(16个字符)。我认为,其余的值可以保持原样。

上传代码后,如果打开串行监视器(设置为9600),则可以看到将AT命令传输到ESP8266模块。

将ESP8266连接到命令上的Thingt Things pak arduino

最初,AT命令将设置与ESP模块的WiFi连接。启用连接后,Arduino将建立与ThesptingPeak API的TCP连接,并每5秒传输随机数。

可以在您创建的频道(在“私有视图”选项卡下)中在ThesTyPeak API网站上进行监视此数据。

将ESP8266连接到Things pakeak arduino api

结论和应用

  • 在此项目中,我向您展示了如何使用Direct At命令以及通过Arduino将ESP8266连接到ThingsPeak API。
  • 使用ThingsPeak API,您可以监视来自世界任何地方的传感器数据。
  • 最常用的传感器是DHT11湿度和温度传感器,DS18B20温度传感器和LM35。

14个回应

  1. 忙...

    RECV 60字节

    发送确定

    +IPD,323:http/1.1 400不良请求
    服务器:nginx/1.9.3
    日期:2018年7月16日星期一23:48:52 GMT
    内容类型:文本/html
    内容长度:172
    连接:关闭

    400不良要求

    400不良要求
    nginx/1.9.3

    关闭

    1. 字符串myapi =“ gkbfk8h2xahu29zg”;// API密钥
      字符串myHost =“ api.thingspeak.com”;
      字符串myport =“ 80”;

      void senddata_thingspeak(float value1)
      {
      int counter2 = 0;
      //得到https://api.thingspeak.com/update?api_key = gkbfk8h2xahu29zg&field1=0
      字符串url =“ get /update?api_key =”+ myapi;
      url +=“&field1 =”;
      url += realvalue(value1);
      url +=“。”;
      URL += DemimalValue(value1);
      url +=“ \ r \ n \ r \ n \ r \ n”;

      字符串cmd =“ at+cipstart = \” tcp \“,\” \“”;
      cmd += myhost;
      cmd +=“ \”,”;
      cmd += myport;
      Serial5.println(CMD);
      字符串ip = serial5.5.ReadString();
      serial.println(ip);

      int len = url.length();
      serial.println(url);
      serial5.print(“ at+cipsend =”);
      Serial5.println(Len);
      while(!serial5.find(“>”)){
      Counter2 ++;
      如果(counter2 == 5000)休息;
      }
      serial5.print(url);
      serial5.println(“ \ r \ n \ r \ n \ r \ n \ n \ n \ r \ n \ n \ r \ n”);
      ip = serial5.ReadString();
      serial.println(ip);
      }

  2. 你好
    任何人都可以解决将数据发送到ThingsPeak的问题

    at+cipstart =“ tcp”,“ 184.106.153.149”,80

    连接

    好的
    在+cipsend = 51

    好的
    > get /update?api_key = hmlaguhaib3k7444&field1 = 143
    在+cipclose
    忙...

    发送确定

    +IPD,323:http/1.1 400不良请求
    服务器:nginx/1.7.5
    日期:THU,2018年9月13日03:18:19 GMT
    内容类型:文本/html
    内容长度:172
    连接:关闭

    400不良要求

    400不良要求
    nginx/1.7.5

    关闭

  3. espdata(“ at+cwjap = \”“+myssid+” \“ \”,\“”+mypwd+“ \” \“”,1000,debug);

    1000的含义是什么?

  4. 当我手动输入命令时,一切都很好。我连接到WiFi并将数据发送到ThingsPeak。
    但是,当我更改电路并将草图上传到Arduino中时,所有串行消息都将被打印,而不是ESP串行命令。我插入了一些调试代码,甚至注意到简单的命令是抛出错误。我错过了什么?电路和代码都是相同的。仔细检查所有电缆。我也检查了Thingspeak。Arduino没有上传数据。

    1. 当您上传Arduino草图时,您已经覆盖了AT固件。要使用AT命令,您必须再次上传AT固件。ESP8266中只能存在一个固件(Arduino Sketch,固件或Nodemcu或任何其他固件,只有一个固件,只有一个固件)。

发表评论

您的电子邮件地址不会被公开。

电子豪华粉丝
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map