通过互联网控制ESP8266
文件列表(压缩包大小 2.54K)
免费
概述
在上一个项目中,我向你展示了**使用ESP8266和ARDUINOWIFI控制LED**的原理。在这个项目中,我将向你展示如何通过Internet控制ESP8266,即从世界各地通过Internet控制ESP8266。
尽管ESP8266 WiFi模块的主要目的是将Internet连接引入我们的小型DIY项目,但我相信到目前为止,我们还没有完全利用ESP8266 WiFi模块的功能,即真正的IoT(物联网)项目。
我想通过实际通过互联网控制ESP8266,使ESP8266项目更进一步。在此过程中,我们将学习如何通过控制通过Internet连接到ESP8266 WiFi模块的GPIO引脚之一的LED(仅用于演示工作原理)来通过Internet控制ESP8266,即连接ESP8266到另一个网络。
实际上,该项目与早期项目之间存在两个差异。第一个区别是ESP8266 WiFi模块的控制方式。在上一个项目中,我通过WiFi网络(即从与ESP8266连接到同一网络的计算机或电话)控制ESP8266。
进入此项目的目的是通过互联网(即,具有互联网连接功能的世界上任何地方的计算机或电话)控制ESP8266。
第二个区别是ESP8266 WiFi模块的配置方式。如果你还记得,我特别提到必须使用AT Commands固件来刷新ESP8266 WiFi模块,我们将通过上载到Arduino的程序来控制ESP8266。
但是,在这个项目中,我将代码直接上传到ESP8266 WiFi模块的ROM中(现有的程序或固件将被删除)。
现在我们已经看到了区别,让我们继续进行项目的电路图和电路设计。
以下电路用于通过互联网控制ESP8266。首先让我们看一下这些组件,然后再详细解释该电路的设计。
下图显示了电路图中使用的ESP8266 WiFi模块的引脚。有关实际的引脚图,请参考ESP8266和ARDUINO项目入门。
注意:
将ESP8266的VCC和GND连接到Arduino的3.3V和GND。CH_PD引脚也连接到3.3V电源。复位引脚和GND之间连接了一个按钮。
ESP8266 WiFi模块的TX引脚连接到Arduino的TX引脚,ESP8266的RX引脚通过两个电阻(1KΩ和2.2KΩ)组成的分压器连接到Arduino的RX引脚。
一个LED连接到ESP8266的GPIO2引脚。最后,GPIO0引脚连接到SPDT开关的极点(滑动开关的中心端子)。开关的一个掷端连接到GND,另一个掷端保持开路,但可用于GPIO连接。
以下程序必须上载至ESP8266 WiFi Module。它将建立WiFi连接并创建一个简单的HTML页面,可使用ESP8266的IP地址进行访问。
#include <ESP8266WiFi.h>
const char* ssid = "SSID";//type your ssid
const char* password = "PASSWORD";//type your password
int ledPin = 2; // GPIO2 of ESP8266
WiFiServer ESPserver(255);//Service Port
void setup()
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
/*
The following four line of the
code will assign a Static IP Address to
the ESP Module. If you do not want this,
comment out the following four lines.
*/
IPAddress ip(192,168,1,254);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
WiFi.config(ip, gateway, subnet);
delay(5000);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
ESPserver.begin();
Serial.println("Server started");
// Print the IP address
Serial.print("Enter this URL to control ESP8266: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println(":255"); //"/255" is the Server Port.
}
void loop()
{
// Check if a client has connected
WiFiClient client = ESPserver.available();
if (!client)
{
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available())
{
delay(1);
}
// Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// Match the request
int value = LOW;
if (request.indexOf("/LED=ON") != -1)
{
Serial.println("LED is ON");
digitalWrite(ledPin, HIGH);
value = HIGH;
}
if (request.indexOf("/LED=OFF") != -1)
{
Serial.println("LED is OFF");
digitalWrite(ledPin, LOW);
value = LOW;
}
// Return the response
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // IMPORTANT
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Status of the LED: ");
if(value == HIGH)
{
client.print("ON");
}
else
{
client.print("OFF");
}
client.println("<br><br>");
client.println("Click <a href=\"/LED=ON\">here</a> to turn ON the LED<br>");
client.println("Click <a href=\"/LED=OFF\">here</a> to turn OFF the LED<br>");
client.println("</html>");
delay(1);
Serial.println("Client disconnected");
Serial.println("");
}
注意:
为了上传代码,将GPIO0引脚滑至编程模式(将GPIO0连接至GND),然后按RESET开关。在Arduino IDE中选择正确的板卡和端口后,上传代码。
上载代码后,将开关滑动到普通模式,然后按一下RESET按钮。打开串行监视器。在那里你可以看到WiFi连接的详细信息。
你还可以查看ESP8266 WiFi模块的IP地址。由于我分配了静态IP地址,因此我将得到相同的地址。如果你选择不分配静态IP地址,请使用路由器分配的地址。
在代码中,我在端口255上创建了服务器。因此,服务器的URL将为http://192.168.1.254:255。
在连接到同一WiFi网络的计算机或电话中打开网络浏览器,然后输入上述URL。将打开一个简单的HTML页面,其中包含少量文本和链接。下图是打开URL的手机的屏幕截图。
你可以单击特定链接以在本地(即WiFi网络内)控制LED。
现在,通过互联网控制ESP8266 WiFi模块的技巧部分。有两种方法可以实现此目的。一种方法是使用端口转发,我将在本项目中使用该端口,另一种方法是使用专用的远程服务器,如ThingSpeak或aREST。
由于我已经为ESP8266 WiFi模块设置了一个静态IP地址,下一步是继续进行端口转发。
从任何浏览器打开路由器页面,然后使用路由器登录详细信息登录。转到路由器的“端口转发”页面(取决于路由器,在我的情况下是I WAN设置)。
启用端口转发并提供必要的详细信息,例如本地服务器IP地址(ESP8266的静态IP地址),端口号等,并保存设置。
现在,转到具有高级安全设置的Windows防火墙并添加新的入站规则。选择“端口”的规则类型并指定端口号。
打开任何网络浏览器,然后搜索“我的IP地址是什么”。它生成路由器的WAN IP地址。记下来。
现在,从另一台计算机(未与ESP8266连接到同一WiFi网络的任何计算机)中,键入你刚刚记下的IP地址以及端口号。例如,如果你的IP地址为183.92.192.58,端口号为255,则在任何Web浏览器中键入“ 183.92.192.58:255”。现在,你将获得HTML页面来控制LED。
重要的提示:
所有需要的文件在下载区均可找到。
via:https://www.electronicshub.org/control-esp8266-over-internet/
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)