首页

如何通过Internet控制ESP8266 ?

在前面的项目中,我向您展示了一个简单的设置Wifi控制led使用esp8266和arduino.在这个项目中,我将向您展示如何通过Internet控制ESP8266,即从世界上任何地方通过Internet控制ESP8266。

概述

尽管ESP8266 WiFi模块的主要目的是将互联网连接引入到我们的小型DIY项目中,但我认为直到现在我们还没有完全利用ESP8266 WiFi模块的功能,即一个真正的物联网(Internet of Things)项目。

我想把ESP8266项目更进一步,通过在互联网上实际控制ESP8266。在这个过程中,我们将学习如何通过Internet控制一个LED(只是为了演示工作)连接到ESP8266 WiFi模块的一个GPIO引脚,即另一个与ESP8266没有连接的网络。

这和WiFi控制的LED项目有什么不同?

非常好的问题。这个项目和之前的项目实际上有两个不同之处。第一个区别是ESP8266 WiFi模块是如何控制的。在之前的项目中,我通过WiFi网络控制ESP8266,即从计算机或电话连接到与ESP8266相同的网络。

来到这个项目,目的是控制ESP8266通过互联网,即从计算机或电话在世界上任何地方与互联网连接。

第二个区别是ESP8266 WiFi模块的配置方式。如果你还记得的话,我特别提到过ESP8266 WiFi模块必须带有AT命令固件,我们将通过上传到Arduino的程序控制ESP8266。

但是,在这个项目中,我将直接将代码上传到ESP8266 WiFi模块的ROM中(现有的程序或固件将被删除)。

既然我们已经看到了差异,让我们继续进行电路图和该项目的电路设计。

线路图

下面的电路是用来通过internet控制ESP8266的。让我们先看一下元件,然后我将详细解释电路的设计。

如何通过网络电路图控制ESP8266

下图为电路图中ESP8266 WiFi模块的引脚图。实际引脚图请参考开始使用esp8266和arduino项目。

ESP8266 Arduino图像

组件的要求

  • Arduino UNO(作为USB到串行转换器)
  • ESP8266 (ESP-01) WiFi模块
  • 滑动开关(SPDT开关)
  • 按钮
  • 1 KΩ电阻器(1/4瓦)
  • 2.2 KΩ电阻器(1/4瓦)
  • 330 Ω电阻(1/4瓦)
  • 领导
  • 连接电线
  • 微型电路试验板

注意:

  • Arduino UNO被用作USB到串行转换器。所以,我已经从Arduino UNO板上删除了ATmega328p微控制器。如果你有一个专用的USB到串行转换器(USB到ttl),那么你就不需要Arduino。
  • 此外,我已经做了一个简单的ESP8266 Breakout板在早期的项目称为为esp8266 Diy PCB.它包含与ESP8266 WiFi模块相关的所有重要组件。我将在这个项目中使用相同的板。

电路设计

将ESP8266的VCC和GND连接到Arduino的3.3V和GND上。CH_PD引脚也连接到3.3V电源。复位引脚和GND之间连接有一个按钮。

ESP8266 WiFi模块的TX引脚连接到Arduino的TX引脚,ESP8266的RX引脚连接到Arduino的RX引脚,但通过一个由两个电阻(1 KΩ和2.2 KΩ)组成的分压器。

一个LED连接到ESP8266的GPIO2引脚上。最后,将GPIO0引脚连接到SPDT开关的极(滑动开关的中心端)上。交换机的一个抛出端子连接到GND,另一个抛出端子敞开,但可以用于GPIO连接。

代码

下面的程序必须上传到ESP8266 WiFi模块。它将设置WiFi连接,并创建一个简单的HTML页面,可以使用ESP8266的IP地址访问。

注意:

  • 在将代码上传到ESP8266之前,确保在Arduino Boards部分中选择了“Generic ESP8266 Module”。
  • 有关如何将程序上传到ESP8266的更多信息,请参阅ESP8266和Arduino项目入门。
  • 在代码中输入您的WiFi网络的详细信息。
  • 我在代码中为ESP8266 WiFi模块分配了一个静态IP地址为“192.168.1.254”。在确认没有其他设备使用此IP地址后,我选择了此地址。在分配静态IP地址时也要注意这一点。
  • 除了静态IP地址,还必须提供其他信息,如默认网关和子网掩码。您可以通过在Windows的命令提示符中输入“ipconfig”来找到它。

工作

为了上传代码,将GPIO0引脚滑动到编程模式(将GPIO0连接到GND)并按下RESET开关。在Arduino IDE中选择正确的单板和端口后,上传代码。

一旦代码上传,将开关滑动到正常模式,按一次RESET按钮。打开串行显示器。在那里你可以看到WiFi连接的细节。

如何通过Internet串行监视器控制ESP8266

您还可以看到ESP8266 WiFi模块的IP地址。因为我分配了一个静态IP地址,我将得到相同的。如果您选择不分配静态IP地址,那么使用路由器分配的地址。

在代码中,我在端口255处创建了服务器。因此,服务器的URL将是http://192.168.1.254:255。

在连接到同一WiFi网络的电脑或手机上打开浏览器,输入上述URL。一个简单的HTML页面将被打开,只有很少的文本和链接。下图是一个打开了URL的手机的截图。

如何通过网络场景控制ESP8266

你可以点击特定的链接来控制LED本地,即在WiFi网络内。

如何通过Internet控制ESP8266 ?

现在,通过互联网控制ESP8266 WiFi模块的关键部分。有两种方法可以实现这一点。一种方法是使用端口转发,我将在这个项目中使用,另一种方法是使用专用的远程服务器,如ThingSpeak或aREST。

由于我已经设置了静态IP地址到我的ESP8266 WiFi模块,下一步是继续端口转发。

从任何浏览器打开您的路由器页面,并使用路由器登录详细信息登录。转到路由器的端口转发页面(取决于路由器,在我的情况下是I WAN设置)。

启用端口转发,提供必要的详细信息,如本地服务器IP地址(ESP8266的静态IP地址)、端口号等,并保存设置。

如何在Internet路由器上控制ESP8266

现在,转到具有高级安全设置的Windows防火墙并添加一个新的入站规则。选择“端口”的规则类型,并指定端口号。

打开任何浏览器,搜索“我的ip地址是什么”。它的结果是路由器的WAN IP地址。记录下来。

现在,从另一台计算机(任何没有连接到与ESP8266相同WiFi网络的计算机)上,输入您刚才记下的IP地址和端口号。例如,如果您的IP地址是183.92.192.58,端口号是255,那么在任何web浏览器中输入“183.92.192.58:255”。现在您将得到HTML页面来控制LED。

重要提示:

  • 不建议使用端口转发,因为它将计算机向外界开放,很容易受到病毒或恶意软件的攻击。
  • 此外,许多isp (Internet Service provider)不允许端口转发。
  • 另一种选择是使用专用的安全服务器,如ThingSpeak或aREST。
  • 在下一个项目中,我将向您展示如何使用这些服务之一从internet控制ESP8266。

3反应

  1. “另一种选择是使用专用的安全服务器,如ThingSpeak或aREST。”

    亲爱的先生,
    你能给我一个做这个项目的指导吗

    提前谢谢你

  2. 我可以在esp 8266和手动开关之间使用什么来通信…并通过我们的应用程序和开关得到结果…

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map