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 ESP32网络连接故障_Arduino_Esp8266_Spi - Fatal编程技术网

Arduino ESP32网络连接故障

Arduino ESP32网络连接故障,arduino,esp8266,spi,Arduino,Esp8266,Spi,尝试构建示例应用程序以连接到MQTT服务器 遇到两种不同的情况 案例1:_client->connect(this->ip,this->port)如果使用Ethernet2库,则返回0。已检查所有值 案例2:编译错误详述如下。 如果我把它编译了 案例1-说明: 使用Ethernet2我可以编译和上传。我可以使用setup()函数中的以下命令连接到WIFI并在网络上显示: EthernetClient ethClient; PubSubClient client; void setup() {

尝试构建示例应用程序以连接到MQTT服务器 遇到两种不同的情况

案例1:_client->connect(this->ip,this->port)如果使用Ethernet2库,则返回0。已检查所有值

案例2:编译错误详述如下。 如果我把它编译了

案例1-说明: 使用Ethernet2我可以编译和上传。我可以使用setup()函数中的以下命令连接到WIFI并在网络上显示:

EthernetClient ethClient;  
PubSubClient client;
void setup() {
  Serial.begin(115200);
  while (!Serial);
  WiFi.begin(ssid, password);
  delay(1500);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Establishing connection to WiFi..");
    delay(500);
  }

  ipIP =  WiFi.localIP() ; // 192.168.8.104 - good
  WiFi.macAddress(mac); // MAC returned - good
  // Connecting to MQTT Server
  client.setClient(ethClient); 
  client.setServer(server, 1883);
  client.setCallback(callback);
  while (!client.connected()) { .   //fails here, always 0
      Serial.print("Attempting MQTT connection...");
      if (client.connect("dev001")) {
            Serial.println("connected");
            // Once connected, publish an announcement...
            client.publish("garden/light","works");
       // and so on
       }
PubSubClient调用_client.connect,它来自基类client:public Stream。 它是一个虚拟函数,而我的C++还不够好,知道代码后面的代码是如何调试的。 案例2解释如下。所有依赖项似乎都需要SPI版本1,编译器问题可以在与w5100.cpp相关的底部看到 我在网上看到过一些非常类似的情况,但我对这些东西还不太了解,所以还没有解决它

CONFIGURATION: 
PLATFORM: Espressif 32 > Heltec WIFI LoRa 32
HARDWARE: ESP32 240MHz 320KB RAM (4MB Flash)
Library Dependency Finder -> 
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 29 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <PubSubClient> 2.7
|-- <Wire> 1.0
|-- <ESP8266_SSD1306> 4.0.0
|   |-- <Wire> 1.0
|   |-- <SPI> 1.0
|-- <SPI> 1.0
|-- <LoRa> 0.5.0
|   |-- <SPI> 1.0
|-- <WiFi> 1.0
|-- <Ethernet> 2.0.0
|   |-- <SPI> 1.0
Compiling .pioenvs/heltec_wifi_lora_32/lib677/Ethernet_ID872/utility/w5100.cpp.o
Compiling .pioenvs/heltec_wifi_lora_32/FrameworkArduino/HardwareSerial.cpp.o
.piolibdeps/Ethernet_ID872/src/utility/w5100.cpp: In static member function 'static uint16_t W5100Class::write(uint16_t, const uint8_t*, uint16_t)':
.piolibdeps/Ethernet_ID872/src/utility/w5100.cpp:315:22: error: no matching function for call to 'SPIClass::transfer(uint8_t [8], int)'
SPI.transfer(cmd, 4);
^
配置:
平台:Espressif 32>Heltec WIFI LoRa 32
硬件:ESP32 240MHz 320KB RAM(4MB闪存)
库依赖项查找器->
LDF模式:查找器(链)兼容性(软)
收集了29个兼容库
正在扫描依赖项。。。
依赖关系图
|--  2.7
|--  1.0
|--  4.0.0
|   |--  1.0
|   |--  1.0
|--  1.0
|--  0.5.0
|   |--  1.0
|--  1.0
|--  2.0.0
|   |--  1.0
编译.pioenvs/heltec_wifi_lora_32/lib677/Ethernet_ID872/utility/w5100.cpp.o
编译.pioenvs/heltec_wifi_lora_32/frameworkardino/HardwareSerial.cpp.o
.piolibdeps/Ethernet_ID872/src/utility/w5100.cpp:在静态成员函数“static uint16_t W5100Class::write(uint16_t,const uint8_t*,uint16_t)”中:
.piolibdeps/Ethernet_ID872/src/utility/w5100.cpp:315:22:错误:调用“SPIClass::transfer(uint8_t[8],int)”时没有匹配的函数
SPI.转移(cmd,4);
^
你能告诉我怎么解决这个问题吗? 非常感谢
凯文

你真的在使用以太网还是无线网络?您在代码中混合了这两种功能,它们是两个独立的网络。你的代码连接到WiFi,所以我猜你实际上没有使用以太网

如果您不使用以太网,而且ESP32上几乎没有人使用以太网,那么
EthernetClient
就不可能为您工作

在这种情况下,您的代码应该更像:

WiFiClient wifiClient;  
PubSubClient client;

void setup() {
  Serial.begin(115200);
  while (!Serial);
  WiFi.begin(ssid, password);
  delay(1500);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Establishing connection to WiFi..");
    delay(500);
  }

  ipIP =  WiFi.localIP() ; // 192.168.8.104 - good
  WiFi.macAddress(mac); // MAC returned - good
  // Connecting to MQTT Server
  client.setClient(wifiClient); 
  client.setServer(server, 1883);

另外,您的输出显示您使用的是ESP32,而不是ESP8266(如您的问题所示)。

请在不同的帖子中提出两个不同的问题。我已经回答了您的EthernetClient问题。虽然您的第二个问题可以通过不使用EthernetClient来解决。谢谢,我更改了标题-道歉是一种习惯。会看你的评论,感谢你的帮助。非常感谢!这就是问题所在。我只找到了使用以太网的例子,但你给我指出了正确的方向,这让我继续前进。