Go Down

Topic: ESP 8266 Skript und data upload nicht möglich (Read 441 times) previous topic - next topic

Einsteinli

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:
Code: [Select]

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 :)

MFG

noiasca

lade zunächst einmal den blink sketch hoch.
Klappt das kompilieren?
Klappt der Upload?
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

StefanL38

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
any newbee can apply the most professional habit right from the start:
 add only ONE thing at a time. Debug that ONE thing until that ONE thing works reliable - repeat.
Newbee: become a professional by following this rule.

Einsteinli

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 :(
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)?

Tommy56

#4
Sep 18, 2020, 07:04 pm Last Edit: Sep 18, 2020, 07:06 pm by Tommy56
Weil es keinen ESP82 gibt?
Sollen wir uns Deinen Sketch erwürfeln und die verwendeten Libs erraten?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HotSystems

.....
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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

noiasca

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.
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

agmue

Code: [Select]
#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.


Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

StefanL38

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.
any newbee can apply the most professional habit right from the start:
 add only ONE thing at a time. Debug that ONE thing until that ONE thing works reliable - repeat.
Newbee: become a professional by following this rule.

agmue

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 :)

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

Einsteinli

@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:
Code: [Select]

"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:
Code: [Select]

#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 :( 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?
Code: [Select]

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"



noiasca

du hast also zwei Probleme.

a) kompiliert DEIN Sketch nicht
b) klappt das hochladen nicht.


a) kann daran liegen:

#ifndef ASYNCTCP_H_
#define ASYNCTCP_H_

#include "IPAddress.h"
#include "sdkconfig.h"
#include <functional>
extern "C" {
    #include "freertos/semphr.h"
    #include "lwip/pbuf.h"
}


b) sehe ich nicht. Drehe in den Voreinstellungen unter Compiler-Warnungen auf "Alle" und poste den vollständigen Output in code tags.
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

HotSystems

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.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Tommy56

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
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Einsteinli

@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:
Code: [Select]

#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:

Code: [Select]

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.

Go Up