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);// 连接到APSerial.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); }