ESP 8266 Skript und data upload nicht möglich

Hi,

ich habe die letzte Zeit ein Projekt am ESP32 entwickelt (dort läuft er reibungslos) und wollte dies nun auf den ES 8266 laden und meines Wissens habe ich auch keine ES32 Funktionen genutzt aber dennoch ist es nicht möglich das Skript auf den ESP82 zu laden. Ich habe im Boardverwalter die neuste Version für ESP installiert und auch den Link bei zusätzliche Boardverwalter eingefügt. Ich bezweifle langsam meine Einstellungen zu den Board unter "Werkzeuge".
Ich bekomme nun folgenden Fehler, wenn ich auf Upload klicke:

Arduino: 1.8.12 (Windows 10), Board: "Generic ESP8266 Module, 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), no dtr (aka ck), 26 MHz, 40MHz, DOUT (compatible), 4MB (FS:2MB OTA:~1019KB), 2, nonos-sdk 2.2.1 (legacy), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Tisch_Snake_WebUI:1:24: [b]fatal error: sdkconfig.h: No such file or directory[/b]

 #include "sdkconfig.h" 

                        ^

compilation terminated.

exit status 1
sdkconfig.h: No such file or directory

Das komische dabei ist, dass ich überhaupt keine Bibliotek namens "sdkconfig.h" einbinde.
Ich hoffe ihr könnt mehr mit der Fehlermeldung anfangen.
Aber nicht nur das geht nicht, sondern auch das Tool um Daten auf den SPIFF speicher zu laden funktioniert nicht. ich habe das tool wie in der Anleitung installiert und es erscheint auch unter Werkzeuge aber beim klicken auf upload erscheint folgender Fehler:
"SPIFFS Error: esptool not found!"
Ich freue mich über jede Antwort :slight_smile:

MFG

lade zunächst einmal den blink sketch hoch.
Klappt das kompilieren?
Klappt der Upload?

Es gibt nicht einfach ein ESP-Board es gibt ESP8266 und ESP32.
Für ein ESP8266-board muss im Boardverwalter ein ESP8266 eingestellt sein

zum Beispiel Generic ESP8266 Module auswählen.

Und man muss die additional Board Manager URL eingetragen haben
Man kann da mehrere URLS durch Komma getrennt eintragen

https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

viele Grüße Stefan

das es mehrere ESPs gibt ist mir bewusst auch die Unterschiede und wie sie einzurichten sind. Ich hatte ja auch schon beide am laufen. Und ja ich hab beide Urls eingegeben und ich habe auch das ESP82 ausgewählt beim upload, aber halt ohne Erfolg :frowning:
zu nosiasca: also ich habe nocheinmal versucht das skript hochzuladen was auch aktuell auf den ESP82 läuft und das kann er kompelieren, aber nicht mehr hochladen (faild to connect to ESP8266) auch wenn ich den flash-Button drücke.
Aber gut schon mal zu wissen, dass es sich bei Fehler nr.1 um einen Kompelierfehler handelt, aber dennoch ist kein Upload möglich und hat jemand ne idee warum Arduino das Skript nicht für den ESP82 kompelieren kann (wie gesagt ich habe die angeblich fehlerhafte Bib garnicht installiert)?

Weil es keinen ESP82 gibt?
Sollen wir uns Deinen Sketch erwürfeln und die verwendeten Libs erraten?

Gruß Tommy

Einsteinli:
.....
hat jemand ne idee warum Arduino das Skript nicht für den ESP82 kompelieren kann (wie gesagt ich habe die angeblich fehlerhafte Bib garnicht installiert)?

Wie sollen wir das, wenn wir deinen Sketch (nicht Skript) nicht kennen.
Und einen ESP82 gibt es nicht.

Einsteinli:
zu nosiasca: also ich habe nocheinmal versucht das skript hochzuladen was auch aktuell auf den ESP82 läuft und das kann er kompelieren, aber nicht mehr hochladen (faild to connect to ESP8266) auch wenn ich den flash-Button drücke.
Aber gut schon mal zu wissen, dass es sich bei Fehler nr.1 um einen Kompelierfehler handelt, aber dennoch ist kein Upload möglich und hat jemand ne idee warum Arduino das Skript nicht für den ESP82 kompelieren kann (wie gesagt ich habe die angeblich fehlerhafte Bib garnicht installiert)?

wenn es nicht kompiliert, startet kein Upload.

Daher wiederhole ich es dir noch mal:

kompiliere den Blink-Sketch aus der IDE - von dem wissen wir - dass er korrekt ist.
Dann ladest du den Blink-Sketch hoch.
Wenn das Hochladen des Blink-Sketch geklappt hat - kümmern wir uns um den nächsten Schritt.

#include "sdkconfig.h"

Dieser Text muß in irgendeiner Datei irgendwo auf Deinem Computer stehen, der Kompiler denkt sich das ja nicht aus. Du könntest danach suchen.

Due kannst die Arduino-IDE auf "ausführliche Ausgabe beim Kompilieren" stellen, dann siehst Du, welche Dateien verwendet werden.

lieber Einsteinli,

wenn der Sketch mit dem das Problem auftritt irgendwie geheim gehalten werden muss, dann probiere doch bitte einen einfachen allgemein bekannten Sketch wie das Blinkbeispiel aus ob sich das hochladen lässt.

Wenn du einen Sketch postet kann man viel mehr Dinge analysieren und dir auch besser weiterhelfen.

Ich habe jetzt auf meinem Rechner mal nach der Datei "sdkconfig.h" suchen lassen. Die taucht nur in Unterverzeichnissen auf die etwas mit ESP32 zu tun haben. Es spricht also einiges dafür dass du irgendwie noch ESP32 eingestellt hast.

viele Grüße Stefan.

Bibliotheken kann man ja an verschiedenen Stellen installieren, so kann es zu Mehrdeutigkeiten kommen. Der Kompiler (als Gesamtkunstrukt, von mir aus auch der Linker) zeigt an, welche möglichen Dateien er findet und welche er auswählt. Zusammen mit der ausführlichen Anzeige sollte man herausfinden können, was passiert und was schief läuft.

Meine ESP32-Bibliotheken habe ich nach c:\Users\User\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\ kopiert, während die allgemeinen Bibliotheken im Verzeichnis f:\Arduino\libraries\ anzutreffen sind. So gibt es zumindest etwas Ordnung :slight_smile:

@Tommy56 und @HotSystems ja ok es heißt ESP8266. Dachte, es wäre für jeden klar was da nach 82 kommt aber wie man sich täuschen kann... (offensichtlich ist es euch beim genauen Durchlesen des Threads-Titels nicht aufgefallen um welches ESP es sich hier handelt)
@noiasca ich hab ja deinen guten Vorschlag befolgt und ein Sketch hochgeladen was sicher funktioniert wie das Blink, weil es gerade seit etwa 0,5 Jahren auf dem ESP8266 läuft (kommt also aufs selbe raus) und es kann auch erfolgreich kompiliert werden, aber dann erscheint wie bereits erwähnt der Fehler: faild to connect to ESP (erscheint auch beim Blink-Upload, falls wieder jemand darauf beharrt)
@agmue danke für den Tipp mit der ausführlichen Ausgabe dort ist Folgendes abzulesen:

"C:\\Users\\[USER]\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\\Users\\[USER]\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4/tools/sdk/include" "-IC:\\Users\\[USER]\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4/tools/sdk/lwip2/include" "-IC:\\Users\\[USER]\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\[USER]\\AppData\\Local\\Temp\\arduino_build_716347/core" -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -ffunction-sections -fdata-sections -fno-exceptions -DNEW_OOM_ABORT -w -x c++ -E -CC -DNONOSDK221=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10812 -DARDUINO_ESP8266_GENERIC -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_GENERIC\"" -DLED_BUILTIN=2 -DFLASHMODE_DOUT -DESP8266 "-IC:\\Users\\[USER]\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\cores\\esp8266" "-IC:\\Users\\[USER]\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\variants\\generic" "-IC:\\Users\\[USER]\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\libraries\\EEPROM" "-IC:\\Program Files (x86)\\Arduino\\libraries\\WiFi\\src" "-IC:\\Users\\[USER]\\Documents\\Arduino\\libraries\\AsyncTCP-master\\src" "C:\\Users\\[USER]\\AppData\\Local\\Temp\\arduino_build_716347\\sketch\\Tisch_Snake_WebUI.ino.cpp" -o nul
Alternatives for sdkconfig.h: []
ResolveLibrary(sdkconfig.h)
  -> candidates: []

Es sieht mir danach aus als könnte er keine Bib mit den Namen sdkconfig.h finden, hoffe du kannst damit mehr anfangen als ich. Komische ist auch, dass er die Bibs der Reihe nach durchgeht und nach AsyncTCP.h diese sdkconfig.h sucht.
Folgende Bibs werden verwendet:

#include <Arduino.h>
#include "FS.h"
#include <EEPROM.h>
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Adafruit_NeoPixel.h>

Ich weiß nicht, ob welche davon nicht auf den ESP8266 laufen aber keine dieser heißt sdkconfig und ich habe auch den Code nach den Namen durchsucht, aber nix. Ideen?
Ich würde auch gerne den Code posten aber der ist zu lange und außerdem ist mir dann erst heute wieder klar geworden was passieren würde, wenn ich meinen Code in dieses Forum posten würde, nämlich Antworten auf den Code, die nicht das Problem lösen #ESP82
@StefanL38 denke ich mir langsam auch aber ich weiß nicht wie ich das lösen kann :frowning: ich habe schon bei allem wo man was auswählen kann das ESP8266 ausgewählt, gibt es da noch versteckte Stellen oder ist an der restlichen Konfig was falsch?

Board: "Generic ESP8266 Module, 80 MHz, Flash, Disabled (new can abort), All SSL ciphers (most compatible), no dtr (aka ck), 26 MHz, 40MHz, DOUT (compatible), 4MB (FS:2MB OTA:~1019KB), 2, nonos-sdk 2.2.1 (legacy), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Hallo Einsteinli,
warum bist du so zickig, wenn wir dich auf einen Fehler hinweisen ?

Du bist nicht der einzige Anfänger hier im Forum.
Andere Anfänger lesen evtl. deine falschen Angaben und nehmen das als Wahr hin.

Man sollte hier schon richtige Angaben machen, auch uns kann mal ein Fehler passieren, dann verhalten wir uns aber nicht zickig. Man kann sich dann auch für die Richtigstellung bedanken.

Zudem fehlen noch die Angaben (Link) wo deine Libraries her sind.
Dann können wir auch nachprüfen, ob da entsprechend Einbindungen vorhanden sind.

Die AsyncTCP ist explizit nur für den ESP32. Das steht eindeutig im einleitenden Text. Auch wenn in den properties dann fälschlicherweise architectures=* steht.
Die bindet Libs ein, die es nur auf dem ESP32 gibt.

Gruß Tommy

@noiasca Jap so siehts aus und zu a) scheint ja @Tommy56 das Problem gefunden zu haben (Danke dafür) aber nun stellt sich die Frage wie ich das Problem löse. Gibt es da eine andere vergleichbare Bib? Hier der Code vom Webserver, wie er auf dem ESP32 funktioniert:

#include <Arduino.h>
#include "SPIFFS.h"
#include <EEPROM.h>
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

AsyncWebServer server(80);

const char* ssid = "XXXXX";
const char* password = "XXXXXXX*";

const char* PARAM_INPUT_1 = "leange";
const char* PARAM_INPUT_2 = "speed";
const char* PARAM_INPUT_3 = "farbe1";
const char* PARAM_INPUT_4 = "farbe2";

String leange, speed, farbe1, farbe2;

String processor(const String& var){
  Serial.println(var);
  if(var == "LAENGE"){
    return leange;
  }
  if(var == "SPEED"){
    return speed;
  }
  if(var == "FARBE1"){
    return farbe1;
  }
  if(var == "FARBE2"){
    return farbe2;
  }
  return String();
}

void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}

void setup() {
  Serial.begin(115200);

  if(!SPIFFS.begin()){
     Serial.println("An Error has occurred while mounting SPIFFS");
     return;}
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("WiFi Failed!");
    return;}
  Serial.println();
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());


  server.on("/html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/snake.html", String(), false, processor);
  });

  server.on("/jquery-3.5.0.min.js", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/jquery-3.5.0.min.js", "text/javascript");
  });

  server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(SPIFFS, "/style.css","text/css");
  });

  server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    //reads the var-values from the url and save them in eeprom
    leange = request->getParam(PARAM_INPUT_1)->value();
    speed = request->getParam(PARAM_INPUT_2)->value()); 
    farbe1 = request->getParam(PARAM_INPUT_3)->value(); 
    farbe2 = request->getParam(PARAM_INPUT_4)->value();  

    request->send(200, "text/html", "HTTP GET request sent to ESP" );
  });
  server.onNotFound(notFound);
  server.begin();
}

void loop() {
  
}

zu b)
ich habe jetzt alle Warnungen angeschaltet und folgendes wird als Fehler ausgegeben:

Bibliothek Adafruit_NeoPixel in Version 1.3.5 im Ordner: C:\Users\[User]\Documents\Arduino\libraries\Adafruit_NeoPixel  wird verwendet
"C:\\Users\\[User]\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506/bin/xtensa-lx106-elf-size" -A "C:\\Users\\[User]\\AppData\\Local\\Temp\\arduino_build_492201/dot_1.1.ino.elf"
Der Sketch verwendet 266164 Bytes (25%) des Programmspeicherplatzes. Das Maximum sind 1044464 Bytes.
Globale Variablen verwenden 27224 Bytes (33%) des dynamischen Speichers, 54696 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.
esptool.py v2.8
Serial port COM4
Connecting........_____....._____....._____....._____....._____....._____.....____Traceback (most recent call last):
  File "C:\Users\[User]\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4/tools/upload.py", line 65, in <module>
    esptool.main(cmdline)
  File "C:/Users/[User]/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py", line 2890, in main
    esp.connect(args.before)
  File "C:/Users/[User]/AppData/Local/Arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool\esptool.py", line 483, in connect
    raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error))
esptool.FatalError: Failed to connect to ESP8266: Invalid head of packet (0x31)
esptool.FatalError: Failed to connect to ESP8266: Invalid head of packet (0x31)

Ich hoffe, ihr könnt damit was anfangen. Auffällig ist, dass dieser Ladebalken, der bei Connecting kommt, deutlich schneller abläuft als sonst.

@HotSystems Ja stimmt, war vielleicht nicht das beste Verhalten, sorry. Aber dein Beitrag tut null zur Fehlerlösung beitragen und auch nichts Richtigstellen (außer einen Fehler nennen, ohne ihn zu korrigieren ist Richtigstellen)... also nicht falsch verstehen ich finde es gut, wenn mich jemand auf falsche Ausdrücke hinweist und Verbesserungsvorschäge gibt wie du es beispielsweise mit den "Sketch (nicht Skript)" gemacht hast, dafür Danke.

Einsteinli:
.....
Aber dein Beitrag tut null zur Fehlerlösung beitragen.....

Wie denn auch ?
Woher hätte ich denn deinen Sketch bekommen sollen ?

Aber schön, dass du ihn endlich gepostet hast.

Einsteinli:
aber nun stellt sich die Frage wie ich das Problem löse.

Ich sehe eigentlich keinen Grund, warum Du unbedingt einen Async-Webserver benutzen willst.
Ansonsten schaue Dir die Beispiele zum ESP8266-Webserver in der IDE an uns evtl. auch die Beispiele bei Fips.

Gruß Tommy

@niasca ich habe ein NodeMCU Lua Amica Modul V2 ESP8266 ESP-12F und meines Wissens müsste ich dort nix drücken, musste ich zumindest noch nie. Selbst wenn ich jetzt den Flash-Button gedrückt halte oder drücke, wenn der Ladebalken erscheint, kommt wieder der selbe Fehler.
Und ich weiß nicht wirklich was ich auf den Bild abbilden soll, da ich ja keinen TTl-Wandler brauche und somit einfach nur das ESP8266 mit einen USB-Kabel mit dem PC verbunden habe.
Ich habe auch gerade einmal alle Programme geschlossen und den Virenschutz deaktiviert aber ohne Erfolg. Mir ist dabei aber aufgefallen, dass die Status-LED am ESP jedesmal kurz aufblitzt, wenn Arduino die Fehlermeldung ausgibt.
@Tommy cool probiere ich gleich einmal aus.

Dann solltest du in der IDE auch das richtige Board einstellen.
Ein ESP8266 ist da falsch, wenn es ein NodeMCU ist. Das musst du auswählen.

Ohha Danke, aber dort ist nur ein "NodeMCU ESP-12" oder "NodeMCU ESP-12E" aufgelistet, welches soll ich auswählen (es gehen beide)? Und wieso steht in den nahmen nichts von ESP8266 in Namen, das ist ja föllig unintuitiv
jetzt schein ja nur noch das Problem mit den DataUpload zu existieren. Habe es gerade nocheinmal ausprobiert mit den richtigen Board in den Einstellungen, aber wieder: "SPIFFS Error: esptool not found!"

Einsteinli:
Ohha Danke, aber dort ist nur ein "NodeMCU ESP-12" oder "NodeMCU ESP-12E" aufgelistet, welches soll ich auswählen (es gehen beide)? Und wieso steht in den nahmen nichts von ESP8266 in Namen, das ist ja föllig unintuitiv

ESP8266 muss da nicht stehen.
NodeMCU ESP-12(E) sagt doch alles aus.

Und wenn immer noch ein Fehler auftritt, hast du evtl. noch etwas falsch eingestellt.