1

我正在做一个项目,我需要将 esp32 设置为接入点,并将一些 esp8266-01 设置为客户端。

然后我在每个 esp822 芯片上运行一个 Web 服务器,以获取 json 格式的传感器数据。现在我已经做到了,当我用我的手机连接到这个网络并输入其中一个 esp8266 的 IP 时,我得到了响应,但有两个特殊的 esp8266。

其他 esp8266 可以从接入点获取 ip,但 Web 服务器不发送任何响应并超时。我什至尝试了 7 种类型的 esp8266 型号,但它不起作用,但是当我用家庭调制解调器而不是 esp32 替换接入点时。所有的 esp8266 都能完美运行!!

我认为 esp32 无法处理和路由 IP。但这里有一个矛盾,为什么这两种型号的 esp8266 工作完美而其他没有?

这是 ESP32 的接入点代码

#include <WiFi.h>

const char* ssid = "esprouter";
const char* password = "9167997734";

void setup() {
Serial.begin(115200);

Serial.print("Setting AP (Access Point)…&quot;);
WiFi.softAP(ssid, password);
}

void loop(){

}

这是 ESP8266 的客户端代码

#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DHT.h>
#include <WiFiUdp.h>

#define DHTPin 2
#define DHTTYPE DHT11
DHT dht(DHTPin, DHTTYPE);

const char* ssid = "esprouter";
const char* password = "9167997734";

ESP8266WebServer server(80);

void handle_OnConnect();
void handle_OnConnect2();
void handle_NotFound();

float Temperature;
float Humidity;

void setup() {
Serial.begin(115200);
dht.begin();

Serial.println("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected to WiFi");
Serial.print("IP: "); Serial.println(WiFi.localIP());

server.on("/info", handle_OnConnect);
server.on("/get", handle_OnConnect2);

server.onNotFound(handle_NotFound);
server.begin();
dht.begin();
}
void loop() {

server.handleClient();

}

void handle_OnConnect() {
DynamicJsonDocument doc(1024);
doc["type"] = "dht-sensor" ;
doc["id"] = 128;
doc["ip"] = WiFi.localIP().toString();
String response;
serializeJson(doc, response);
server.send(200, "content/json", response);
}

void handle_OnConnect2() {

Temperature = dht.readTemperature();
Humidity = dht.readHumidity();
DynamicJsonDocument doc(1024);
doc["temp"] = Temperature;
doc["hum"] = Humidity;
String response;
serializeJson(doc, response);
server.send(200, "content/json", response);

}

void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}

谢谢谁能指导我...

4

0 回答 0