Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino ESP-01客户端可以';t访问NodeMCU Web服务器(连接被拒绝)_Arduino_Wifi_Esp8266 - Fatal编程技术网

Arduino ESP-01客户端可以';t访问NodeMCU Web服务器(连接被拒绝)

Arduino ESP-01客户端可以';t访问NodeMCU Web服务器(连接被拒绝),arduino,wifi,esp8266,Arduino,Wifi,Esp8266,我有一个奇怪的问题。。。 我有一个ESP-01客户端,它应该连接到访问点,然后向Web服务器发送请求。接入点和Web服务器托管在NodeMCU上 工作原理: ESP-01可以连接到接入点 我的笔记本可以连接到接入点 在我的笔记本上,我可以访问Web服务器(一切正常) 问题是: ESP-01无法访问Web服务器(连接被拒绝) 但是: 如果我将ESP-01上的wifi更改为本地wifi,并尝试连接任何其他网站,则可以正常工作。所以对我来说,这似乎是两个ESP组合的问题 有什么想法吗 服务器(

我有一个奇怪的问题。。。 我有一个ESP-01客户端,它应该连接到访问点,然后向Web服务器发送请求。接入点和Web服务器托管在NodeMCU上

工作原理:

  • ESP-01可以连接到接入点
  • 我的笔记本可以连接到接入点
  • 在我的笔记本上,我可以访问Web服务器(一切正常)
问题是:

  • ESP-01无法访问Web服务器(连接被拒绝)
但是: 如果我将ESP-01上的wifi更改为本地wifi,并尝试连接任何其他网站,则可以正常工作。所以对我来说,这似乎是两个ESP组合的问题

有什么想法吗

服务器(NodeMCU)

#包括
#包括
#ifndef APSSID
#定义APSSID“MyWifi”
#定义APPSK“1234567890”
#恩迪夫
常量字符*ssid=APSSID;
const char*password=APPSK;
常量字节LED_1=5;
常量字节LED_2=4;
常量字节LED_3=13;
常量字节LED_4=15;
常量字节BTN_1=14;
常量字节BTN_2=12;
信道常数int ap_=6;
常量布尔值ap_hidden=false;
ip地址本地ip(192168,4,1);
IP地址网关(192168,4,1);
IP地址网络掩码(255255,0);
ESP8266Web服务器(80);
int led_on=0;
无效设置(){
序列号开始(115200);
Serial.println();
引脚模式(LED_1,输出);
引脚模式(LED_2,输出);
引脚模式(LED_3,输出);
引脚模式(LED_4,输出);
引脚模式(BTN_1,输入);
引脚模式(BTN_2,输入);
数字写入(LED_1,低电平);
数字写入(LED_2,低电平);
数字写入(LED_3,低电平);
数字写入(LED_4,低电平);
WiFi.softAPConfig(本地ip、网关、网络掩码);
串行打印(“IP地址:”);
Serial.println(WiFi.softAPIP());
Serial.println(“起始接入点”);
WiFi.softAP(ssid、密码、ap_频道、ap_隐藏);
server.on(“/buzz”,HTTP\u-GET,handlebuzz);
server.begin();
}
//#######环
void循环(){
server.handleClient();
如果(数字读取(BTN_1)==低){
数字写入(LED_1,低电平);
数字写入(LED_2,低电平);
数字写入(LED_3,低电平);
数字写入(LED_4,低电平);
led_on=0;
}
}
无效把手按钮(){
if(server.hasArg(“id”)和&led_on==0){
send(200,“text/html”,“ok:”+server.arg(“id”);
if(server.arg(“id”)=“1”){
数字写入(LED_1,高);
led_on=1;
}else if(server.arg(“id”)=“2”){
数字写入(LED_2,高);
led_on=1;
}else if(server.arg(“id”)=“3”){
数字写入(LED_3,高);
led_on=1;
}else if(server.arg(“id”)=“4”){
数字写入(LED_4,高);
led_on=1;
}
}否则{
send(200,“text/html”,“error”);
}
返回;
}
客户端(ESP-01):

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

#include <WiFiClient.h>

// ----- config -----
const char* ssid     = "MyWifi";
const char* password = "1234567890";

const byte PIN_BUZZER = 0;
const String url = "http://192.168.4.1/buzz?id=1";

// ----- config -----

int buzzing = 0;

void setup() {
  Serial.begin(115200);
  
  pinMode(PIN_BUZZER, INPUT);
 
  WiFi.begin(ssid, password);

 Serial.print("Connecting..");   
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.print("OK");
  Serial.println();
  
  
}

void loop() {   
   if (digitalRead(PIN_BUZZER)){
       Serial.println("Buzzer pressed");
       
      if (buzzing == 0) {
        Serial.println("doit");
        buzzing = 1;

        WiFiClient client;
        HTTPClient http;
        
        http.begin(client, url); 
        
        int httpCode = http.GET();    
        Serial.println(httpCode);                           
        if (httpCode > 0) {
          Serial.println(http.getString());
        }
        http.end(); 
        delay(2000);
        buzzing = 0;
        
      } else {
        Serial.println("cooldown");
      }
   }
}
#包括
#包括
#包括
//----config-----
const char*ssid=“MyWifi”;
const char*password=“1234567890”;
常数字节引脚_蜂鸣器=0;
常量字符串url=”http://192.168.4.1/buzz?id=1";
//----config-----
int buzzing=0;
无效设置(){
序列号开始(115200);
PIN模式(PIN_蜂鸣器,输入);
WiFi.begin(ssid,密码);
串行打印(“连接…”);
while(WiFi.status()!=WL_已连接){
延迟(1000);
连续打印(“.”);
}
串行打印(“OK”);
Serial.println();
}
void loop(){
if(数字读取(插脚_蜂鸣器)){
串行打印(“蜂鸣器按下”);
如果(嗡嗡声==0){
Serial.println(“doit”);
嗡嗡声=1;
无线客户端;
HTTPClient-http;
开始(客户端,url);
int httpCode=http.GET();
Serial.println(httpCode);
如果(httpCode>0){
Serial.println(http.getString());
}
http.end();
延迟(2000年);
嗡嗡声=0;
}否则{
Serial.println(“冷却”);
}
}
}

解决方案很简单。我刚刚将子网从192.168.4.0/24更改为192.168.1.0/24。 我不知道为什么会这样

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

#include <WiFiClient.h>

// ----- config -----
const char* ssid     = "MyWifi";
const char* password = "1234567890";

const byte PIN_BUZZER = 0;
const String url = "http://192.168.4.1/buzz?id=1";

// ----- config -----

int buzzing = 0;

void setup() {
  Serial.begin(115200);
  
  pinMode(PIN_BUZZER, INPUT);
 
  WiFi.begin(ssid, password);

 Serial.print("Connecting..");   
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.print("OK");
  Serial.println();
  
  
}

void loop() {   
   if (digitalRead(PIN_BUZZER)){
       Serial.println("Buzzer pressed");
       
      if (buzzing == 0) {
        Serial.println("doit");
        buzzing = 1;

        WiFiClient client;
        HTTPClient http;
        
        http.begin(client, url); 
        
        int httpCode = http.GET();    
        Serial.println(httpCode);                           
        if (httpCode > 0) {
          Serial.println(http.getString());
        }
        http.end(); 
        delay(2000);
        buzzing = 0;
        
      } else {
        Serial.println("cooldown");
      }
   }
}