当前位置:首页 > 物联网 > IoT设计分享
[导读]物联网或IoT是指由全球数十亿个物理设备连接到互联网形成的网络,所有这些设备都在收集,处理和共享数据。由于如今基于物联网的技术的进步,有可能将任何东西变成物联网应用程序。虽然市场上有很多支持物联网的硬件,但专业人士和业余爱好者最常用的硬件之一是ESP8266-NodeMCU模块或ESP32模块。

物联网或IoT是指由全球数十亿个物理设备连接到互联网形成的网络,所有这些设备都在收集,处理和共享数据。由于如今基于物联网的技术的进步,有可能将任何东西变成物联网应用程序。虽然市场上有很多支持物联网的硬件,但专业人士和业余爱好者最常用的硬件之一是ESP8266-NodeMCU模块或ESP32模块。

说到基于ESP的模块,常用的配置之一是基于ESP的简单web服务器,但是这种基于ESP的简单web服务器存在一个问题。它运行在简单的HTTP请求上,并要求您完全刷新网页以获得任何更新的数据。

因此,在本文中,我们将通过使用ESP32制作一个web服务器来解决这个问题,该服务器将运行WebSocket通信协议,当发生更改时,它将通知所有客户端,并且网页将立即更新。我们可以使用ESP32 WebSocket Server实现两个ESP32之间的稳定通信。

什么是Websocket?

回到WWW(万维网)的黑暗时代,任何时候你想要更新网页上的任何内容,你都必须调用服务器并制作一个全新的网页(即使它只是一个点)。它不像你进去找一个网页!您必须与服务器建立一个全新的连接,然后服务器使用OK响应,之后您通常会连接。

现在,你必须向服务器发送请求,然后服务器发送回数据,当它完成后,你必须关闭连接来更新你的网页。这通常被称为HTTP请求。这个过程非常缓慢。但是,当时人们使用这种方法与服务器通信。

然后,微软有了XMLHTTP的想法,开始于1999年的请求,Outlook Web Access的开发人员为Microsoft Exchange服务器创建了它。在那之后,他们开始发布带有internet explorer5.0的库的第二个版本。这就是AJAX的工作原理。这就是Gmail如何能够列出您的电子邮件并在它们到达时更新它们。这就是Facebook如何更新你的喜欢和评论,而无需重新加载你的网页和更多。现在,一旦你建立了一个连接,你就有了你的网页。您可以在不关闭连接的情况下更新它的任何部分。这就是W3C引入WebSockets之前的情况。

使用WebSockets,你必须再做一次基本的HTTP请求,但是当你需要更新你的网页时,你只需要从服务器打开一个WebSocket端口,这花费很少的时间,使过程非常简单。

现在,我们了解了基础知识,我们可以进入实际的部分,我们将使用esp32制作WebSocket服务器。

构建ESP32 WebSocket服务器电路所需的组件

Arduino和ESP32 WebSocket服务器的电路由非常基本的组件组成,您可以在当地的业余爱好商店找到这些组件。当你积累了所有的组件,它可以很容易地建立在家里没有任何复杂性。

•ESP32-DevKit - 1

•Dht22 - 1

•Led - 1

•33R电阻- 1

•面包板- 1

•跳线- 1

ESP32 WebSocket服务器原理图

基于Arduino和ESP32的WebSocket服务器测试电路的完整原理图如下所示。

正如你在上图中所看到的,这个项目的大脑是ESP32开发板。电路如下。我们已经将LED连接到ESP32的引脚22。我们还将DHT22温湿度传感器与ESP32的引脚21连接。为了测试电路,我们将从USB供电。

基于ESP32的web服务器是如何工作的?

下图显示了服务器需要更新温度和湿度数据时发生的情况。

要访问该web服务器,首先需要输入该服务器的IP地址。在web服务器中,您可以看到来自DHT传感器的温度和湿度数据,还可以看到LED的切换按钮。

现在,如果您打开网页到其他设备,您可以看到DHT传感器数据在您的其他设备上自动更新。现在,如果你点击任何其他设备上的切换按钮,你可以在其他设备上观察到,变化同时发生。为了更好地理解,您可以观看文章末尾提供的视频。

基于Arduino的web服务器代码

由于这是一个基于web和web服务器的项目,因此代码分为两部分。前端部分和后端部分。前端部分是一个简单的HTML页面,我们将用于测试,对于后端,我们将使用Arduino IDE编写代码。

前端代码说明:

我们通过声明开始代码,声明用于通知浏览器该文档是HTML文档。接下来,我们为带有标记的头部定义所有参数。在head标签中,我们给它一个标题,并设置视点和缩放的设置。接下来,为了添加一些CSS,我们在标签中添加标签。

接下来,在<\body>标签中,我们使用。在这些标题中,我们将显示来自DHT22传感器的温度和湿度数据,我们也将能够在本节中看到LED的状态。为了打开和关闭LED,我们增加了两个按钮,一个命名为开,另一个命名为关。

接下来,我们必须实现所有WebSocket操作。我们在标签的帮助下开始编写脚本。在脚本标记中,我们首先声明一个变量,该变量将保存套接字对象。接下来,我们添加两个addEventListener(),它们将在按下两个对应按钮中的任何一个时被调用。接下来,声明一个函数init()。这个函数将在加载HTML页面时调用。在函数内部,我们定义了Socket。

当我们将它声明为一个新对象时,我们的套接字现在是一个WebSocket,它将能够连接到ESP32服务器并获取数据。在WebSocket('ws://' + window.location.hostname + ':81/')中,你可以看到,这一行请求用端口81上的IP地址连接到web套接字服务器。借助onmessage事件,我们创建了一个函数。每次接收到更新时,都会发生onmessage事件。这个事件将调用我们的函数processCommand()。在processCommand()函数中,我们解析传入的JSON并将其值放在相应的位置。最后两个函数button_1_pressed()和button_2_pressed()事件发生,当它们发生时,通过WebSocket发送1或0。

这标志着前端代码的结束。现在,我们可以继续了解Arduino IDE中的代码。

但在进入Arduino之前,我们需要将整个网页转换为字符串,因为,在Arduino IDE中,我们将把它作为字符串保存和上传。为此,转到textfixer并压缩HTML。这将使它成为一个字符串。下面的图片会让你更好地了解这个过程。

Arduino代码说明:

要在Arduino IDE中编译代码,首先,您需要在board manager方法的帮助下下载一些WebSocket库,或者您可以使用下面给出的链接。

•下载DHT传感器库

•下载Websockets库由Links2004

•下载Arduino JSON库

安装完所有库后,我们需要将它们包含在Arduino代码中。

接下来,我们定义DHT传感器的类型和我们用来连接到它的引脚。

接下来,我们为网络定义SSID和Password。

我们将使用mills()函数更新特定时间段内的温度数据,因此我们需要声明一些变量。

接下来,我们声明一个字符串类型的变量web,我们将在其中存储整个网页。这个字符串类型变量的内容就是您将在网页上看到的内容。

接下来,我们再次声明一些String类型的变量来存储一些有价值的数据。

接下来,我们为DHT传感器、web服务器和WebSocket服务器创建实例。

在循环部分,我们调用webserver Handle client方法来处理所有的webserver客户端,我们也调用WebSocket server loop方法来处理所有的WebSocket客户端。接下来,我们调用millis函数来更新温度和湿度数据。

接下来我们有webSocketEvent()函数。这个函数在WebSocket事件发生时被调用。在本节中,我们将检查状态并打印连接的客户端数量。接下来,我们检查客户端是否通过WebSocket连接。如果是,我们在网页上更新状态。接下来,我们检查web服务器是否向我们发送了任何数据作为响应。如果是,我们处理它,并根据状态;我们打开或关闭附加的LED。

update_temp_hum()函数用于更新温度和湿度数据。

接下来,我们有了update_网页()函数。在这个函数中,我们用所有的值更新网页。在这个函数中,我们创建了一个JSON对象,我们在这个对象中打印信息只是为了调试。接下来,我们在webSocket.broadcasrTXT(jsonString)的帮助下广播JSON对象中的数据;函数。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭