1.esp32/esp8266相关介绍:
1.1ESP-WIFI工作模式:
ESP共有三种工作模式,分别是无线接入点模式(AP)、无线终端模式STA(Wireless Station)以及混合模式(以上两种模式的混合)。
2.网络连接:
ESP的WiFi设置是储存在它的闪存系统中的。因此在启动ESP8266并连接WiFi时,它都会尝试使用闪存系统中储存的信息来进行WiFi连接
连接网络基本步骤:
1.引用WiFi库 #include <WiFi.h> / esp8266使用<ESP8266WiFi.h>
2.配置STA模式下IP地址 config()(非必须)
3.开启STA模式,连接AP WiFi.begin(ssid, password);
3.配置和代码:
本次我使用的是STA模式接入已创建的AP,再使用ESP利用互联网或局域网向网络服务器发送HTTP请求,并且分析网络服务器返回的HTTP响应信息,进行相应的控制
//#include <ESP8266WiFi.h>
//#include <WiFi.h> ESP32使用这个头文件就行
#ifndef STASSID
#define STASSID "小奇" // 要接入的wifi名称
#define STAPSK "********" // wifi密码
#endif
// esp与被控设备接入同一局域网下 进行网页端HTTPX响应远程控制
const char* ssid = STASSID;
const char* password = STAPSK;
//http://IP/gpio/(0/1)打开网页端控制(低电平亮)
//IP连接成功后由串口发送给上位机
//创建服务器,监听指定端口(led)
WiFiServer server(80);
void setup() {
Serial.begin(115200);
// LED
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, 0);
// 连接 WiFi
Serial.println();
Serial.println();
Serial.print(F("Connecting to "));
Serial.println(ssid);
// STA模式
WiFi.mode(WIFI_STA);
// 开始接入AP
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println();
Serial.println(F("WiFi connected"));
// 开始连接 WiFi
server.begin();
Serial.println(F("Server started"));
// 打印IP地址
Serial.println(WiFi.localIP());
}
void loop() {
// 检查是否连接成功
WiFiClient client = server.available();
if (!client) {
return;
}
Serial.println(F("new client"));
client.setTimeout(5000); // 默认值1000
// 读取第一行指令
String req = client.readStringUntil('\r');
Serial.println(F("request: "));
Serial.println(req);
// 匹配相应指令
int val;
if (req.indexOf(F("/gpio/0")) != -1) {
val = 0;
} else if (req.indexOf(F("/gpio/1")) != -1) {
val = 1;
} else {
Serial.println(F("invalid request"));
val = digitalRead(LED_BUILTIN);
}
// 设定led状态
digitalWrite(LED_BUILTIN, val);
//读取
while (client.available()) {
client.read();
}
//发送响应给客户端
client.print(F("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now "));
client.print((val) ? F("high") : F("low"));
client.print(F("<br><br>Click <a href='http://"));
client.print(WiFi.localIP());
client.print(F("/gpio/1'>here</a> to switch LED GPIO off, or <a href='http://"));
client.print(WiFi.localIP());
client.print(F("/gpio/0'>here</a> to switch LED GPIO on.</html>"));
//客户端实际上会被刷新,然后断开连接
//当函数返回时,'client'对象被销毁(超出范围)
// flush =确保写入的数据被对方接收
Serial.println(F("Disconnecting from client"));
}
然后建议的话是直接下载arduino编译器,下载对应的包即可,vscode可能还需要进行一些环境的配置。
然后复制上方代码就可以实现接入WIFI然后在服务端链接进行远程控制了,我这次做的是简单的LED控制,如有需要可以自行进行修改从而达到大家的需求
以上便是本文的所有内容,希望能帮到大家,谢谢!