Erste Versuche mit einem Espressif ESP32 - Verbindungsprobleme

Guten Tag liebe Leser,

gleich vorab, ich bin vermutlich um einiges älter als die meisten Nutzer dieses Internetforums. Darum bitte ich an der Stelle etwas Nachsicht walten zu lassen, da ich sicher nicht den gleichen Kenntnisstand wie viele von Euch habe.
Trotzdem versuche ich als Rentner an der tollen Digitalisierung teilzunehmen.

Während der Pandemie habe ich mit einen Arduino Uno ein paar kleinere Experimente durchgeführt und habe gefallen daran gefunden. Nun habe ich mir einen ESP32 gekauft und will mit diesem Arbeiten.
Es handelt sich um einen Espressif ESP32 WLAN Dev Kit (so die Aufschrift auf der Packung) und auf dem Chip steht "WiFi WROOM 32".
Nun habe ich die Arduino IDE 2.0.4 installiert und den ESP über ein USB Kabel angeschlossen. Die rote LED leuchtet und das charakteristische "Ping" am Rechner, dass ein neues Gerät angeschlossen ist, kommt auch.

Die zusätzlichen Board Verwalter habe ich in den Einstellungen heruntergeladen und kann unter "Werkzeuge/Boards/" auch die Kategorie "ESP32 Arduino auswählen.
Nun weiß ich allerdings nicht, welchen ich hier auswählen soll. Ich habe es mit "ESP32 Dev Module" versucht. Ist das richtig?

Anschließend habe ich die Auswahl zwischen COM1 und COM4.
Wenn ich nun COM4 auswähle und ein Beispielprogramm hochladen möchte gelingt zwar das Kompilieren aber nicht das Hochladen.
Folgende Meldung erscheint bei Auswahl von COM4:

Connecting...

A serial exception error occurred: Write timeout
Note: This error originates from pySerial. It is likely not a problem with esptool, but with the hardware connection or drivers.
For troubleshooting steps visit: Troubleshooting - ESP32 - — esptool.py latest documentation
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Wenn ich COM1 auswähle, erscheint folgende Meldung:

Connecting......................................

A fatal error occurred: Failed to connect to ESP32: No serial data received.
For troubleshooting steps visit: Troubleshooting - ESP32 - — esptool.py latest documentation
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 2

Anhand der Meldungen gehe ich davon aus, dass COM4 der Richtige Port ist?

Ich habe auch bei beiden Varianten versucht, den "BOOT" Taster auf dem Board während "Connecting..." erscheint, gedrückt zu halten, aber das Ergebnis ist das selbe.

Meine USB Treiber habe ich im Gerätemanager auf Aktualität geprüft. Hier liegen keine Updates vor.

Was mache ich falsch?

Ich würde mich über Unterstützung aus Eurer Community sehr freuen!

Hans

Dan versuch mit der 1.8.19. Komischer weise machten die 2.xx IDE Versionen Probleme mit manchen Windows10 Systemen.
Die 1.8.19 ist zum Download unter

ziemlich runter Scrollen :wink:

1 Like

Schritt 1 wäre zweifelsfrei festzustellen ob COM1 oder COM4.

stell mal auf COM1,
öffne den Serial Monitor,
115200 BAUD
drück mal Reset
Siehst du Output/Eine Veränderung im Serial Monitor?

wenn nicht
stell mal auf COM4
öffne den Serial Monitor
115200 BAUD
drück mal Reset
Siehst du Output/Eine Veränderung im Serial Monitor?

Ergebnis sollte sein dass du uns mitteilen kannst, als was sich der ESP32 nun verbunden hat.
Bitte gib uns einen Link zu dem Modul was du tatsächlich gekauft hast.

1 Like

Normal Ja, Wrover Module sollte auch funktionieren, wenigsten bei mir tun die das

Reines Wunschdenken. :wink: :wink:

Grüße Uwe

Nö, manchmal habe ich den Eindruck, in diesem Forum tummeln sich mehr Rentner als junge Leute. Also keine Chance auf Gnade :crazy_face:

Es gibt leicht abweichende Layouts, da mußt Du im WWW mal nach dem richtigen Pinout suchen. Aber "D13" bezeichnet immer GPIO13, also digitalWrite(13, HIGH). Welcher Pin welche Bedeutung hat, wird allerdings mal mehr, mal weniger deutlich benannt. Ein Beispiel:


Die mit "Flash" bezeichneten Pins darfst Du nicht verwenden, weshalb RXD1 und TXD1 gerne weggelassen werden. Verlegt man allerdings RXD1 und TXD1 auf andere Pins, kann Serial1 sehr wohl verwendet werden. Gelegentlich muß man sich die notwendigen Information von verschiedenen Stellen zusammensuchen.

Eine davon ist ESP32 Pinout Reference: Which GPIO pins should you use?

Ich bin noch bei 1.8.19 mit ESP32-Core 2.0.6

Ja, ich auch.

Mit etwas Übung geht es, wenn man beide drückt und dann nacheinander losläßt. Habe es mir so gemerkt: EN drücken und halten - BOOT drücken und halten - EN loslassen - BOOT loslassen

Daher bevorzuge ich einen Elektrolytkondensator aus der Bastelkiste, bei mir 10 µF, zwischen EN und GND. Polung beachten!

Später mit WiFi dann Programm Over The Air (OTA) und Debug-Ausgaben per Telnet (ESP32 inzwischen von mir getestet).

Viel Spaß mit dem Füllhorn ESP32!

1 Like

Vielen Dank für Eure Antworten!
@noiasca : ich habe beide COM Anschlüsse versucht, also umgestellt, 115200 BAUD und dann auf dem ESP den "EN" Knopf gedrückt (ich hoffe, dies ist der Reset Knopf)
Bei COM1 passiert nichts, bei COM4 wird im seriellen Monitor laufend Text geschrieben beginnend mit rst:0x3 (SW_RESET),boot:0x13 usw.

Das bedeutet dann sicher, dass COM4 der richtige ist?

Ich habe folgenden ESP32 gekauft:
https://www.makershop.de/plattformen/nodemcu/espressif-esp32-dev-kit-board/

Vielen Dank an der Stelle - mich freut es sehr, dass Ihr mich unterstützt!

Gute Wahl, bei dem sind die nicht nutzbaren Flash-Pins nicht rausgeführt. Serial1 kann man aber dennoch an andere Pins verlegen und nutzen.

Ja.

Das ist nicht gut, eigentlich nur einmal etwas wie dies:

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13836
load:0x40080400,len:3608
entry 0x400805f0
1 Like

Ich rate auch ganz dringend von der IDE 2.0.4 ab !

  • braucht länger bis das Programm startet
  • ist oft mit Code neu analysieren beschäftigt als Grundlage für
  • irgendwelchen Firlefanz wie Variable ist so und so definiert usw. anzeigen
  • serieller Monitor ist nicht als separates Fenster anzeigbar

Sorry Arduino-Team: Mir ist schon klar dass ihr die User braucht um bugs zu finden aber für mich ist die IDE 2.0.X immer noch im beta-Stadium und dann sollte man das auch ganz klar als beta-Test-Stadium bezeichnen! und nicht als Standard-Download anbieten!

Jetzt kommt als Antwort wahrscheinlich "wieso bei 98% der User funktioniert es doch prima. Meine Meinung: 98% immer noch zu wenig!
Wenn ihr bei 99,7% angekommen seid, erst dann ist das aus dem beta-Stadium heraus.

So weit ich mich erinnere sieht die Meldung so aus

Connecting.___.....___......____.....____.......

Und dann müsste nach ca 30 bis 60 Sekunden eine Fehlermeldung angezeigt werden

Manche ESP32-boards haben einen 100 nF-Kondensator zwischen EN und GND manche haben den nicht.

Wenn der Kondensator vorhanden ist dann funktioniert das Hochladen ohne drücken des Buttons auf dem Board.
Man kann sich diesen Kondensator nachträglich anlöten oder auch über ein breadboard anschließen. Es kann auch ein Elektrolytkondensator mit 1µF bis 10 µF sein. Minuspol an GND pluspol an EN

Um den richtigen COM-Port herauszufinden den Gerätemanager öffnen
den Bereich LPT / COM öffnen
und dann den ESP anstöpseln und dann ablesen welcher COM-Port ist durch das Anstöpseln dazugekommen

Ich selbst habe ganz verschiedene ESP32-Boards
ESP32 D1 Mini, ESP32 dev-Kit von verschiedenen Herstellern
ESP32 nodeMCU von verschiedenen Herstellern
auch welche vom Hersteller EzSBC und benutze für alle Boards die gleiche Board-Einstellung ESP32 Dev Module.

Ich vermute der Unterschied zu den anderen Boards ist nur das es bei anderen Boards ein paar mehr IO-Pin-Bezeichnungen gibt.
Ich definiere mir die Konstanten wie D1, D2, usw. immer selbst.

vgs

1 Like

Noch zur Information: Ich verwende nun auch die IDE 1.8.19.

Folgender Text erscheint im Seriellen Monitor fortlaufend:
_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13924
ho 0 tail 12 room 4
load:0x40080400,len:3600
entry 0x400805f0
ets Jun 8 2016 00:22:57

rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13924
ho 0 tail 12 room 4
load:0x40080400,len:3600
entry 0x400805f0
ets Jun 8 2016 00:22:57

rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13924
ho 0 tail 12 room 4
load:0x40080400,len:3600
entry 0x400805f0
ets Jun 8 2016 00:22:57

Was kann ich Eurer Meinung nach machen?

Nö, bei mir so:

Keine Verbindung
Der Sketch verwendet 894289 Bytes (68%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 54104 Bytes (16%) des dynamischen Speichers, 273576 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
esptool.py v4.2.1
Serial port COM3
Connecting......................................

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Der ausgewählte serielle Port For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
 ist nicht vorhanden oder das Board ist nicht angeschlossen
Richtige Ausgabe
Der Sketch verwendet 894289 Bytes (68%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 54104 Bytes (16%) des dynamischen Speichers, 273576 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
esptool.py v4.2.1
Serial port COM3
Connecting....
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 8c:aa:b5:8c:1c:20
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x000ebfff...
Compressed 18880 bytes to 13017...
Writing at 0x00001000... (100 %)
Wrote 18880 bytes (13017 compressed) at 0x00001000 in 0.5 seconds (effective 325.8 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds (effective 356.1 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 498.3 kbit/s)...
Hash of data verified.
Compressed 900064 bytes to 587066...
Writing at 0x00010000... (2 %)
Writing at 0x0001ac59... (5 %)
Writing at 0x00024fca... (8 %)
Writing at 0x000318ec... (11 %)
Writing at 0x00037904... (13 %)
Writing at 0x0003d492... (16 %)
Writing at 0x00042dbd... (19 %)
Writing at 0x000485c6... (22 %)
Writing at 0x0004d9b3... (25 %)
Writing at 0x00053257... (27 %)
Writing at 0x0005863c... (30 %)
Writing at 0x0005d834... (33 %)
Writing at 0x00062c1f... (36 %)
Writing at 0x00067dc9... (38 %)
Writing at 0x0006cfab... (41 %)
Writing at 0x00072211... (44 %)
Writing at 0x00077745... (47 %)
Writing at 0x0007c5b3... (50 %)
Writing at 0x00081905... (52 %)
Writing at 0x000874bc... (55 %)
Writing at 0x0008cc73... (58 %)
Writing at 0x00091f63... (61 %)
Writing at 0x000972fa... (63 %)
Writing at 0x0009c5f5... (66 %)
Writing at 0x000a1c87... (69 %)
Writing at 0x000a73dd... (72 %)
Writing at 0x000acd38... (75 %)
Writing at 0x000b2988... (77 %)
Writing at 0x000b823b... (80 %)
Writing at 0x000c06ad... (83 %)
Writing at 0x000c954e... (86 %)
Writing at 0x000ce757... (88 %)
Writing at 0x000d6c14... (91 %)
Writing at 0x000dc4f3... (94 %)
Writing at 0x000e1a85... (97 %)
Writing at 0x000e6e61... (100 %)
Wrote 900064 bytes (587066 compressed) at 0x00010000 in 8.2 seconds (effective 873.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

klingt schon mal gut.

nimm com4
nimm einen ganz einfach blink sketch.
und poste mal alles was der Compiler/Uploader beim Hochlade-Versuch rausschreibt.

1 Like

Mittlerweile gibt es sehr viele ESP32S dan funktioniert DEV Module nicht.

Ich habe folgenden Sketch verwendet:

#define ONBOARD_LED  2

void setup() {
  pinMode(ONBOARD_LED,OUTPUT);
}

void loop() {
  delay(1000);
  digitalWrite(ONBOARD_LED,HIGH);
  delay(1000);
  digitalWrite(ONBOARD_LED,LOW);
}

Dabei kommt nun nicht mehr die Fehlermeldung, die ich eingangs erwähnte sondern folgende Rückmeldung:
Der Sketch verwendet 235901 Bytes (17%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 22056 Bytes (6%) des dynamischen Speichers, 305624 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
*C:\Users\XXX\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\4.5.1/esptool.exe --chip esp32 --port COM4 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 C:\Users\XXX\AppData\Local\Temp\arduino_build_506148/sketch_mar10a.ino.bootloader.bin 0x8000 C:\Users\XXX\AppData\Local\Temp\arduino_build_506148/sketch_mar10a.ino.partitions.bin 0xe000 C:\Users\XXX\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.7/tools/partitions/boot_app0.bin 0x10000 C:\Users\XXX\AppData\Local\Temp\arduino_build_506148/sketch_mar10a.ino.bin *
esptool.py v4.5.1
Serial port COM4
Connecting......
Chip is ESP32-D0WDQ6 (revision v1.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: c8:f0:9e:a0:c9:5c
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00049fff...
Compressed 18960 bytes to 13073...
Writing at 0x00001000... (100 %)
Wrote 18960 bytes (13073 compressed) at 0x00001000 in 0.4 seconds (effective 376.0 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds (effective 405.3 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 636.7 kbit/s)...
Hash of data verified.
Compressed 236272 bytes to 129980...
Writing at 0x00010000... (12 %)
Writing at 0x0001e222... (25 %)
Writing at 0x00024206... (37 %)
Writing at 0x000293e9... (50 %)
Writing at 0x0002ea68... (62 %)
Writing at 0x00036fc3... (75 %)
Writing at 0x0003f0cd... (87 %)
Writing at 0x000446d0... (100 %)
Wrote 236272 bytes (129980 compressed) at 0x00010000 in 2.0 seconds (effective 927.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

die LED ist nach wie vor dauernd rot; blinken tut nichts.

schaut schon gut aus.

Jetzt brauchst nur noch rausfinden, an welchen GPIO deine LED wirklich hängt.

Spoiler: die rote LED die aktuell leuchtet könnte auch einfach die Power LED sein. Oder siehst du dass sie "flackert" während du etwas neues hochladest?

Check:

  • hast überhaupt eine (zwei?) LEDs am Board --> Echtbild posten.
  • häng mal eine separate LED + Vorwiderstand an einen GPIO und berichte.
1 Like

Hast Du mal nach dem fertigen Upload den USB Stecker abgezogen und dann wieder draufgesteckt?

Als Reminiszenz an den UNO und weil D13 neben GND liegt, nutze ich GPIO13 zum Blinken.

Dazu, weil ich faul bin, 3 mm LED mit integriertem Vorwiderstand für 5 Volt. Die kann man direkt ins Steckbrett stopfen.

1 Like

Die LED auf dem Board flackert nicht beim Upload. Ich habe euch ein Bild des ESP32 angehängt.
Nun habe ich mit dem Steckbrett eine LED Schaltung aufgebaut. Dazu habe ich den D13 Pin neben dem GRD verwendet. Laut Dokumentation entspricht dieser dann meinen Quellcode geändert, da der GPIO13 ja dem Pin 16 entspricht:

#define ONBOARD_LED 16

Zusätzlich habe ich noch folgende Zeile in meinem Quelltext eingefügt:

Serial.println("Hello World");

Nach dem Upload blinkt leider weder das LED noch kommt das "Hello World" im Seriellen Monitor. Lediglich der ständige Fließtext kommt ununterbrochen. Auch wenn ich diesen anhalte, finde ich keine Hello World Zeile darin.

Habe ich mit der Pin-Nummer was falsch gemacht? Vorsichtshalber habe ich auch die Nummer 13, also

#define ONBOARD_LED 13

ausprobiert. Auch hier blinkt nichts.

Vielen Dank für Eure Geduld und Hilfe!

Die Schaltung als solches habe ich ebenfalls noch fotografiert, siehe Anhang. Zur Erklärung: der graue Draht kommt vom GPIP13 und der rote Draht vom GRD. Der Widerstand hat 100 Ohm und die rote LED ist mit dem langen Fuß in Richtung GPIO13.

das was da leuchtet ist vermutlich die Power LED. die Onboard LED ist rechts davon (das letzte Ding vor den zwei "liegend" montierten Bauteilen in der gleichen Höhe).

VORSICHT ... GPIO13 ist gekennzeichent mit D13 ... das ist in deinem Bild auf der linken Seite der dritt - letzte Pin.
Du musst ihn als 13 in deinem Sketch konfigurieren.

bitte poste noch mal was du im SERIAL MONITOR "ununterbrochen" bekommst.

1 Like