ESP32 转 ESP32 AP/client WiFi 连接问题
ESP32 to ESP32 AP/client WiFi connection problem
尝试从一个 ESP32 与另一个 ESP32 通信,其中一个充当 AP,另一个充当客户端,但似乎无法将 esp 客户端连接到 esp AP,但使用我的智能手机连接到 AP works.Sorry 如果这似乎是一个简单的问题,我是esp32s和WiFI通信的新手。
接入点代码
#include <WiFi.h>
const char* ssid = "ESP32-Access-Point";
const char* password = "SyedAhmedAli";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
Serial.println("Setting AP (Access Point)…");
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
Serial.print("MAC address: ");
Serial.println(WiFi.softAPmacAddress());
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Listen for incoming clients
if (client)
{ Serial.println("New Client.");
while (client.connected())
{
Serial.println(client.connected());
Serial.println("Client connected.");
Serial.println("");
}
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}
客户端代码
#include <WiFi.h>
#include <SPI.h>
const char* ssid = "ESP32-Access-Point";
const char* password = "SyedAhmedAli";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
scanNetworks();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
}
void loop() {
}
void scanNetworks() {
// scan for nearby networks:
Serial.println("** Scan Networks **");
byte numSsid = WiFi.scanNetworks();
// print the list of networks seen:
Serial.print("SSID List:");
Serial.println(numSsid);
// print the network number and name for each network found:
for (int thisNet = 0; thisNet<numSsid; thisNet++) {
Serial.print(thisNet);
Serial.print(") Network: ");
Serial.println(WiFi.SSID(thisNet));
}
}
正如@juraj 所提到的,在 ESP32 的 Arduino 代码中,您无法在尝试连接到 AP 时启动扫描。
在尝试连接之前调用 scanNetworks()
(在 WiFi.begin(ssid, password);
之前)。
或
在与 AP 建立连接后调用 scanNetworks()
(在 while (WiFi.status() != WL_CONNECTED){}
之后)。
无论如何,我在尝试连接到已知的 WiFi AP 时没有看到扫描网络的任何意义。
ESPnow(参见示例 here)很容易实现 ESP 到 ESP 的通信。 (还有 ESP8266 等)
尝试从一个 ESP32 与另一个 ESP32 通信,其中一个充当 AP,另一个充当客户端,但似乎无法将 esp 客户端连接到 esp AP,但使用我的智能手机连接到 AP works.Sorry 如果这似乎是一个简单的问题,我是esp32s和WiFI通信的新手。
接入点代码
#include <WiFi.h>
const char* ssid = "ESP32-Access-Point";
const char* password = "SyedAhmedAli";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
Serial.println("Setting AP (Access Point)…");
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
Serial.print("MAC address: ");
Serial.println(WiFi.softAPmacAddress());
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Listen for incoming clients
if (client)
{ Serial.println("New Client.");
while (client.connected())
{
Serial.println(client.connected());
Serial.println("Client connected.");
Serial.println("");
}
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}
客户端代码
#include <WiFi.h>
#include <SPI.h>
const char* ssid = "ESP32-Access-Point";
const char* password = "SyedAhmedAli";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
scanNetworks();
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
}
void loop() {
}
void scanNetworks() {
// scan for nearby networks:
Serial.println("** Scan Networks **");
byte numSsid = WiFi.scanNetworks();
// print the list of networks seen:
Serial.print("SSID List:");
Serial.println(numSsid);
// print the network number and name for each network found:
for (int thisNet = 0; thisNet<numSsid; thisNet++) {
Serial.print(thisNet);
Serial.print(") Network: ");
Serial.println(WiFi.SSID(thisNet));
}
}
正如@juraj 所提到的,在 ESP32 的 Arduino 代码中,您无法在尝试连接到 AP 时启动扫描。
在尝试连接之前调用 scanNetworks()
(在 WiFi.begin(ssid, password);
之前)。
或
在与 AP 建立连接后调用 scanNetworks()
(在 while (WiFi.status() != WL_CONNECTED){}
之后)。
无论如何,我在尝试连接到已知的 WiFi AP 时没有看到扫描网络的任何意义。
ESPnow(参见示例 here)很容易实现 ESP 到 ESP 的通信。 (还有 ESP8266 等)