Da ich noch nicht besonders fit mit dem ESP32 und Arduino bin, mal die erste Frage von möglicherweise noch vielen... Ich beschäftige mich gerade mit einem NodeMCU-32S, welches ein ESP32-WROOM-32 Modul besitzt. Dieses hat einen 4Mbyte Flash. Allerdings ist darin wohl nicht nur ein "Image" gespeichert, sondern drei - wodurch die für ein Programm maximal nutzbare Größe auf 1,3MByte reduziert ist. Wenn ich in der Arduino-Umgebung ein einfaches Demo-Programm für einen Webserver compiliere, gehen dafür bereits etwa 70% des verfügbaren Speichers drauf. Was macht man, wenn man mehr benötigt? Gibt es eine Möglichkeit, auf dem vorhandenen ESP32-Modul mehr Speicher nutzbar zu machen oder braucht man eines mit größerem Flash? Welches würde man dann am besten nehmen? Was mich in diesem Zusammenhang auch interessiert: Wie schnell wächst bei der Programmierung mit der Arduino-Umgebung die Größe des Codes? Oder anders, wie komplex kann eine Anwendung bei 1,3MByte maximaler Code-Größe sein, wie schnell kollidiert man mit diesem Limit? Danke.
Ben B. schrieb: > Allerdings ist darin wohl nicht nur ein "Image" gespeichert, sondern > drei Das kann man übrigens in der Konfiguration (Partitionstabelle) vom ESP-IDF einstellen. Man kann auch nur 1 oder 2 Images ablegen. Wenn man nur 1 Image hat gehen halt keine OTA-Updates, bei 2 gehen OTA-Updates, bei 3 gehen OTA-Updates und der User kann auch immer per Knnopfdruck auf das "Werks"-Image zurück (ohne manuelles flashen). Von der Gesamtkapazität muss man noch etwas abziehen für Bootloader, Header etc. Ben B. schrieb: > Oder anders, wie komplex kann eine Anwendung bei 1,3MByte maximaler > Code-Größe sein, Da ist dann halt schon eine Menge Framework-Code drin. Der eigene Code macht da typischerweise weniger als 100kB aus, die Frage ist eben wie viele Bibliotheken man noch einbindet. Wenn man kein Arduino nutzt sondern direkt auf dem ESP-IDF aufsetzt spart man einiges, und man kann beim ESP-IDF per Konfiguration alles deaktivieren was man nicht braucht. Eventuell kompiliert Arduino auch immer ohne Optimierungen, die kann man bei einem reinen IDF-Projekt aktivieren und noch was sparen. Bei einem Webserver hast du natürlich noch den ganzen Web-Content der ausgeliefert werden muss, der kann auch schnell groß sein. Du kannst dieses Zeug auch auf einem beliebigen Webserver im Internet hosten und vom Controller nur eine nahezu leere Seite ausliefern die das Zeug vom Webserver einbindet. Dann funktioniert die Seite natürlich nur wenn der Client (PC, Smartphone...) zeitgleich Internetzugang hat.
:
Bearbeitet durch User
Nimm einen ESP32-S3 N16R8 und lege die Website in das LittleFS. Z.B hier: https://de.aliexpress.com/item/1005006418608267.html
> Der eigene Code macht da typischerweise weniger als 100kB aus, > die Frage ist eben wie viele Bibliotheken man noch einbindet. Okay, das liest sich nicht schlecht, dann bin ich noch nicht an der Grenze. > Wenn man kein Arduino nutzt sondern direkt auf dem ESP-IDF aufsetzt Würdest Du einem Arduino- genauso wie ESP-IDF-Anfänger eher raten, auf ESP-IDF zu gehen und das zu lernen anstelle Arduino? Ich hatte mich jetzt für Arduino entschieden, da es dort viele Bibliotheken für die beiden Schaltkreise gibt, die ich einsetzen wollte (I2C ADC und DAC). Vielleicht gleich ganz kurz zum Hintergrund, bevor wieder jemand sagt, ich würde den nicht preisgeben wollen oder Salami-Taktik betreiben. Mir geht es um meinen PV-Akkulader, den ich gerne WiFi-fähig hätte. Daher ESP32, das bastle ich mir nicht selbst mit einem AVR oder so. Die beiden Bibliotheken (Adafruit_ADS1X15 und Adafruit_MCP4725) habe ich bereits eingebunden, aber noch nicht benutzt (keine Ahnung, ob sie dann in voller Länge in den Code eingebunden werden wenn man sie nicht benutzt, oder ob der Compiler das weg-optimiert). Der dadurch entstehende Beispiel-Webserver mit Bibliotheken benötigt 70% der 1,3Mbyte, also bleiben mir noch ca. 380kByte für den Rest des Programms. Das soll aus ein "paar Webseiten" und der Steuerung des PV-Laders bestehen, also das MPP-Tracking und wenige Steuerfunktionen übernehmen. Sowas wie Lüfterregelung (wenn ichs hinkriege) oder einfaches Ein/Aus-Schalten der Spannungswandler, die nachts nicht laufen müssen. Die Webseiten müssen nicht besonders hübsch aussehen oder bunt animiert sein, sie müssen nur zweckdienlich und funktionell sein. Mit CSS lässt sich recht viel machen und das ist alles nur Text, den man dafür übertragen muss. Ich schätze das Projekt nicht sonderlich komplex ein, aber wenn man noch nie mit der Arduino-IDE (oder einer anderen Entwicklungsumgebung/Sprache) gearbeitet hat, dann könnte es trotzdem unerwartet schwer werden, das hinzukriegen. > Du kannst dieses Zeug auch auf einem beliebigen Webserver im > Internet hosten und vom Controller nur eine nahezu leere Seite > ausliefern die das Zeug vom Webserver einbindet. Korrekt, sollte aber nicht erforderlich sein. Ich mache mir eher Sorgen darüber, ob sich die Bibliotheken miteinander vertragen, also sich nicht um den I2C-Bus prügeln wenn man sie in schneller Folge benutzt usw. Zwei Fragen hätte ich noch... Gibt es einen Unterschied zwischen #include "xxx" und #include <xxx>? Und kann man auf dem ESP-Modul etwas Speicher für eigene Variablen bekommen, die man gerne dauerhaft speichern möchte (z.B. WLAN-Zugangsdaten oder Kalibrationswerte) oder baut man sich dafür besser gleich noch einen I2C-EEPROM mit drauf? Danke euch!
Ben B. schrieb: > nd kann man auf dem ESP-Modul etwas Speicher für eigene Variablen > bekommen, die man gerne dauerhaft speichern möchte (z.B. > WLAN-Zugangsdaten oder Kalibrationswerte) https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/storage/nvs_flash.html Ben B. schrieb: > Würdest Du einem Arduino- genauso wie ESP-IDF-Anfänger eher raten, auf > ESP-IDF zu gehen und das zu lernen anstelle Arduino? > > Ich hatte mich jetzt für Arduino entschieden, da es dort viele > Bibliotheken für die beiden Schaltkreise gibt, die ich einsetzen wollte > (I2C ADC und DAC). Schau dir mal VS Code + PlatformIO an.
:
Bearbeitet durch User
Ben B. schrieb: > Gibt es einen Unterschied zwischen #include "xxx" und #include <xxx>? Es sollte, Arduino hält sich nur nicht dran. Ersteres bezieht sich auf Includes im Sketch Ordner, das andere durchsucht alle Include Ordner aus den Arduino Libs. Ben B. schrieb: > Und kann man auf dem ESP-Modul etwas Speicher für eigene Variablen > bekommen, die man gerne dauerhaft speichern möchte (z.B. > WLAN-Zugangsdaten oder Kalibrationswerte) oder baut man sich dafür > besser gleich noch einen I2C-EEPROM mit drauf? LittleFS wurde schon genannt, da hat man eine Möglichkeit Dateien hochzuladen. Für eine Variable geht auch RTC_DATA_ATTR, wenn's mehr sein soll ginge auch die EEPROM Library. Randomnerdtutorials hat alles anfängerfreundlich erklärt. Ben B. schrieb: > Allerdings ist darin wohl nicht nur ein "Image" gespeichert, sondern > drei - wodurch die für ein Programm maximal nutzbare Größe auf 1,3MByte > reduziert ist. Wenn Du in Arduino ein anderes Partition Scheme auswählst hast Du mehr Speicher, z.B. huge_app
:
Bearbeitet durch User
Ben B. schrieb: > Die Webseiten müssen nicht besonders hübsch aussehen oder bunt animiert > sein, sie müssen nur zweckdienlich und funktionell sein Für den Fall kann ich dir die Seite von fips empfehlen. https://fipsok.de/ Da findest du auch die Möglichkeit, die Site ins FS zu packen.
Ben B. schrieb: > Würdest Du einem Arduino- genauso wie ESP-IDF-Anfänger eher raten, auf > ESP-IDF zu gehen und das zu lernen anstelle Arduino? Wenn du grknds einigermaßen programmieren kannst würde ich ESP-IDF empfehlen. Damit hast du einfach alle Flexibilität. Ben B. schrieb: > Ich hatte mich jetzt für Arduino entschieden, da es dort viele > Bibliotheken für die beiden Schaltkreise gibt, die ich einsetzen wollte > (I2C ADC und DAC). Das IDF enthält ziemlich gute Treiber für die ganze interne Peripherie des ESP32, damit ist Ansteuerung des I2C, ADC usw kein Problem. IMO ist das IDF sogar das am Besten strukturierte und mächtigste unter den gängigen Embedded Frameworks. Allerdings sind natürlich keine Treiber für externe ICs drin. Da kannst du schauen ob du die extern einbinden kannst, oder ggf. einfach selber schreiben, die meisten ADCs o.ä. sind da nicht besonders anspruchsvoll. Ben B. schrieb: > Zwei Fragen hätte ich noch... > Gibt es einen Unterschied zwischen #include "xxx" und #include <xxx> Das ist nicht ESP32 spezifisch sondern Standard C. Spitze Klammern sind für Header von Bibliotheken, welche in speziellen dem Compiler mitgeteilten Pfaden befinden; Anführungszeichen werden bei Headern des selben Projekts genutzt.
Ben B. schrieb: > Und kann man auf dem ESP-Modul etwas Speicher für eigene Variablen > bekommen, die man gerne dauerhaft speichern möchte Dafür gibt es Preferences im LittleFS.
Steckt in deiner Anwendung irgendeine Echtzeitanforderung (~Microsekundenbereich) die gleichzeitig mit dem Web Teil funktionieren muss? Weil wenn ja, dann ist weder Arduino noch ein Dateisystem eine Option.
Viel zu lesen das ist. Danke euch! Die Internetseiten werden wirklich nur einfach und auch nicht viele. Eine Hauptseite (HTML), einmal CSS, einmal JavaScript und dann noch eine oder zwei reine Messwert-Ausgaben (wenn ich mir die Mühe mache JSON, ansonsten ohne spezielles Format). Im Wesentlichen spare ich mir damit das Display und kann mir mit einem Webserver ein Monitoring bauen. Als "Bonus für später" hebe ich mir eine Eingabemaske für die WLAN-Daten und evtl. eine kleine Benutzerverwaltung bzw. Geräte-Passwort auf. Die Bibliotheken (für die I2C-Devices) selbst schreiben würde ich evtl. machen, wenn ich den ESP32 bzw. dessen Hardware besser kennen würde. Da sind aber ein paar Fragen, auf die ich erst noch Antworten finden muss bzw. keine Erfahrung habe. Ich weiß z.B. nicht, ob ich das Timing selbst erledigen muss wenn mehrere zusammenhängende Bytes über den I2C geschickt werden müssen (Messergebnisse) oder ob die Hardware des ESP32 das selber kann (irgendwelche Puffer). Da weiß ich auch noch nicht, ob sich die beiden Adafruit-Bibliotheken miteinander vertragen, etwa wenn man dem DAC eine Sollwertvorgabe schickt und unmittelbar danach einen Messwert vom ADC lesen möchte oder anders herum. Also werden dann beide Bus-Aufgaben sauber nacheinander ausgeführt oder mischen die sich gegenseitig einmal kräftig durch, so daß man das Abarbeiten der ersten Aufgabe selbst überwachen und abwarten muss. Und wenn man warten muss (was für das Steuerprogramm nicht tragisch wäre), laufen dann andere Aufgaben wie evtl. eine Uhr und WiFi sauber weiter oder blockiert sich das... das weiß ich alles noch nicht. Mit C habe ich leider noch nicht viel gemacht, das ist mein großer Makel bei Programmiersprachen. Mit PHP bin ich sehr fit, ich mag die Flexibilität... aber das bezeichnen viele als großen Makel von PHP. PHP soll ähnlich sein wie C - aber so richtig ähnlich empfinde ich es nicht.
> Steckt in deiner Anwendung irgendeine Echtzeitanforderung > (~Microsekundenbereich) die gleichzeitig mit dem Web Teil > funktionieren muss? Nein. Deswegen überlasse ich die Erzeugung von PWM usw. externen Schaltkreisen und gebe denen nur mit dem DAC einen Sollwert vor. Was ich vielleicht brauche, ist eine 25kHz PWM für die Ansteuerung eines drehzahlgeregelten Lüfters, die der ESP32 selbst machen müsste. Aber wenn die durch WiFi-Aufgaben kurze Glitches bekommt, ist das wahrscheinlich egal. Da bin ich noch nicht, weil für eine Temperaturregelung bräuchte ich auch einen ADC-Kanal des ESP32 (auf dem ADS1115 ist keiner mehr frei). Oder alternativ einen I2C Temperatursensor am Kühlkörper.
Auf die Wahl der richtigen GPIOs achten 34 35, ADC2 verträgt sich nicht mit WiFi.
Ben B. schrieb: > Da weiß ich auch noch nicht, ob sich die beiden Adafruit-Bibliotheken > miteinander vertragen, Warum sollten die das nicht machen ? Immerhin bist du als Programmierer für deinen Code verantwortlich. Also musst du darauf achten, dass alles sauber abläuft. Ich vermute mal, du siehst da Probleme, wo keine sind. Und wenn du nur Temperatur messen möchtest, tut es auch ein "OneWire" DS18B20.
Alexander schrieb: > Auf die Wahl der richtigen GPIOs achten 34 35, ADC2 verträgt sich nicht > mit WiFi. aber das weißt Du ja bereits Beitrag "Re: ESP32: Wie das beste aus dem ADC herausholen?"
Ja, mit dem ADC des ESP32 habe ich mich schon mal auseinandergesetzt...
für so'n Freischuss wie 'ne Temperaturmessung reichts, für alles andere
eher nicht.
> Ich vermute mal, du siehst da Probleme, wo keine sind.
Ehrlich gesagt hoffe ich das. Das ist besser als anders herum, wenn da
vielleicht ein schwerwiegendes Problem wartet und ich es nicht sehe. Mir
fehlt halt noch jede Erfahrung mit dem ESP32 und Arduino. Über die
Hello-Worlds bin ich drüber, nun gehts ans Eingemachte...
Dann noch mal den Tipp zum ESP32-S3 WROOM N16R8, der ist sehr leistungsstark und läuft bei mir im Dauertestbetrieb mit 433MHz Funk, Webseite, UDP, TCP, TFT-Display und Sensor BME280 problemlos. Und auch in der Arduino IDE programmiert.
:
Bearbeitet durch User
Dieter S. schrieb: > Dafür gibt es Preferences im LittleFS. Hat beides nichts miteinander zu tun. Kann man getrennt verwenden. Üblicherweise entweder oder.
Veit D. schrieb: > Hat beides nichts miteinander zu tun. Kann man getrennt verwenden. > Üblicherweise entweder oder. Ja und nein....man kann auch beides nutzen.
Dieter S. schrieb: > Für den Fall kann ich dir die Seite von fips empfehlen. > https://fipsok.de/ Einige Codes auf dieser Seite sind leider fehlerhaft, manchmal sind es kleine Sachen, Einiges habe ich nicht zum Laufen gebracht. Gruss Chregu
Christian M. schrieb: > Einiges habe ich nicht zum Laufen gebracht. Das Problem kenne ich, liegt aber sicher nicht an den Codes.
Wenn du beim Webcontent auch noch sparen möchtest kannst du die Dateien auch noch gzippen. Danach die Datei wieder wie das Original benennen (z.B. index.html). Dann musst du noch das Content-Encoding im Header deiner Response richtig setzen (gzip). Damit weiß dein Browser das es gepackt ist und entpackt es Hintergrund. Merkt man nichts davon dass es langsamer wäre. Bringt aber gerade bei den kleinen Devices auf 2 Arten was: Content nimmt weniger Platz weg im Flash und wird schneller übertragen weil insgesamt weniger Daten.
:
Bearbeitet durch User
Traust du dir zu den zu öffnen und dir 16,7MB Flash rein zu löten? Brauche nur die Bauform die auf dem ESP Modell von dir drauf ist, dann schau ich ob ich einen passenden habe. Bei denen welche ich bisher modifiziert habe war es soic, einen mit 16,7MB hab ich noch dafür. Danach kurz mit esptool dran, mit --flash_size detect, passende Partitionstabelle vorher Wahlen, funktioniert normalerweise super.
@kilo Im Moment warte ich das erstmal ganz entspannt ab. Ich bin immer noch beim Wandler zusammenlöten, die Software kommt danach. Die Internetseiten werden wie gesagt erstmal nicht besonders umfangreich. Paar Kilobyte Text. Das wird erst mehr wenn man die WLAN-Zugangsdaten variabel macht oder eine konfiguierbare Benutzerverwaltung einbaut. Dann muss man sich plötzlich mit möglichen Fehleingaben usw. herumschlagen und das wird deutlich komplexer, als nur die Messdaten übers WLAN verfügbar zu machen. Wenn man Änderungen an dem Modul vornimmt, wie beispielsweise die Flash-Konfiguration ändert, so daß man die halbe Flash-Größe für die Applikation benutzen kann (kein OTA-Update), kommt die Arduino-Umgebung mit der geänderten Größe klar? Das Ding aufmachen und den Flash tauschen würde ich gerne vermeiden, das wäre wirklich die aller letzte Option. Wahrscheinlich kaufe ich vorher ein anderes Modul mit großem Flash. Ich denke aber, so umfangreich wird die Software für das Ding nicht - evtl. passt alles in die 1,3Mbyte und mit 2Mbyte Platz sollte es auf jeden Fall reichen.
Ben B. schrieb: > kommt die Arduino-Umgebung mit der geänderten Größe klar? Bisher hab ich keine klagen von meinem Kollegen gehört, für den ich ein paar auf 16MB umgebaut habe.
Ben B. schrieb: > kommt die Arduino-Umgebung mit der geänderten Größe klar? Arduino IDE verlässt sich ganz auf das ESP32 Arduino Framework. Was auch immer in boards.txt drin steht wird gemacht. Du sagtest Du hast ein NodeMCU-32S deswegen kannst Du das nicht wissen, aber es ist nur ein Klick. Wenn Du deine Boardauswahl änderst auf "ESP32 Dev Module" (die alten Einträge soll man gar nicht mehr nutzen) dann siehst Du dann auch das "Partition Scheme" Drop-down Menü. Dort wählst Du dann den entsprechenden Eintrag aus der boards.txt aus. Wenn Dir "Huge App" nicht reicht gibt's auch den Eintrag "Custom".
Okay, das mit dem Custom-Board klingt plausibel. Übernimmt die Arduino-IDE beim Übertragen des Codes die Änderungen, also kann die das Board passend umkonfiguieren wie man es dort einstellt? Was mir dabei aufgefallen ist: "Events" und "Arduino" läuft beides auf Core 1. Macht es Sinn, eines von beiden auf Core 0 umzustellen oder passt das so wie es ist am besten?
Arduino ist keine STM32CubeIDE da wird nichts boardspezifisches im Code hinterlegt. Man kann das Board vor problemlos ändern, kompiliert halt beim ersten Mal bisschen länger. Ich nutze xTaskCreatePinnedToCore() und weise den Core dem entsprechenden Task explizit zu, um die IDE Einstellungen habe ich mich nie gekümmert. Das sind so schöne Anfängerfragen, ich freue mich dass ich auch mal helfen kann.
Tja, so ist das halt, aber freut mich wenn Dich das freut. Ich denke nicht, daß ich besonders viel Rechenleistung brauche, aber ich weiß auch nicht wie schlau der Compiler ist, den die Arduino-IDE verwendet. Oder ob der Core 0 beim ESP32 am besten frei gehalten werden sollte, damit der sich um den WiFi-Kram kümmern kann und Core 1 macht den Rest. Oder eben wie dieser Flash organisiert sein muss, ob man da problemlos eines dieser Dateisysteme "aktivieren" kann, was die Arduino-IDE so anbietet (fatfs?), ob die Arduino-IDE das passend ändert oder ob man das vorher machen muss, bevor man das Modul mit der Arduino-IDE verwendet. Ich mag das Ding auch nicht schrotten, etwa daß man es nicht mehr flashen kann oder der ESP32 nicht mehr von dem Flash starten kann. Da hat jeder Controller so seine Stolperfallen und es ist schade, daß man die nicht alle kennt bevor man hineingetappt ist.
Das mit dem Wifi kann gut möglich sein. Das Dateisystem FatFS hab ich mir noch nicht angeguckt, benötigt anscheinend 4096 Bytes für das Wear Leveling am Start der Partition. Würde erstmal mit LittleFS (ex SPIFFS) anfangen, dafür gibt es dann auch für die IDE 2 wieder ein Add-on zum Dateien hochladen ("Tools" -> "ESP32 Sketch Data Upload" funktioniert nicht mehr, da kein Java) https://randomnerdtutorials.com/arduino-ide-2-install-esp32-littlefs Das ist aber nur relevant wenn du Dateien von der IDE hochladen willst. Dazu einen Order "data" anlegen, alles was da drin liegt kann mit dem Add-on einmalig auf die Partition kopiert werden, und bleibt dann auch dort bis Du es wieder löschst.
Eigentlich ist mir das Dateisystem "egal", eigentlich brauche ich keines und ich möchte auch aus der Applikation heraus keine häufigen Schreibzugriffe auf den Flash machen. Was ich evtl. später brauche wäre vielleicht 1kByte Platz, um sowas wie die WLAN Zugangsdaten oder ein paar Benutzer mit Passwort zu speichern. Ich weiß nicht, ob man diese "paar Bytes" ohne großen Aufwand direkt auf dem ESP32-Modul bekommt - wenn nicht, baue ich mir auch noch ein kleines EEPROM an den I2C.
Ben B. schrieb: > baue ich mir auch noch ein kleines EEPROM an den I2C. Ich hatte dir schon mal den Tipp gegeben, Preferences dafür zu nutzen. Oder liest du nicht das was dir geschrieben wird ? Da ist deutlich einfacher, als mit einem EEprom.
Hier noch mal das Beispiel für eine Textdatei (siehe Link)
1 | #include "LittleFS.h" |
2 | void setup() { |
3 | Serial.begin(115200); |
4 | LittleFS.begin(); |
5 | }
|
6 | void loop() { |
7 | File file = LittleFS.open("/test_example.txt", "r"); |
8 | Serial.println("File Content:"); |
9 | while(file.available()){ |
10 | Serial.write(file.read()); |
11 | }
|
12 | file.close(); |
13 | }
|
Der einzige "Aufwand" den Du hast ist das Add-on erstmalig für Deine Arduino IDE einzurichten. Um mehr brauchst Du dich nicht zu kümmern, Parition usw. geschieht alles automatisch. Also weniger denken, einfach machen, so wie sich das für einen Arduino-Nutzer gehört.
:
Bearbeitet durch User
Ben B. schrieb: > Eigentlich ist mir das Dateisystem "egal" Und wenn du LittleFS auf dem ESP32 nutzt, kannst du darin deine Website ablegen und musst nicht den kompletten ESP32 flashen, wenn da mal eine Änderung an der Seite gemacht werden muss.
> Ich hatte dir schon mal den Tipp gegeben, Preferences dafür zu nutzen. > Oder liest du nicht das was dir geschrieben wird ? > Da ist deutlich einfacher, als mit einem EEprom. Ich lese es, aber für mich sind das alles Böhmische Dörfer, die ich natürlich gerne vermeiden möchte. Bzw. ich habe kein Problem damit, Neues auszuprobieren, aber immer etwas Respekt davor, daß es nicht funktioniert. Es dauert halt, Vertrauen in eine neue Entwicklungsumgebung zu finden (die Arduino IDE, die ich für den ESP32 brauche). Wenn sich beispielsweise nach ein paar Stunden Betrieb der I2C-Bus festfährt, weil man inkompatible oder nicht fehlerfreie Bibliotheken oder sowas benutzt hat, dann habe ich damit ein großes Problem. Das Gleiche mit irgendwelchen mir derzeit noch völlig unbekannten Dateisystemen auf dem Flash. Wenn ich da irgendwas einstelle, wodurch das ESP32-Modul nicht mehr startet und nicht mehr geflasht werden kann (z.B. beim AVR den Bootloader gekillt oder falsche Fuses gesetzt), dann habe ich nichts erreicht. Alex, welche Bibliothek würdest Du für littleFS empfehlen und welche Einstellungen braucht das ESP32-Modul dafür?
Lass mich gucken... gar keine. die LittleFS Library von lorol ist bereits im Framework integriert. Du musst nur einen "data" Ordner im Sketch Verzeichnis erstellen und Deine Dateien da hinein legen. Für das Add-on kopierst Du die Datei "arduino-littlefs-upload-1.5.4.vsix" in den %UserProfile%\\.arduinoIDE Ordner "plugins" (vorher anlegen) https://github.com/earlephilhower/arduino-littlefs-upload
:
Bearbeitet durch User
Beitrag #7876199 wurde vom Autor gelöscht.
Hmpf, lapsus calami. Aber noch selbst gefunden. Welche Einstellung sollte man dann beim 4Mbyte Flash wählen wenn man LittleFS verwenden will? Ist die originale Einstellung mit den für die Applikation verfügbaren 1,2MByte und SPIFFS dafür okay oder muss man da was ändern?
Ben B. schrieb: >> (z.B. beim AVR den Bootloader gekillt oder falsche > Fuses gesetzt), dann habe ich nichts erreicht. Das ist auch völlig etwas anderes. Und ja, du hast etwas dazu gelernt. Ich hatte dir auch schon den Link von fips gepostet. Da wird das LittleFS sehr komfortabel gehandhabt. Direkt aus dem Sketch heraus und mit einer passenden Webseite.
> Und ja, du hast etwas dazu gelernt.
Ich gebe mir zumindest Mühe, aber es fühlt sich noch nicht so an.
Die meisten Sachen sind leider viel mehr als ich brauche und dadurch
kostet es viel Zeit, diese gut zu verstehen - um am Ende das bißchen,
was ich brauche, herauszunehmen. Versteh das bitte nicht als Angriff
oder Unfreundlichkeit - aber wenn ich zur Versorgung einer 60W Glühlampe
ein Atomkraftwerk bauen muss, was problemlos auch 1600MW schafft, dann
macht das am Ende zwar die Glühlampe hell, aber ist wenig zweckmäßig.
Ich brauche wirklich keine großen Internetseiten im Flash oder einen
Dateimanager in der Applikation, sondern wirklich nur ein Kilobyte an
beschreibbarem Speicher...
Auf dem ESP32 habe ich sowieso nichts wie PHP oder so, sondern ich muss
die HTTP-Requests komplett selbst verarbeiten und die HTML-Antwort
zusammensetzen. Da nutzt es mir doch nichts, z.B. Scripts (wie x.php) in
einem Dateisystem abzulegen... oder übersehe ich was?
Am Ende landen alle HTML-Seiten (wenn man diese denn so nennen möchte)
sowieso im Code weil sie durch diesen dynamisch erzeugt werden und das
einzige, was ich von einem Dateisystem am Ende nutze ist, eine kleine
Datei einmal beim einzulesen und ein paar Variablen damit zu laden und
diese Datei bei Änderungen ins Dateisystem zu speichern. Mehr nicht.
Ben B. schrieb: > Die meisten Sachen sind leider viel mehr als ich brauche Das mag zwar sein, trotzdem ist es oft einfacher fertiges zu benutzen als etwas genau passendes für seinen Anwendungsfall selbst zu schreiben. Dann kann man eben deutlich mehr als man braucht. Was soll's. Solange genug Ressourcen vorhanden sind ja kein Problem. Die oben genannten Libraries sind im Normalfall sehr leicht zu bedienen. Ben B. schrieb: > Auf dem ESP32 habe ich sowieso nichts wie PHP Das stimmt, aber wer will heute überhaupt noch PHP. Ben B. schrieb: > sondern ich muss die HTTP-Requests komplett selbst verarbeiten und die > HTML-Antwort zusammensetzen. Das eben nicht. Im Normalfall ist das HTML komplett statisch und wird in keinster Weise modifiziert bevor es ausgeliefert wird. Die dynamischen Sachen wie aktuelle Prozesswerte, Daten werden dann danach dynamisch abgerufen. Das macht das Filesystem eben gerade so hilfreich. Um die Auslieferung der statischen Files muss man sich nicht mehr kümmern. Nur noch um die dynamischen Daten. Ben B. schrieb: > Am Ende landen alle HTML-Seiten (wenn man diese denn so nennen möchte) > sowieso im Code Im Flash. Ben B. schrieb: > weil sie durch diesen dynamisch erzeugt werden Nö, siehe oben.
>> sondern ich muss die HTTP-Requests komplett selbst verarbeiten >> und die HTML-Antwort zusammensetzen. > Das eben nicht. Im Normalfall ist das HTML komplett statisch > und wird in keinster Weise modifiziert bevor es ausgeliefert > wird. Die dynamischen Sachen wie aktuelle Prozesswerte, Daten > werden dann danach dynamisch abgerufen. Dafür brauche ich maximal drei Dateien. Man könnte CSS und JS auch mit in die Landing Page packen. Etwas unübersichtlicher, aber dann ist es nur noch eine einzige Datei. Dafür gleich ein ganzes Filesystem empfinde ich als Overkill. Spätestens bei der Erzeugung der Antwort, die die Messwerte beinhaltet, bin ich doch wieder bei dynamischem HTML/HTTP (bzw. es ist für die Technik egal, ob man dort HTML oder irgend ein anderes Dateiformat überträgt) und muss das im Code erledigen. >> Auf dem ESP32 habe ich sowieso nichts wie PHP > Das stimmt, aber wer will heute überhaupt noch PHP. Anderes Thema. Ich mag PHP und jede andere Programmiersprache hätte ich genau so nicht auf dem ESP zur Verfügung.
Ben B. schrieb: > Die meisten Sachen sind leider viel mehr als ich brauche Ja, da kann man sich das benötigte raussuchen. Aber ok, ich kann dich verstehen, nur wie schon geschrieben wurde, "das Rad nochmals zu erfinden", ist sicher mühevoll und zeitraubend. Dann lieber auf fertige Module setzen und die anpassen.
Ben B. schrieb: > Etwas unübersichtlicher, aber dann ist es nur noch eine einzige Datei. > Dafür gleich ein ganzes Filesystem empfinde ich als Overkill. Ja, wie gesagt. Wenn man etwas fertiges hat mache ich mir erst Gedanken wenn es von der Performance oder dem Platz ein Problem gibt. Ansonsten nehme ich gerne Standard Dinge. Wenn morgen doch noch 28 Files dazu kommen musst du dann nichts mehr ändern. Ben B. schrieb: > Dafür brauche ich maximal drei Dateien. Man könnte CSS und JS auch mit > in die Landing Page packen. Etwas unübersichtlicher, aber dann ist es > nur noch eine einzige Datei. Ja klar, kann man machen. Die Argumente dagegen hast du ja schon selbst gebracht. Ben B. schrieb: > Spätestens bei der Erzeugung der Antwort, die die Messwerte beinhaltet, > bin ich doch wieder bei dynamischem HTML/HTTP Ne, die HTML kann doch komplett statisch sein. Sie wird einmalig an den Client(Browser) ausgeliefert. In dieser Seite steht dann ein bisschen Javascript, das dann einen Fetch/GET auf die eigentlichen Daten macht. Zurück kommt dann ein Mini Datum (z.B. etwas JSON). Das bekommt dann dein Fetch/GET Request auf deinen Client, der sucht sich das richtige DOM Element raus und ersetzt diese kleine Stelle mit den aktuellen Daten. Wenn du das immer im HTML patchen würdest, hättest du zum einen einen ziemlichen Aufwand im uC weil du ständig String Ersetzung machen musst und zweitens weil du ständig die Seite KOMPLETT neu ausliefern musst. Ben B. schrieb: > Anderes Thema. Ich mag PHP und jede andere Programmiersprache > hätte ich genau so nicht auf dem ESP zur Verfügung. Sollte nicht abwertend sein, aber meinem Empfinden nach wird es immer weniger verwendet. Aber auch da gilt... Wenn man damit ins Ziel kommt.
Mir ist schon klar wie das funktionieren soll und ich hatte das auch so geplant - aber ich komme nicht drum herum, diese JSON-Ausgabe (falls man sich die Mühe mit JSON macht und nicht einfach eigene Symbole verwendet) im Code zusammenzubasteln. Wenn man dann später noch sowas wie eine kleine Benutzerverwaltung einbaut (wo man die Fehleingaben der DAUs abfangen muss), dann wird das noch viel schlimmer.
Ben B. schrieb: > Mir ist schon klar wie das funktionieren soll Hm OK. Dann verstehe ich nicht warum du mehrmals davon redest dass man da dynamisch HTML Dateien/Daten auf dem Controller zusammenbauen muss. Ben B. schrieb: > diese JSON-Ausgabe (falls man sich die Mühe mit JSON macht und nicht > einfach eigene Symbole verwendet) im Code zusammenzubasteln Wenn der Server nur liefern muss ist das billigste Technik. Ich habe das vor kurzem mit einem Cortex M0 gemacht. Selbst der bekommt das mit 3-6ms Response Time hin. Da kotzt der Browser! Zugegebenermaßen ohne Arduino Framework. Im einfachsten Fall sieht das so in der Art aus:
1 | snprintf(pReturn,50,"{\"ts\":%d,\"adc\":[%d,%d,%d]}",ts,adc1,adc2,adc3); |
JSON hat hat halt den Vorteil dass es dein Browser ohne großes zutun in ein Objekt parst. Ben B. schrieb: > Wenn man dann später noch sowas wie eine kleine Benutzerverwaltung > einbaut (wo man die Fehleingaben der DAUs abfangen muss), dann wird das > noch viel schlimmer. Wenn du nicht damit rechnen musst dass einer mutwillig Falscheingaben macht sondern nur versehentliche, dann kannst du das auch Clientseitig im HTML Form abfangen. Macht es für den Controller einfacher. Wenn du das auch noch ausschließen möchtest gibt es sehr kompakte Header only JSON Libraries die das für dich abfangen. Stichwort ArduinoJSON oder nlohmann JSON. Die checken nicht nur die Validität des JSON selbst sondern mit Custom Konverter oder beim zuweisen (je nach Librarie) auch den Inhalt jedes einzelnen Elements.
Ben B. schrieb: > Anderes Thema. Ich mag PHP Ich auch. C/C++ ist vom Syntax doch Recht ähnlich, daher finde ich fällt das lesen des Code selbst relativ leicht. Schwer wird es bei der, ich nenne es mal "Abstraktion", hier haben wir keine "einheitliche" Referenz wie in PHP. STM ist da auch nicht immer der gleiche STM, wie ich bei den Puya aus den Vapes lernen durfte. So manches Beispiel läuft erst wenn du den MCU echt "kennenlernst". Der Arduino Kram mit den "offiziellen" und gut unterstützten Boards ist eigentlich echt unkompliziert, learning by doing ohne "tiefe" Details. Wirklich einfach, damit klappt bei mir meist in kurzer Zeit an Hand von bearbeiteten Beispielen alles mögliche. Da ist auch der Sprachgebrauch wie bei PHP, dank des Framework Recht einheitlich. Du darfst nur nicht im Ablauf denken wie bei PHP, den Fehler mache ich noch häufig, das klappt nicht gut, immer wenn ich in diese Muster verfalle wird es instabil oder liefert völligen schwachfug an Ergebniss.
:
Bearbeitet durch User
> Im einfachsten Fall sieht das so in der Art aus: [..] Plus den HTTP-Header. > JSON hat hat halt den Vorteil dass es dein Browser > ohne großes zutun in ein Objekt parst. Wenn man die Symbole passend wählt, so daß sie nur ein einziges Mal in den Daten vorkommen dürfen, sollte man da auch mit ein wenig JavaScript hinbekommen, das sehe ich nicht als Problem. JSON hätte lediglich den Vorteil, daß man es in irgendwelche Heim-Automatisierung einbinden könnte, aber sowas verwende ich im Moment nicht und eine Weitergabe des Projekts ist derzeit nicht geplant. > Wenn du nicht damit rechnen musst dass einer mutwillig > Falscheingaben macht sondern nur versehentliche, dann > kannst du das auch Clientseitig im HTML Form abfangen. Wenn, dann mache ich das richtig. Man weiß nie, wann ein DAU oder Scriptkiddie vorbeikommt. So, und nun muss ich nochmal ein wenig was über das LittleFS nachfragen. Angenommen ich will das benutzen, um sowas wie Benutzerdaten zu speichern - wie richte ich das ein, also die Größe des Dateisystems und in welchem Bereich der Flash-Partitionen wird das dann gespeichert? So wie ich das sehe, muss man das ja auch formatieren. Wenn ich dann einfach eine oder mehrere kleine Dateien aus der Applikation heraus auf dieses Dateisystem schreiben (und natürlich wieder von da lesen) kann, reicht mir das und löst das Problem, daß ich später evtl. etwas EEPROM-Speicher bräuchte.
Ben B. schrieb: > LittleFS nachfragen. Dafür ist Preferences besser geeignet, hatte ich auch schon geschrieben. Das wird aber auch automatisch im LittleFS abgelegt.
Ben B. schrieb: > So, und nun muss ich nochmal ein wenig was über das LittleFS nachfragen. Hab Dir eine PM geschickt heute morgen, ist die nicht angekommen?
Bitte um Entschuldigung, aber könnt ihr's mir nicht "einfach" so erklären, daß ich es auch verstehe? :) "Preferences" in diesem Zusammenhang sagt mir schon wieder gar nichts und wenn das seine Daten in diesem LittleFS ablegen möchte, dann muß ich das LittleFS dafür trotzdem zum Laufen bekommen - und möglichst gut verstehen. Die Webseite von fips habe ich mir nochmal angeschaut, sowie den alten Thread. Wahrscheinlich würde ich diese Dateiverwaltung von fips zum Laufen bekommen, (vorausgesetzt, die Arduino IDE richtet die Voraussetzungen für LittleFS automatisch ein), aber dann weiß ich immer noch nicht, wo diese Daten hinterher tatsächlich auf dem Flash liegen, bzw. von welcher Partition auf dem Flash der Platzbedarf weggeht. Edit @Alex: PNs kommen bei mir leider nie an, entschuldige.
:
Bearbeitet durch User
Ben B. schrieb: > PNs kommen bei mir leider nie an, entschuldige. dann halt öffentlich https://www.youtube.com/watch?v=22AP0pmcsJE
:
Bearbeitet durch User
Ben B. schrieb: > Plus den HTTP-Header. Machen dir die bekannten Libraries bei den Dateien im Filesystem anhand der Dateiendung automatisch mit. Bei den dynamischen Requests ist es eine Zeile mehr:
1 | snprintf(pReturn,50,"{\"ts\":%d,\"adc\":[%d,%d,%d]}",ts,adc1,adc2,adc3) |
2 | request->send(200, "application/json", pReturn); |
Eine weitere Zeile würde noch beim Komprimieren dazu kommen. Vielleicht gibt es aber sogar eine Methode wo man alles auf einmal machen kann. Hab ich nicht nachgesehen. Ben B. schrieb: > Wenn man die Symbole passend wählt, so daß sie nur ein einziges Mal in > den Daten vorkommen dürfen, sollte man da auch mit ein wenig JavaScript > hinbekommen, das sehe ich nicht als Problem. Wenn du selbst Parsen möchtest. Feel free. Ben B. schrieb: > JSON hätte lediglich den Vorteil, daß man es in irgendwelche > Heim-Automatisierung einbinden könnte, aber sowas verwende ich im Moment > nicht und eine Weitergabe des Projekts ist derzeit nicht geplant. Die HA können auch nicht nur JSON sondern diverse bekannte Formate. Nach der Logik kannst du den gleichen Parser was du in Javascript geschrieben hast einfach nochmal schreiben ;-) IOBroker ist glaube ich JS. Da könntest du den sogar nochmal verwenden :-D Ich sehe den größten Vorteil in JSON darin, dass es ein weit verbreiteter Standard ist. Außerdem das JSON in vielen Sprachen bereits standardmäßig unterstützt wird. Und dass du nahezu beliebige Objekte abbilden kannst ohne selbst etwas programmieren zu müssen. Ben B. schrieb: > Wenn, dann mache ich das richtig. Man weiß nie, > wann ein DAU oder Scriptkiddie vorbeikommt. Eine Lösung dazu hatte ich ja schon genannt. Aber ich glaube ich Klinke mich an der Stelle aus. Ist mir zu anstrengend. Bin ja kein Zeuge Jehovas der dir etwas aufschwatzen muss. Viel Erfolg mit dem Projekt
Ben B. schrieb: > Preferences" in diesem Zusammenhang sagt mir schon wieder gar nichts > und wenn das seine Daten in diesem LittleFS ablegen möchte, dann muß ich > das LittleFS dafür trotzdem zum Laufen bekommen Preferences ist eine Libraty, die per Library Manager in der IDE installiert wird. Die Verwendung ist sehr einfach und du musst dazu LittleFS nicht installieren, die Nutzung passiert im Hintergrund, ohne dein Zutun. Hier eine gute Beschreibung: https://randomnerdtutorials.com/esp32-save-data-permanently-preferences/
:
Bearbeitet durch User
Achso, eine Library. Okay. Weißt Du auch die Antworten zu meinen restlichen LittleFS-Fragen? >> [DAU-Formular-Eingabefehler] > Eine Lösung dazu hatte ich ja schon genannt. Jain. Wenn ich mich vor manipulierten Anfragen schützen möchte, bleibt nichts anderes übrig, als die Eingaben auf dem ESP32 zu überprüfen. > Aber ich glaube ich Klinke mich an der Stelle aus. > Ist mir zu anstrengend. Hehe. Konzept- und Arduino-Anfängerfragen. Sorry dafür. :)
Ben B. schrieb: > Wahrscheinlich würde ich diese Dateiverwaltung von > fips zum Laufen bekommen, (vorausgesetzt, die Arduino IDE richtet die > Voraussetzungen für LittleFS automatisch ein), aber dann weiß ich immer > noch nicht, wo diese Daten hinterher tatsächlich auf dem Flash liegen, > bzw. von welcher Partition auf dem Flash der Platzbedarf weggeht. Wenn du die Beispiele von fips (Dateimanager) nutzt, dann wird LittleFS auf dem ESP32 im eingestellten Filesystem (FS) eingerichtet. Das wiederum hängt von deinen Einstellungen in der IDE ab. Je nachdem wie du das Partitionschema konfiguriert hast landet es im "spiffs", heute aktuell LittleFS.
Du hast doch nun schon eine Anleitung bekommen, diese besteht aus drei Schritten und einem Beispielcode - Addon installieren - (lokalen) Ordner für die Dateien anlegen - Ordner hochladen. Fertig. Alexander schrieb: > https://randomnerdtutorials.com/arduino-ide-2-install-esp32-littlefs Es ist standardmäßig eine SPIFFS Partition voreingestellt. Diese wird für LittleFS verwendet. Wenn Du die Adresse wissen willst schau in die Partitionstabelle. In der default.csv ist die an Adresse 0x290000 und Größe 0x160000 (1408 kB), in der huge_app.csv Adresse 0x310000 mit Größe 0xE0000 (896kB). Die Partition wird beim flashen nicht überschrieben. Die csv Dateien findest Du unter
1 | %UserProfile%\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.7\tools\partitions |
Ich weiß aber nicht warum Dich das interessiert, Du wählst in der IDE das Paritionsschema aus und fertig. Zu sehen bei 12:24 min. https://www.youtube.com/watch?v=22AP0pmcsJE&t=744s Obelix X. schrieb: > https://forum.arduino.cc/t/brauche-hilfe-bei-der-partitiontabelle-fuer-meinen-esp32/1205790 TMI (Trotzdem der Hinweis wenn Du auf Handarbeit stehst kannst Du natürlich eine partitions.csv in den Sketch Ordner legen und "custom" auswählen. Nur der Größencheck stimmt dann nicht mehr, das haben die einfach nicht hingekriegt. Könnte man aber noch fixen.) Wenn Du das nachgemacht hast wie im Video, dann sind Deine Fragen beantwortet. Ich konnte leider nur 15 min hochladen, 14 min davon sind Wartezeit wo die Arduino IDE rödelt. Die Tastenkombination für das Prompt ist [Ctrl] + [Shift] + [P] und zum flashen muss man den Boot Knopf drücken. Serial baud rate auf 115200 reduzieren wenns nicht klappt. Bei Problemen mit dem COM Port IDE neu starten. Serial Monitor muss geschlossen sein. Alexander schrieb: > Der einzige "Aufwand" den Du hast ist das Add-on erstmalig für Deine > Arduino IDE einzurichten. Um mehr brauchst Du dich nicht zu kümmern, > Partition usw. geschieht alles automatisch.
:
Bearbeitet durch User
Okay, ich danke Dir für Deine Mühe. Also benutzt das LittleFS die komplette Größe dieser SPIFFS-Partition. Spricht irgendwas dagegen, vorerst nicht auf Huge App zu wechseln, sondern die Default-Lösung beizubehalten? Ich glaube zwar nicht, daß ich OTA brauche, aber im Moment habe ich auch noch keine Speicherplatz-Probleme.
Mit Arduino 1.8.19 hab ich durch ein Update der ESP32 Board Plattform mal die 1310720 bytes überschritten. Durch ein Downgrade auf Version 2.0.13 hat es dann wieder gepasst. Damals hatte ich auch das NodeMCU-32s ausgewählt und nicht gewusst dass man Partitionsschema einfach über einen Klick auswählen kann. Ich hatte auch festgestellt unter Linux kompiliert es schlanker, während es unter Windows jede Header Datei mitkompiliert selbst wenn diese im Code gar nicht genutzt werden. Wie sich das mit der Arduino IDE 2.3.x unter Linux verhält weiß ich nicht. Ich hab nur ein paar mp3 Dateien im LittleFS. OTA über BLE steht bei mir noch auf der todo Liste. Ich werde mir aber erstmal Preferences anschauen, brauche ich nämlich auch gerade. Die Random Nerd Tutorials haben mir bisher immer geholfen.
Ben B. schrieb: > Ich glaube zwar nicht, daß ich OTA brauche, Und genau OTA macht den Vorteil aus. Da lassen sich die Projekte jederzeit aus der "Ferne" aktualisieren, ohne die Controller umständlich auszubauen. Wenn du das erstmal genutzt hast, möchtest du es nicht mehr vermissen. Und auch dafür gibt es bei fips sehr gute Beispiele.
:
Bearbeitet durch User
Mit OTA beschäftige ich mich ggf. wenn es soweit ist. Das läuft im Moment unter "rein sportliche Herausforderung". Aktuell ist das ein NodeMCU-32S Board, da wird USB reichen wenn mal ein Update fällig sein sollte. Es ist auch keine Serienproduktion meines Solar-Laders geplant... es würde nur wenig Sinn machen, zu versuchen, aus Deutschland heraus mit den Chinesen mithalten zu wollen. Kann man sich eigentlich eine Partitionstabelle komplett selbst bauen oder müssen da bestimmte Größen eingehalten werden, etwa für wear leveling oder so? Könnte man die 4MB vielleicht so 47% Applikation, 47% OTA und 6% SPIFFS aufteilen? Edit: Alex, was mir bei Deinem Video aufgefallen ist, was hast Du da für einen Computer verwendet? Läuft die Arduino-Umgebung wirklich so langsam? Irgendwie bin ich ja schon wieder froh, daß ich dafür eigentlich 'ne Spiele-Kiste verwendet habe und der Ryzen 3800X ist bei der Bedienung deutlich schneller. Auch wenn das Compilieren teilweise lange dauert (WiFi.h scheint riesig zu sein). Naja, ich baue erstmal den Leistungsteil weiter.
:
Bearbeitet durch User
Kannst Du machen, es muss aber das Alignment von 0x1000 eingehalten werden. Den Computer hab ich vor 6 Jahren für 10 Eur gekauft. Zu sehen bei 7:50 min. Da ist kürzlich extra für Arduino Windows 10 draufgekommen. Hab mich lange dagegen gesträubt. Also keine Sorge, langsamer wirds nicht. https://www.youtube.com/watch?v=22AP0pmcsJE&t=468s Alexander schrieb: > Habe nun Windows 10 installiert und Arduino IDE 2.3.3 getestet. Das > Add-on "Upload LittleFS to Pico/ESP8266/ESP32" funktioniert soweit, bis > auf Startschwierigkeiten mit dem COM Port. Muss man wissen. > https://github.com/earlephilhower/arduino-littlefs-upload/issues/12
:
Bearbeitet durch User
> Kannst Du machen, es muss aber das Alignment > von 0x1000 eingehalten werden. Na das klingt doch schon mal klasse, damit sollte der 4Mbyte Flash auf jeden Fall reichen. > Den Computer hab ich vor 6 Jahren für 10 Eur gekauft. Gut, in dieser Hinsicht ist mein Ryzen raus.
Schau Dir noch mal die Hinweise zu den Pins an, und schau dass Du in der Hardware ggf. Jumper einbaust falls Du irgendwo einen Pin mit Pull-Down auf GND legst oder in Benutzung haben solltest welcher für das Flashen bzw. den Bootloader eine Rolle spielt. Sonst kann es passieren Du musst das Board zum flashen immer erst von der Hardware trennen. Anfängerfehler. https://randomnerdtutorials.com/esp32-pinout-reference-gpios
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.