Ошибка при компиляции кода прошивки для самостоятельного обновления ESP3

когда я пишу этот код в esp8266, он работает нормально. но когда я попробовал этот код в esp32 с некоторыми изменениями, он показывает ошибку во время компиляции:

board which i use : DOIT ESP32 DevKit v1

ошибка:

In file included from C:\Users\Gabbar Singh\Documents\Arduino\ESP32_OTA\ESP32_OTA.ino:5:0:
C:\Users\Gabbar Singh\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\HTTPUpdate\src/HTTPUpdate.h:47:6: error: multiple definition of 'enum HTTPUpdateResult'
 enum HTTPUpdateResult {
      ^
In file included from C:\Users\Gabbar Singh\Documents\Arduino\ESP32_OTA\ESP32_OTA.ino:3:0:
C:\Users\Gabbar Singh\Documents\Arduino\libraries\ESP32httpUpdate\src/ESP32httpUpdate.h:59:6: note: previous definition here
 enum HTTPUpdateResult {
      ^
Multiple libraries were found for "WiFi.h"
 Used:C:\Users\GabbarSingh\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
 Not used: C:\Program Files (x86)\Arduino\libraries\WiFi

и последняя ошибка: статус выхода 1 Ошибка компиляции для платы DOIT ESP32 DEVKIT V1.

Code:

#include <Update.h>
#include <WiFi.h>
#include <ESP32httpUpdate.h>
#include <WiFiClient.h>
#include <HTTPUpdate.h>
#include <HTTPClient.h>

#define LED_BUILTIN 2

const String FirmwareVer = {"1.4"};

#define URL_fw_Version "http://vadaliya2007.000webhostapp.com/atte/ota/version.txt"
#define URL_fw_Bin "http://vadaliya2007.000webhostapp.com/atte/ota/firmware.bin"
HTTPClient http;

const char* ssid = "Honor8X";
const char* password = "1414141414";

void FirmwareUpdate()
{
  http.begin(URL_fw_Version, "‎5b fb d1 d4 49 d3 0f a9 c6 40 03 34 ba e0 24 05 aa d2 e2 01"); // проверить URL версии
  delay(100);
  int httpCode = http.GET();            // получаем данные из файла версии
  delay(100);
  String payload;
  if (httpCode == HTTP_CODE_OK)         // если версия получена
  {
    payload = http.getString();  // сохранить полученную версию
    Serial.println(payload );
  }
  else
  {
    Serial.print("error in downloading version file:");
    Serial.println(httpCode);

  }

  http.end();
  if (httpCode == HTTP_CODE_OK)         // если версия получена
  {
    if (payload.equals(FirmwareVer) )
    {
      Serial.println("Device already on latest firmware version");
    }
    else
    {
      Serial.println("New firmware detected");
      WiFiClient client;

      // Строка ниже необязательна. Его можно использовать для мигания светодиода на плате во время мигания.
      // Светодиод будет гореть во время загрузки одного буфера данных из сети. Светодиод будет
      // быть отключенным во время записи этого буфера во флэш-память
      // При хорошем соединении светодиод должен регулярно мигать. При плохом соединении светодиод будет
      // включено гораздо дольше, чем будет выключено. Можно использовать другие контакты, кроме LED_BUILTIN. Секунда
      // значение используется для включения светодиода. Если светодиод горит с HIGH, это значение должно быть передано
      //ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);


      t_httpUpdate_return ret = ESPhttpUpdate.update(URL_fw_Bin, "", "‎5b fb d1 d4 49 d3 0f a9 c6 40 03 34 ba e0 24 05 aa d2 e2 01");

      switch (ret) {
        case HTTP_UPDATE_FAILED:
          Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
          break;

        case HTTP_UPDATE_NO_UPDATES:
          Serial.println("HTTP_UPDATE_NO_UPDATES");
          break;

        case HTTP_UPDATE_OK:
          Serial.println("HTTP_UPDATE_OK");
          break;
      }
    }
  }
}

unsigned long previousMillis = 0;        // запомним время последнего обновления светодиода
const long interval = 30000;

void repeatedCall() {
  unsigned long currentMillis = millis();
  if ((currentMillis - previousMillis) >= interval)
  {
    // сохранить время последнего мигания светодиодом
    previousMillis = currentMillis;
    FirmwareUpdate();
  }
}


void setup()
{
  Serial.begin(115200);
  Serial.println("");
  Serial.println("Start");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print("O");
    delay(500);
  }
  Serial.println("Connected to WiFi");
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
  digitalWrite(LED_BUILTIN, HIGH);   // включаем светодиод (HIGH - уровень напряжения)
  delay(100);                       // ждем секунду
  digitalWrite(LED_BUILTIN, LOW);    // выключаем светодиод, понижая напряжение
  delay(100);                       // ждем секунду
  repeatedCall();
}

, 👍1

Обсуждение

какой у Вас вопрос?, @jsotola

у меня ошибка при компиляции этого кода, @Bhargav Vadaliya

это не вопрос... это описание проблемы, @jsotola

как решить эту ошибку..., @Bhargav Vadaliya

Пожалуйста, расскажите нам, как вы скомпилируете это, и покажите нам точное сообщение об ошибке. Не забудьте [отредактировать] свой вопрос, не добавляйте информацию в комментарии, они будут проигнорированы., @the busybee

ооо.. извините... я новичок в этом.. я компилирую этот код в arduino ide, @Bhargav Vadaliya


1 ответ


1

ошибка в том, что я использовал две библиотеки esp32httpupdate и httpupdate, которые имеют одинаковую функцию, поэтому я удалил другую (httpupdate)... и теперь проблема решена.

,