esp32为热点且每次新建IP一致,实现MCU串口与PC无线WiFi互相通信,切用不断开的例程
时间: 2024-04-16 17:29:38 浏览: 130
基于STM32单片机与wifi模块串口结合进行PC端或手机端无线通信esp8266
以下是一个使用ESP32作为热点,且每次新建IP保持一致的例程,实现MCU串口与PC无线WiFi互相通信,并保持连接不断开:
```cpp
#include <WiFi.h>
const char* ssid = "ESP32_Hotspot"; // 热点的名称
const char* password = "12345678"; // 热点的密码
IPAddress ip(192, 168, 1, 1); // 设置静态IP地址
IPAddress gateway(192, 168, 1, 1); // 设置网关
IPAddress subnet(255, 255, 255, 0); // 设置子网掩码
WiFiServer server(80); // 创建WiFi服务器对象,监听端口80
WiFiClient client; // WiFi客户端对象
void setup() {
Serial.begin(115200); // 初始化串口波特率为115200
WiFi.softAPConfig(ip, gateway, subnet); // 设置ESP32的静态IP地址、网关和子网掩码
WiFi.softAP(ssid, password); // 设置ESP32为热点模式
IPAddress IP = WiFi.softAPIP(); // 获取ESP32的IP地址
Serial.print("Hotspot IP address: ");
Serial.println(IP);
server.begin(); // 启动WiFi服务器
Serial.println("Server started");
}
void loop() {
if (!client.connected()) { // 如果客户端连接断开
client = server.available(); // 等待客户端连接
if (client) {
Serial.println("New client connected");
while (client.connected()) { // 当连接保持时
if (client.available()) { // 检查客户端是否发送了数据
String data = client.readStringUntil('\n'); // 读取客户端发送的数据
// 在这里进行处理收到的数据,例如打印到串口终端或执行相应操作
Serial.println("Received data from client: " + data);
}
if (Serial.available()) { // 检查串口是否有数据发送
String data = Serial.readStringUntil('\n'); // 读取串口发送的数据
// 在这里进行处理发送的数据,例如发送给WiFi客户端或执行相应操作
client.println(data); // 将数据发送给WiFi客户端
}
}
client.stop(); // 断开与客户端的连接
Serial.println("Client disconnected");
}
}
}
```
在这个例程中,我们将ESP32设置为热点模式,热点的名称为"ESP32_Hotspot",密码为"12345678"。我们通过`WiFi.softAPConfig()`函数设置了一个静态IP地址、网关和子网掩码,保证每次新建热点时IP地址保持一致。在`setup()`函数中,我们通过`WiFi.softAP()`函数设置ESP32为热点模式,并获取ESP32的IP地址。然后,我们创建了一个WiFi服务器对象,并通过`server.begin()`函数启动WiFi服务器。
在`loop()`函数中,我们首先检查WiFi客户端连接是否断开。如果客户端连接断开,我们使用`server.available()`函数等待客户端连接,并将连接保存在`client`对象中。一旦有客户端连接成功,我们进入一个循环,检查客户端是否发送了数据。如果客户端发送了数据,我们使用`client.readStringUntil('\n')`函数读取数据,并进行相应处理。在这个例程中,我们将接收到的数据打印到串口终端。
同时,我们也检查串口是否有数据发送。如果串口有数据发送,我们使用`Serial.readStringUntil('\n')`函数读取数据,并将数据发送给WiFi客户端。
这样,MCU串口和PC通过无线WiFi热点建立了双向通信,并保持连接不断开。同时,每次新建热点时IP地址保持一致。
请注意,在这种模式下,ESP32将作为热点运行,PC需要连接到ESP32创建的热点网络,并通过串口终端向ESP32发送数据。ESP32将接收串口数据并发送到连接的WiFi客户端,同时接收WiFi客户端发送的数据并打印到串口终端。
这只是一个简单的例程,你可以根据自己的需求进行扩展和修改。希望对你有帮助!
阅读全文