在许多物联网应用中,有些情况下需要连续监控传感器数据,而最简单的方法是通过启用为HTML网页提供服务的ESP8266 Web服务器。但是这种方法的问题在于,必须以特定的时间间隔刷新Web浏览器才能获取更新的传感器数据。这不仅效率低下,而且需要很多时钟周期才能执行其他任务。该问题的解决方案称为“异步JavaScript和XML”或简称AJAX。使用AJAX,我们可以监视实时数据而无需刷新整个网页,这不仅节省了时间,而且还节省了宝贵的时钟周期。跟随本文,您将学习如何在ESP8266上实现基于AJAX的Web服务器。
什么是AJAX?
如前所述, AJAX代表“异步JavaScript和XML”,可用于更新网页的一部分,而无需重新加载所需页面。它是通过自发请求和接收来自服务器的数据来实现的。AJAX的功能是异步更新Web内容。这意味着当页面上仅一部分内容需要更新时,用户的Web浏览器不需要刷新整个网页。
AJAX的日常示例将是Google的建议功能,当我们在Google搜索栏中键入内容时,Google会开始建议相关的搜索字符串。在此过程中,不会重新加载网页,但是需要更改的信息会使用AJAX在后台更新。
AJAX如何工作?
AJAX只使用-
- XML(可扩展标记语言)
- JavaScript和HTML
- XML(可扩展标记语言):
XML是一种标记语言。XML主要用于接收具有特定格式的服务器数据。尽管它可以接收纯文本形式的数据。当用户访问网页并发生事件时(在我们的例子中为“按钮按下”),JavaScript创建一个XMLHttpRequest对象,该对象随后以XML格式在Web浏览器和Web服务器之间传输信息。XMLHttpRequest对象将对更新的页面数据的请求发送到Web服务器,服务器处理该请求,在服务器端创建一个响应,然后将其发送回浏览器,然后浏览器使用JavaScript处理该响应并将其显示在网页上。
- JavaScript和HTML:
JavaScript在AJAX中执行更新过程。对更新内容的请求以XML进行格式化,以使其易于理解,并且JavaScript刷新了该内容,供用户查看更新的页面。
AJAX工作:
如上图所示,对于AJAX请求,浏览器使用JavaScript将XMLHttpRequest发送到服务器。该对象包括告诉服务器正在请求什么的数据。服务器仅响应从客户端请求的数据。然后,浏览器接收数据,仅更新页面中需要更新的部分,而不是重新加载整个网页。
构建基于AJAX和ESP8266的Web服务器所需的组件
由于我们正在构建项目以演示esp8266处理AJAX的功能,因此组件要求非常小,您可以在本地的业余商店中找到大多数组件。
- NodeMCU X 1
- LM35温度传感器X 1
- LED X 1
- 面包板X 1
- 跳线X 4
- 编程电缆X 1
Ajax和ESP8266 Web服务器-电路图
基于AJAX的Web服务器的电路图如下所示。
由于电路非常简单,因此无需多解释。我们已将带有150欧姆限流电阻的LED连接到ESP8266的D0引脚,如您所见,我们可以使用网络服务器对其进行切换。接下来,我们有了LM35温度传感器,通过它我们将读取温度值并将其更新到网页。温度传感器由3.3V电源供电,由于LM35是模拟传感器,因此我们使用ESP8266板的A0引脚测量数据。如果您是第一次接触LM35温度传感器,或者想了解更多有关这种非常酷的小传感器的信息,可以查看我们之前在有关使用NodeMCU和LM35的数字温度计的文章,我们在其中讨论了该传感器的工作原理。详情。
ESP8266的基于AJAX的Web服务器代码
在继续进行下一步之前,让我们直接深入该程序,以了解 NodeMCU Web服务器将如何工作。但是在此之前,请确保已为ESP8266设置了Arduino IDE。如果没有设置,则可以继续下一部分,否则可以跳过此部分。如果您有兴趣了解有关Web服务器和基于IoT的项目的更多信息,可以查看我们之前讨论过的帖子