0 有用
0 下载

如何将ESP8266连接到ThingSpeak

文件列表(压缩包大小 2.29K)

免费

概述

需要的元件

  • Arduino开发板或USB-to-UART转换器
  • ESP8266 WiFi模块(ESP-01)
  • 杜邦线

原理及流程

当制造商和业余爱好者想到物联网(IoT)时,就会想到两件事:一件事是ESP8266,另一件事是ThingSpeak。一个是物联网系统的硬件部分,而另一个是系统所需的API(或用户界面)。在本项目中,我将向你展示如何将ESP8266连接到ThingSpeak应用程序以及ESP8266 ThingSpeak协作的工作方式。

总览

我们已经看到了一种使用ESP8266和aREST Platform的IoT实施方案。ThingSpeak之所以与众不同,是因为它使用简单的HTTP协议从不同的传感器传输,存储和检索信息。

此外,ThingSpeak应用程序允许我们记录传感器数据,跟踪位置,甚至是事物的社交网络。

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

一种这样的功能是在没有MATLAB许可的情况下以图形方式分析和可视化用户数据(即传感器数据)。

抛开公司的东西,ThingSpeak应用程序是我们与物联网相关项目的绝佳工具,因此此项目着重于基础知识,即如何将ESP8266连接到ThingSpeak应用程序,以及ESP8266 ThingSpeak接口如何在我们的未来项目中使用。

创建ThingSpeak帐户

你需要做的第一件事是使用ThingSpeak创建一个帐户。自从与MATLAB合作以来,你可以使用MathWorks凭据通过此页面上的“登录”链接来登录ThingSpeak:THINGSPEAK

如果你还没有,则需要使用MathWorks创建一个帐户并登录到ThingSpeak Application。

注意: MathWorks帐户可用于MATLAB以及ThingSpeak登录。

登录后,你需要为要存储的数据创建一个新通道。为此,转到“频道”->“我的频道”,然后单击“新频道”。

将ESP8266连接到ThingSpeak新通道

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

就我而言,我创建了一个称为“测试通道”的通道,并将字段1创建为“随机数”。你将在后面的部分中了解原因。

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

ThingSpeak应用程序中还需要执行其他一些操作,但是在需要时我会告诉你。

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

项目先决条件

我将向你展示如何将ESP8266连接到ThingSpeak Application的两种方法。对于这两种方式,都需要确保你的ESP8266模块已加载或使用AT Commands固件进行刷新。

有关此问题的更多信息,建议你按照项目“如何更新ESP8266 固件”中提到的步骤进行操作。

注意:

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

使用AT Commands固件刷新ESP之后,现在可以继续将ESP8266连接到ThingSpeak。正如我之前说的,你可以通过两种方式做到这一点:一种是通过AT命令,另一种是通过Arduino(即使这种方式也使用AT命令,但Arduino控制它们)。

我将向你展示将ESP8266连接到ThingSpeak的两种方法。

ESP8266 ThingSpeak接口通过AT指令电路图

将ESP8266连接到ThingSpeak的电路图非常简单。实际上,你以前可能已经看到过这种联系。Aduino UNO板仅用于在计算机和ESP8266之间传输数据,即它充当USB-UART转换器。

`将ESP8266连接至ThingSpeak AT命令电路`

使用AT命令将ESP8266连接到ThingSpeak

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

AT

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

收到“确定”的响应后,你可以使用以下命令将ESP模块连接到WiFi网络。

AT + CWJAP =“ SSID”,“ PASSWORD”

将SSID替换为你的WiFi网络的名称,然后输入密码代替PASSWORD。

你现在将收到有关WiFi连接的确认响应,如下所示。

WIFI CONNECTED

WIFI GOT IP

OK

将ESP8266连接到ThingSpeak AT命令WiFi

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

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 AT命令启动TCP

注意:

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

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

为此,一个接一个地使用以下命令。

AT + CIPSEND = 51

GET / update?api_key = XXXXXXXXXXXXXXXX&field1 = 255

AT + CIPCLOSE

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

为了发送数据,你需要发送三种不同的信息:一种是实际的发送命令,其次是数据以及ThingSpeak字段密钥,最后是关闭连接命令。我将尝试尽可能详细地解释这些步骤。

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

将ESP8266连接到ThingSpeak AT命令API密钥

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

AT + CIPSEND = 51

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

OK

\>

现在,键入以下信息,然后单击发送。在这里,“ XXXXXXXXXXXXXXXX”不过是你刚刚复制的16个字符的Write API密钥。数字“ 143”是你要传输到field1的实际数据。

GET / update?api_key = XXXXXXXXXXXXXXXX&field1 = 143

输入此文本并点击“发送”后,你将不会得到任何回应。它实际上正在等待关闭命令。在点击“发送”以获取上面的文本后,立即键入以下命令并点击“发送”。

AT + CIPCLOSE

按下send的那一刻,你将得到以下响应(不是确切的响应,而是类似的响应)。

Recv 51 bytes

SEND OK

+IPD,1:5CLOSED

将ESP8266连接到ThingSpeak AT命令发送

在这里,5号的手段,这是我5 TH消息,这把钥匙。现在,打开ThingSpeak API并打开你的频道。在“私人视图”选项卡中,你可以在字段1图表中看到值“ 143”。

将ESP8266连接到ThingSpeak AT Commands API

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

使用Arduino的ESP8266 ThingSpeak接口电路图

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

将ESP8266连接到ThingSpeak Arduino电路

使用Arduino将ESP8266连接到ThingSpeak

我不想问同样的老问题,即你是否厌倦了手动键入所有AT命令?显然,答案是肯定的。Arduino来了。按照上面的电路图进行所有连接,然后继续执行代码。

代码

使用以下代码上传到Arduino。请注意,你几乎没有更改代码。所做的更改将涉及WiFi SSID,WiFi密码和API密钥(16个字符)。我认为,其余的值可以保留不变。

#include <SoftwareSerial.h>       //Software Serial library
SoftwareSerial espSerial(2, 3);   //Pin 2 and 3 act as RX and TX. Connect them to TX and RX of ESP8266      
#define DEBUG true
String mySSID = "SSID";       // WiFi SSID
String myPWD = "PASSWORD"; // WiFi Password
String myAPI = "XXXXXXXXXXXXXXXX";   // API Key
String myHOST = "api.thingspeak.com";
String myPORT = "80";
String myFIELD = "field1"; 
int sendVal;


void setup()
{
  Serial.begin(9600);
  espSerial.begin(115200);
  
  espData("AT+RST", 1000, DEBUG);                      //Reset the ESP8266 module
  espData("AT+CWMODE=1", 1000, DEBUG);                 //Set the ESP mode as station mode
  espData("AT+CWJAP=\""+ mySSID +"\",\""+ myPWD +"\"", 1000, DEBUG);   //Connect to WiFi network
  /*while(!esp.find("OK")) 
  {          
      //Wait for connection
  }*/
  delay(1000);
  
}

  void loop()
  {
    /* Here, I'm using the function random(range) to send a random value to the 
     ThingSpeak API. You can change this value to any sensor data
     so that the API will show the sensor data  
    */
    
    sendVal = random(1000); // Send a random number between 1 and 1000
    String sendData = "GET /update?api_key="+ myAPI +"&"+ myFIELD +"="+String(sendVal);
    espData("AT+CIPMUX=1", 1000, DEBUG);       //Allow multiple connections
    espData("AT+CIPSTART=0,\"TCP\",\""+ myHOST +"\","+ myPORT, 1000, DEBUG);
    espData("AT+CIPSEND=0," +String(sendData.length()+4),1000,DEBUG);  
    espSerial.find(">"); 
    espSerial.println(sendData);
    Serial.print("Value to be sent: ");
    Serial.println(sendVal);
     
    espData("AT+CIPCLOSE=0",1000,DEBUG);
    delay(10000);
  }

  String espData(String command, const int timeout, boolean debug)
{
  Serial.print("AT Command ==> ");
  Serial.print(command);
  Serial.println("     ");
  
  String response = "";
  espSerial.println(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (espSerial.available())
    {
      char c = espSerial.read();
      response += c;
    }
  }
  if (debug)
  {
    //Serial.print(response);
  }
  return response;
}

上传代码后,如果打开串口监控器(波特率设置为9600),可以看到AT指令正在传输到ESP8266模块。

Connect-ESP8266-to-ThingSpeak-Arduino-AT-Commands

最初,AT命令将建立与ESP模块的WiFi连接。启用连接后,Arduino将建立与ThingSpeak API的TCP连接,并每5秒发送一次随机数。

可以在ThingSpeak API网站上(即在你创建的通道中(在“私人视图”选项卡下))监视此数据。

Connect-ESP8266-to-ThingSpeak-Arduino-API

结论与应用

  • 在这个项目中,我向你展示了如何使用直接AT命令以及通过Arduino将ESP8266连接到ThingSpeak API。
  • 使用ThingSpeak API,你可以监控世界各地的传感器数据。
  • 最常用的传感器是DHT11湿度和温度传感器,DS18B20温度传感器和LM35。

最后

所有需要的文件在下载区均可找到。

via:https://www.electronicshub.org/connect-esp8266-to-thingspeak/

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(0)

0/250