Ошибка при компиляции кода прошивки для самостоятельного обновления 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 ответ
▲ 1
ошибка в том, что я использовал две библиотеки esp32httpupdate и httpupdate, которые имеют одинаковую функцию, поэтому я удалил другую (httpupdate)... и теперь проблема решена.
,
@Bhargav Vadaliya
Смотрите также:
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания
какой у Вас вопрос?, @jsotola
у меня ошибка при компиляции этого кода, @Bhargav Vadaliya
это не вопрос... это описание проблемы, @jsotola
как решить эту ошибку..., @Bhargav Vadaliya
Пожалуйста, расскажите нам, как вы скомпилируете это, и покажите нам точное сообщение об ошибке. Не забудьте [отредактировать] свой вопрос, не добавляйте информацию в комментарии, они будут проигнорированы., @the busybee
ооо.. извините... я новичок в этом.. я компилирую этот код в arduino ide, @Bhargav Vadaliya