ESP8266 (Station模式) → 发送数据 → ESP32 (AP模式) → 接收并处理数据
ESP32 (AP接收端) 代码
#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>
// 设置AP的网络名称和密码
const char *ssid = "ESP32_AP";
const char *password = "12345678";
WiFiServer server(80); // 使用80端口创建服务器
void setup() {
Serial.begin(115200);
delay(1000);
// 启动AP模式
Serial.println("正在启动AP...");
WiFi.softAP(ssid, password);
// 获取AP的IP地址
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP地址: ");
Serial.println(myIP);
// 启动服务器
server.begin();
Serial.println("服务器已启动");
}
void loop() {
// 检查是否有客户端连接
WiFiClient client = server.available();
if (client) {
Serial.println("新的客户端连接");
// 检查客户端是否连接
while (client.connected()) {
// 检查是否有数据可读
if (client.available()) {
String line = client.readStringUntil('\r');
Serial.print("收到数据: ");
Serial.println(line);
// 发送响应
client.println("数据已接收");
}
}
// 关闭连接
client.stop();
Serial.println("客户端断开连接");
}
delay(10);
}
ESP8266 (发送端) 代码
#include <ESP8266WiFi.h>
// 要连接的AP的SSID和密码
const char* ssid = "ESP32_AP";
const char* password = "12345678";
// AP的IP地址
const char* host = "192.168.4.1"; // ESP32 AP的默认IP
const int port = 80; // 服务器端口
void setup() {
Serial.begin(115200);
delay(10);
// 连接到AP
Serial.println();
Serial.print("正在连接到 ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi连接成功");
Serial.print("IP地址: ");
Serial.println(WiFi.localIP());
}
void loop() {
// 创建WiFiClient对象
WiFiClient client;
// 尝试连接到服务器
if (!client.connect(host, port)) {
Serial.println("连接服务器失败");
delay(1000);
return;
}
// 创建要发送的数据
String data = "Hello from ESP8266 - " + String(millis());
// 发送HTTP请求
client.println("GET /" + data + " HTTP/1.1");
client.println("Host: " + String(host));
client.println("Connection: close");
client.println();
// 等待服务器响应
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> 客户端超时 !");
client.stop();
return;
}
}
// 读取服务器响应
while (client.available()) {
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("连接关闭");
// 等待5秒后再次发送
delay(5000);
}