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

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

所需的材料

●    Arduino开发板

●    ESP8266-01模块

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

●    液晶显示屏1602

●    电位器

●    按钮

●    连接导线

●    面包板

如何工作的?

在我们深入研究之前,了解这件事情的实际情况非常重要。我们需要从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

使用Arduino开发板和ESP8266从互联网读取数据的更多相关文章

  1. x86 构架的 Arduino 开发板Intel Galileo

    RobotPeak是上海的一家硬件创业团队,团队致力于民用机器人平台系统.机器人操作系统(ROS)以及相关设备的设计研发,并尝试将日新月异的机器人技术融入人们的日常生活与娱乐当中.同时,RobotPe ...

  2. 基于 Arduino 开发板,这款插座是可编程且开源的

    基于 Arduino 开发板,这款插座是可编程且开源的 https://www.oschina.net/news/74861/open-source-socket https://github.com ...

  3. 使用Arduino开发板连接干簧管(Reed Switch)的方法

    在现实生活中,干簧管(Reed Switch)有许多重要的应用,如磁性门开关.笔记本电脑.智能手机等.在本篇文章中,我们将了解一些干簧管的知识,并介绍如何使用Arduino开发板连接干簧管. 干簧管( ...

  4. 使用Arduino开发板实现与MPU6050陀螺仪传感器连接的方法

    MPU6050陀螺仪传感器具有许多强大的功能,采用单芯片封装.它是由一个MEMS加速度计.一个MEMS陀螺仪和温度传感器组成.该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16位的模数转 ...

  5. 使用Arduino开发板制作交流电压表

    在本文中,我们将使用Arduino开发板制作一个交流电压测量装置,测量我们家中交流电源的电压.我们将在Arduino IDE的串行监视器上打印输出该电压,并在万用表上显示出来. 制作数字电压表比模拟电 ...

  6. 开发板通过UART向主机发送数据

    /********************************* 代码功能:开发板通过UART向主机发送数据 使用函数: Serial.begin(数据传输的波特率); Serial.printl ...

  7. 使用C#应用程序与Arduino开发板进行通信

    在本文中,我们将一个Arduino Pro Mini开发板连接到PC,并且使用C# Windows应用程序与其进行通信. 将硬件连接到PC是非常有利的,不仅是因为你可以发送命令以及监控状态,还可以实时 ...

  8. 物联网 开发板 基于ESP8266

    The ESP8266 The ESP8266 is a highly integrated chip designed for the needs of an increasingly connec ...

  9. 使用Arduino开发板控制步进电机

    目前为止,我还没有真正深入了解过电机,特别是步进电机. 最近我在计划一个项目,需要相对精确的电机控制,所以可能会使用到步进电机,但很快就意识到我首先应该更多地了解这些. 本篇文章主要介绍我到目前为止学 ...

随机推荐

  1. nginx入门系列之安装与卸载

    目录 通过包管理器安装 安装nginx 卸载nginx 从源码编译安装 准备安装环境 执行编译安装 制作nginx免安装包 官方安装手册:https://nginx.org/en/docs/insta ...

  2. lnmp卸载删除多余的php版本

    /etc/init.d/php-fpm5.3 stoprm -rf /usr/local/php5.3rm -f /etc/init.d/php-fpm5.3rm -f /usr/local/ngin ...

  3. [IISNode] 如何在IIS7/8下,配置一个可以通过IIS访问NodeJS的web项目

    参考了一下几篇很给力的文章,在每篇文章中,都学到了解决遇到的问题的答案: (1)用iisnode模块,让你的Node.js应用跑在Windows系统IIS中 (2)让IIS能够运行Nodejs (3) ...

  4. td宽度自适应 窄的地方自动收缩

    .layui-table td,.layui-table th { white-space: nowrap; width: auto; min-width: 0px!important; } 不换行! ...

  5. CentOS7-Docker 搭建Maven私服

    使用Docker搭建Maven私服 前言本文主要介绍,使用Docker创建一个nexus私服,然后编写一个Library,上传到私服,然后使用demo工程依赖. 本文不对Maven.Nexus.私服等 ...

  6. Docker Swarm部署集群

    一.Swarm简介 Swarm是Docker的一个编排工具,参考官网:https://docs.docker.com/engine/swarm/ Swarm 模式简介 要在Swarm模式下运行dock ...

  7. Python调用Matlab2014b引擎

    用惯Python的你,是不是早已无法忍受matplotlib那丑陋无比的图以及蛋疼无比部署依赖? 当当当当,Matlab2014b的Python Engine API现已加入豪华午餐. 上次写了一篇文 ...

  8. H5页面跳转与传值

    页面之间的跳转经常使用a标签,使用mvc框架的都是通过访问controller的请求方法,返回请求页面.但本次开发,前端与后台完全分离,前端APP使用HBuider来开发,后台数据就无法使用mvc框架 ...

  9. SSO实现机制

    引言 单点登录有许多开发商提供解决方案,本文以yale大学SSO开源项目CAS为例,介绍单点登录实现机制. 术语解释 SSO-Single Sign On,单点登录 TGT-Ticket Granti ...

  10. Matlab外观模式

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.本文以计算机为例,用Matlab代码实现外观模式.计算机包括CPU.内存以及硬盘等这些部件.用户 ...