upload - 为什么我的 esp-01 在编程模式下(GPIO0 接地)时将我的另一个 esp-01 与我的 esp32 接入点断开连接?
问题描述
我正在使用三个部分:
ESP32
模式:STA+AP
发送数据到:我的手机热点
IP:192.168.4.1
服务器端口:80
ESP-01 (A)
模式:STA+AP
发送数据到:ESP32
IP:192.168.0.80
服务器端口:8080
ESP-01 (B)
模式:STA+AP
发送数据到:ESP-01 (A)(尚未成功)
IP:192.168.0.50
服务器端口:50
我打算拥有更多的 esp-01
问题是当我通过将 GPIO0 接地并重置它使 esp(B) 进入编程模式时:esp(A) 立即停止向 esp32 发送数据
一旦我断开 esp(B),esp(A) 再次正常发送
我用单独的电源为 esp(B) 供电,没有区别
我在频道号码上播放过,但仍然没有区别
我知道我可以忽略这个问题,因为我不会再上传了,但我担心我做错了什么,请问该怎么办?
这是 esp32 代码:
#include <WiFi.h>
WiFiServer server(80);
char Pssid[] = "toOomy";
char Ppass[] = "1222222224";
char assid[] = "my_net";
char apass[] = "1222222224";
int sensor_ID= -1;
float sensor_V= -1;
float sensor_I= -1;
float sensor_P= -1;
void responseToClient(){
String response= "okok";
WiFiClient client = server.available();
if (client) {
if (client.connected()) {
Serial.println("connected");
String request = client.readStringUntil('\r');
if (sensor_ID == 0){
response= "1";
}
client.flush();
Serial.println(request);
client.println(response); // sends the temperature to the client
client.stop(); // disconnects the client
}
Serial.println(sensor_ID);
Serial.println(sensor_V);
Serial.println(sensor_I);
Serial.println(sensor_P);
}
}
void handleNew(){
//IPAddress newIP(192, 168, 1, 1);
responseToClient();
}
void setup() {
Serial.begin(115200);
// starts the WiFi server
// WiFi.config(ip, gateway, subnet);
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(assid, apass, 5);
WiFi.begin(Pssid,Ppass, 5);
while (WiFi.status() != WL_CONNECTED) {
Serial.println('.');
delay(500);
}
server.begin();
Serial.println(WiFi.softAPIP());
}
void loop() {
handleNew();
}
这是 esp-01 的代码:
#include <ESP8266WiFi.h>
// #include <ArduinoJson.h>
WiFiClient client;
//// for the first esp-01 ////
IPAddress next_Server_IP1(192, 168, 4, 1);
int next_server_port1 = 80;
int ID = 1;
WiFiServer local_server(8080);
IPAddress ip(192, 168, 0, 80);
char ssid[] = "my_net";
char pass[] = "1222222224";
char assid[] = "Amy_net1";
char apass[] = "1222222224";
int wifi_channel= 5;
int softAP_channel= 5;
float V = 230.4;
float I = 2.3;
float P = 2678.9;
//// for the second esp-01 ////
IPAddress next_Server_IP2(192, 168, 0, 80);
int next_server_port2 = 8080;
// int ID = 2;
// WiFiServer local_server(50);
// IPAddress ip(192, 168, 0, 50);
// char ssid[] = "Amy_net1";
// char pass[] = "1222222224";
// char assid[] = "Amy_net2";
// char apass[] = "1222222224";
// int wifi_channel= 5;
// int softAP_channel= 5;
// float V = 200.5;
// float I = 10.5;
// float P = 3000.5;
IPAddress gateway(192, 168, 0, 2); // WiFi router's IP ((I AM NOT SURE WHAT SHOULD I DO HERE))
IPAddress subnet(255, 255, 255, 0);
String answer = "\n";
String SensorData()
{
String Data = "{\"Sensor_Data\":{"
"\"sensor_ID\":\"sensor_ID_val\","
"\"sensor_V\":\"sensor_V_val\","
"\"sensor_I\":\"sensor_I_val\","
"\"sensor_P\":\"sensor_P_val\"}}\r";
Data.replace("sensor_ID_val", String(ID));
Data.replace("sensor_V_val", String(V));
Data.replace("sensor_I_val", String(I));
Data.replace("sensor_P_val", String(P));
return (Data);
}
void responseToClient()
{
String response = "Thanks";
WiFiClient sensorClient = local_server.available();
if (sensorClient)
{
if (sensorClient.connected())
{
Serial.println("connected");
String request = sensorClient.readStringUntil('\r'); // reads the message from the client
Serial.println(request);
sensorClient.flush();
Serial.println(request);
sensorClient.println(response); // sends the temperature to the client
sensorClient.stop(); // disconnects the client
}
}
}
void requestToServer(String request, IPAddress IP, int port)
{
if (client.connect(IP, port))
{ // connects to the server
Serial.println("connected");
client.println(request); // trigger message to the server, its value is scrapped
answer = client.readStringUntil('\r'); // received the server's answer
Serial.println(String(answer));
client.stop();
}
}
void setup()
{
Serial.begin(115200);
WiFi.mode(WIFI_AP_STA);
WiFi.softAP(assid, apass, softAP_channel);
// WiFi.config(ip, gateway, subnet);
delay(300);
WiFi.softAPConfig(ip, gateway, subnet);
WiFi.begin(ssid, pass, wifi_channel);
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
local_server.begin();
}
void loop()
{
Serial.println("request:");
if (ID == 1)
{
requestToServer(SensorData(), next_Server_IP1, next_server_port1);
}
else if (ID > 1)
{
Serial.println("ID>1");
requestToServer(SensorData(), next_Server_IP2, next_server_port2 );
}
Serial.println("response:");
responseToClient();
}
解决方案
推荐阅读
- rest - RestTemplate 将资源视为参数
- css - html 不加载本地 css 文件
- selenium - 文本框事件?
- reactjs - 如何将 react-datepicker 与 redux 表单一起使用?
- spring-boot - 用于身份验证错误的 Spring Boot 自定义消息 spring security
- javascript - 自动完成在 keyup 上工作但不点击
- javascript - 向下滚动网站,直到找到该元素
- javascript - 足球结果的最佳变量类型是什么?
- go - 如何在 go cli 函数期间接受一串文本?
- c# - 二维数组的第二个最小值