ESP32做AP,ESP8266做station,遥控

 

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);
}

  

 

posted @ 2025-09-17 15:24  多多和羊羊  阅读(20)  评论(0)    收藏  举报