使用Arduino开发板和ESP8266从互联网读取数据

ESP8266-01是一款很强大的模块,能够知足咱们任何IOT项目的需求。自发布以来,它已经造成了一个很强大的群体,并演变成一个易于使用、价格低廉且功能强大的Wi-Fi模块。另外一个更受欢迎的开源平台是Arduino开发板,围绕该平台,已经创建起大量的项目。将这两个平台相结合将为许多创新项目打开大门,所以在本教程中,咱们将学习如何将ESP8266-01模块与Arduino进行链接。这样就能够在Arduino开发板和互联网之间发送或接收数据。html

 

为了实现目标,咱们将使用ESP8266-01经过一个API接口从互联网中读取时间、日期、温度和湿度。而后将这些值发送到Arduino板,并将它们显示在LCD显示屏1602上。听起来是否是很酷!那么让咱们开始吧。git

 

所需的材料github

●    Arduino开发板编程

●    ESP8266-01模块json

●    带有3.3V选项的FTDI编程电路板api

●    液晶显示屏1602浏览器

●    电位器安全

●    按钮ide

●    链接导线函数

●    面包板

 

如何工做的?

在咱们深刻研究以前,了解这件事情的实际状况很是重要。咱们须要从ESP8266-01模块的基础开始。使用Arduino IDE对ESP8266编程,并将编写代码以使用API​​经过http请求读取JSON文件。而后将解析这个JSON文件,从完整的JSON文件中只提取所需的信息。

 

一旦信息解析完成,咱们将使用串行通讯将其打印出来。这些串口线链接到Arduino,以便Arduino能够读取ESP8266发送的信息。一旦信息被读取和处理,咱们将在LCD液晶屏上进行显示。

 

若是你尚未彻底理解,不要紧,咱们将在本文的其他部分进行介绍。

 

编程ESP8266-01

本教程假定您有一些ESP8266模块的使用经验。若是没有的话,建议阅读如下三个教程以更好地理解。

●    开始使用ESP8266-01

●    使用AT命令编程ESP8266-01

●    使用Arduino IDE编程ESP8266-01并进行烧写程序

 

在这里,咱们将使用Arduino IDE编程ESP8266-01模块。硬件方面,咱们使用3.3V的FTDI板编程ESP8266,由于它可使硬件变得很是简单。下图显示了将ESP8266与FTDI板链接的电路图。

 

 

确保知足如下条件

1.  ESP8266-01模块只支持3.3V,不要使用5V。因此只能在3.3V模式下设置FTDI。

2.  编程模式下,GPIO_0必须接地

3.  复位引脚应经过按钮链接到接地引脚。上传代码以前应该按下该按钮。每次按下该按钮时,ESP8266-01模块上的蓝色LED指示灯将变为高电平,表示模块已复位。

 

链接完成后,打开Arduino IDE并检查是否能够成功上传示例程序。若是您不肯定如何使用Arduino IDE将程序上传至ESP8266,请阅读Arduino编程ESP8266进行学习。

 

如今让咱们进入实际的程序,咱们将从互联网获取数据并将其发送给Arduino。完整的程序在本文末尾处给出,我将其分开对其进行解释。该程序编译时还须要Arduino JSON库,因此若是您还没有将该库添加到Arduino IDE中,则能够经过从Github的Arduino JSON库下载并进行添加。

ESP8266必须链接互联网才能得到有关日期、时间、温度和湿度的数据。因此你在下面的代码中必须提供SSID和密码,容许它来链接到你的Wi-Fi。

  1. const char* ssid = "JIO-Fi"; //Enter your Wi-Fi SSID
  2. const char* password = "Pas123"; //Enter you Wi-Fi Password
复制代码

 

setup()函数中,咱们检查ESP是否可以链接到Wi-Fi,若是没有,只需在串行监视器上打印“Connecting ..”,它将一直等待。

  1.   while (WiFi.status() != WL_CONNECTED) { //Wait till Wi-Fi is connected
  2.     delay(1000);
  3.     Serial.print("Connecting.."); //Print Connecting.. till connection is established 
  4.   }
复制代码

 

下一步是很是重要的一步。若是Wi-Fi链接成功,咱们必须调用http get请求从互联网读取JSON文件。在本教程中,我使用wunderground.com提供的API。所以,若是您打算使用相同的API,则能够进入连接并注册免费API密钥或使用您选择的任何API。一旦你完成了你的API,你将最终获得一个以下所示的连接

http://api.wunderground.com/api/abcd124578qwert/conditions/q/IN/Chennai.json

注意:我已更改此连接的API密钥,所以这不会起做用。请注意保持您的API密钥安全,不要共享。

 

个人API用于获取Chennai的天气数据。您可使用任何API。可是当你在任何浏览器中加载API时,它应该返回一个JSON文件。例如个人API返回如下JSON文件

 

您可能会返回具备不一样数据的文件。咱们能够经过读取它来检查ESP8266是否也收到了这个JSON文件,而后在串行监视器上使用打印JSON,代码以下:

  1.   int httpCode = http.GET(); //pass a get request                                                                 
  2.     if (httpCode > 0) { //Check the returning code
  3.    //   payload = http.getString();   // Store the value on varibale Payload for debugging
  4.    // Serial.println(payload);   //Print the payload for debugging otherwise comment both lines
复制代码

 

我已经注释掉这些代码,由于它们仅用于测试。一旦确保ESP8266可以获取JSON数据,就须要对数据进行解析。正如你所看到的,这些数据量很大,除了咱们须要的数据如日期、时间、温度和湿度外,大部分数据都是无用的。

因此咱们使用JSON Arduino库来分离须要的值并将其存储在一个变量中。这种方法是可行的,由于JSON文件中的值被分配为名称值对。因此这个名字是一个字符串,它将保存咱们所需的值。

 

更多内容请参考连接:https://www.yiboard.com/thread-818-1-1.html

相关文章
相关标签/搜索