1

我试图用我的 ESP32 做一个“家庭重量”并使用 IBMCloud 显示值,但是我遇到了 Arduino IDE 和我的代码的一些问题。

我收到此错误:

Arduino:1.8.5(Windows 10),Tarjeta:“ESP32 开发模块,QIO,80MHz,4MB(32Mb),921600,无”

C:\Users\XX\Documents\Arduino\IBM_Watson_Connect\IBM_Watson_Connect.ino:8:25:致命错误:ESP8266WiFi.h:没有这样的文件或目录

编译终止。

退出状态 1 ESP32 开发模块卡的编译错误。

我正在使用 ESP32 开发板。我的代码是这样的:

    #include <ESP8266WiFi.h>
    #include <PubSubClient.h> // https://github.com/knolleary/pubsubclient/releases/tag/v2.3

    #include "HX711.h" //Load Cell Amplifier
    HX711 cell(D2, D4); //Amplifier is connected to these pins on the NodeMCU ESP8266 Board

    #define WLAN_SSID       "XXXXX"  
    #define WLAN_PASS       "XXXXX"  

    #define ORG "XXXXX"
    #define DEVICE_TYPE "XXXXXX"
    #define DEVICE_ID "XXXXX"
    #define TOKEN "XXXXXXXX"

    char server[] = ORG ".messaging.internetofthings.ibmcloud.com";
    char topic[] = "iot-2/evt/status/fmt/json";
    char authMethod[] = "use-token-auth";
    char token[] = TOKEN;
    char clientId[] = "d:" ORG ":" DEVICE_TYPE ":" DEVICE_ID;

    WiFiClient wifiClient;
    PubSubClient client(server, 1883, NULL, wifiClient);

    void setup() {


     Serial.begin(115200);
     Serial.println();

      // Connect to WiFi access point.
      Serial.println(); Serial.println();
      Serial.print("Connecting to ");
      Serial.println(WLAN_SSID);

      WiFi.begin(WLAN_SSID, WLAN_PASS);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println();

      Serial.println("WiFi connected");
      Serial.println("IP address: "); Serial.println(WiFi.localIP());

    }

    int counter = 0;

    void loop() {

     if (!!!client.connected()) {
     Serial.print("Reconnecting client to ");
     Serial.println(server);
     while (!!!client.connect(clientId, authMethod, token)) {
     Serial.print(".");
     delay(500);
     }
     Serial.println();
     }


    //----------Get data from load cell and amplifier

      long valCalibrated = 0;
      long val = 0;
      float count = 0;


      count = count + 1;
      val = 0.5 * val    +   0.5 * cell.read();
      valCalibrated =  (val - 4137240) / 234.20;

    //----------Send data to IBM Waton IoT Service

     String payload = "{\"d\":{\"weight\":";
     payload += valCalibrated;
     payload += "}}";

     Serial.print("Sending payload: ");
     Serial.println(payload);

     if (client.publish(topic, (char*) payload.c_str())) {
     Serial.println("Publish ok");
     } else {
     Serial.println("Publish failed");
     }

     ++counter;
     delay(100); //adjust delay to send more or less reads per unit time
    }

有些地方提到缺少库,未正确选择板,未更新库..我都检查了.. Arduino已更新,库已安装和更新,选择了正确的板(我实际上有尝试了所有其他与 Esp32 相关的板,结果相同)

4

1 回答 1

2

您正在为 ESP32 而不是 ESP8266 构建程序。有很多相似之处,但它们是完全不同的芯片,具有不同的软件。

所以你不要在 ESP32 上使用 ESP8266WiFi.h。在 ESP32 上,头文件仅称为 WiFi.h(更符合 Arduinos 上的 WiFi 支持 - ESP32 Arduino Core 旨在比 ESP8266 版本与普通 Arduino Core 更兼容)。

你需要

#include <WiFi.h>

而不是 ESP8266WiFi.h

您可以在 ESP32 的 Arduino SDK 的官方存储库中找到这些文件的代码。

( ESP32 的WiFi.h 在自己的评论中将自己标识为 ESP8266.h并没有帮助......)

于 2018-07-05T14:08:49.707 回答