Forum: Mikrocontroller und Digitale Elektronik ESP8266-03 stürzt ab, Arduino IDE


von Christian S. (solder)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Projekt mit ESP8266-03-Modul aufgebaut. Mit dem ESP-01 habe 
ich bisher schon einige umgesetzt (Werte von Messchips werden per WLAN 
übertragen). Der ESP-03 will aber einfach nicht. Er stürzt ab, wenn per 
WLAN gesendet wird. Versorgung ist aktuell noch aus Labornetzteil. 100µ 
+ 100n C sind vorhanden. Ich habe den Code vom ESP-01 um die 
Sensorbefehle abgespeckt und rufe nur noch die Startseite auf. Es wird 
auch fehlerfrei von der Arduino-IDE übersetzt. Trotzdem Absturz (alle 2 
Sekunden, wie vom Delay angegeben...). Gibt es da irgendwie einen 
Unterschied zwischen ESP-01 und -03, der mir nicht bekannt ist? Ich bin 
davon ausgegangen, dass sich die Module mehr oder weniger nur im Zugang 
zu den GPIOs des ESP8266 unterscheiden, die Software aber praktisch 
gleich ist.

Den Source-Code habe ich angefügt (Server-Name und Netzwerk wurden 
unkenntlich gemacht). Hier die Ausgabe des Terminals. Ich habe das mal 
etwas abgekürzt.
1
BOOT<\r>
2
<\n>Wifi...OK<\r>
3
<\n>Exception (3):<\r>
4
<\n>epc1=0x401003e9 epc2=0x00000000 epc3=0x00000000 excvaddr=0x40067d81 depc=0x00000000<\r>
5
<\n><\r>
6
<\n>ctx: cont <\r>
7
<\n>sp: 3ffef890 end: 3ffefd40 offset: 01a0<\r>
8
<\n><\r>
9
<\n>>>>stack>>><\r>
10
<\n>3ffefa30:  feefeffe feefeffe feefeffe feefeffe  <\r>
11
<\n>3ffefa40:  feefeffe feefeffe feefeffe 3ffefb40  <\r>
12
...
13
<\n>3ffefd20:  feefeffe feefeffe 3ffeed04 40204aa0  <\r>
14
<\n>3ffefd30:  feefeffe feefeffe 3ffeed20 40100718  <\r>
15
<\n><<<stack<<<<\r>
16
<\n><\r>
17
<\n> ets Jan  8 2013,rst cause:1, boot mode:(3,4)<\r>
18
<\n><\r>
19
<\n>load 0x4010f000, len 1264, room 16 <\r>
20
<\n>tail 0<\r>
21
<\n>chksum 0x0f<\r>
22
<\n>csum 0x0f<\r>
23
<\n>~ld<\n>BOOT<\r>
24
<\n>Wifi...OK<\r>
25
usw...

von Stefan F. (Gast)


Lesenswert?

Führen die delay() Aufrufe nicht dazu, dass der Watchdog auslöst?

von Thomas S. (thomas55)


Lesenswert?

Es könnte nicht schaden in Zeile 43 eine Klammer um
"maxwait > 0" zu machen -- sofern das nicht genau so sein soll.

Sonst ist mir nichts aufgefallen.

Der WD, wenn ich mich richtig erinnere, schlägt erst nach 3 oder 6 sec. 
zu.

Gruß aus Spandau

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Stefan U. schrieb:
> Führen die delay() Aufrufe nicht dazu, dass der Watchdog auslöst?
Nein.
Im Delay wird yield(), oder einer seiner Brüder, ausgeführt.


Christian S. schrieb:
> rst cause:1
Power On Reset
Also: Netzteil bekloppt. (vielleicht)

Siehe dazu:
1
  reset causes:
2
        0: 
3
        1: normal boot
4
        2: reset pin
5
        3: software reset
6
        4: watchdog reset

Christian S. schrieb:
> <\n>Exception (3):<\r>
In der Arduino IDE gibts einen "ESP Exception Decoder".
Nutze ihn.

von Pete K. (pete77)


Lesenswert?

Versuch mal ein anderes Kabel für die Stromversorgung. Strombegrenzung 
im Netzteil evtl. eingestellt?

von Pete K. (pete77)


Lesenswert?

Wie groß darf denn das Argument bei delay() werden?
-> delay(1000 * WAIT)

von Thomas S. (thomas55)


Lesenswert?

unsigned long

von Thomas S. (thomas55)


Lesenswert?

Hallo Christian Sch.,

jetzt haben mehrere liebe Menschen versucht Dir zu helfen. Leider bisher 
ohne Rückmeldung.

Wie ist denn der Stand,

was´n los?

von Christian S. (solder)


Lesenswert?

Ich konnte leider nichts mehr schreiben den ganzen Tag. Hatte gestern 
Abend noch etwas rumprobiert (Klammervorschlag von Thomas S.), ohne 
Änderung. Ich probiere noch mal ein anderes Netzteil. Strombegrenzung 
hatte ich schon hoch gesetzt. 700mA sollten doch reichen. Ich sehe auch 
nicht, dass es in die Begrenzung geht. Oszi habe ich leider nicht.

von Michael U. (amiga)


Lesenswert?

Hallo,

Flashgröße stimmt? Alte -03 hatten nur 4MBit (512k) Flash.
Erkennt man auch anhand der IC-Bezeichnung des Flash.

Gruß aus Berlin
Michael

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

100µF als Reservoir könnte knapp sein. Zumindest der 'alte' ESP 
profitierte von einem dickeren Elko. Der sollte auch so nah wie möglich 
am Modul sein.

von Christian S. (solder)


Lesenswert?

Also, 220µ helfen leider auch nicht. Zu Michael U.: Ich dachte, das sind 
immer nur 512k (auch beim -01). Und wenn ich mich nicht verguckt habe, 
sind auf beiden Modulen die gleichen Flash-Chips. Wo könnte ich das 
einstellen?

von Michael U. (amiga)


Lesenswert?

Hallo,

früher hatte die -01, -03, -07 512k. Irgendwann passte die 
AI-Thinker-Firmware nciht mehr rein und es wurden 1MB bestückt. Die 512k 
haben eine 4 in der Flashbezeichnung, die 1MB eine 8. Leider hängt es 
vom Hersteller ab, wo die in der Bezeichnung versteckt ist. Googeln nach 
der Bezeichnung gibt aber Antwort.

Die Parameter kannst Du in der IDE bei den Eingenschaften einstellen, 
Modul ESP8266 Generic. Die aktuelleren können als Flashmode auch alle 
QIO, geht etwas schneller. Bisher ließen sich auch alle ESP mit meinen 
UB-Adaptern (FTDI, CH340, CP2102) mit 921600 flashen, zumindest wenn die 
Rx/Tx-Leitungen nicht zu lang sind. Geht einfach schneller. ;)

Die IDE und das genutzte Flashtool übernimmt diese Einstellungen ohne 
Prüfung. Falsche Daten verhindern das Flashen oder die 
ESP-Programmfunktion, richten aber keinen Schaden beim ESP an.
Flash-Frequenz setzt den Zugriff im ESP von 40 auf 80MHz, ging zwar mit 
allen meinen ESPs, brachte real aber keinen merkbaren 
Geschwindigkeitsgewinn.
160MHz CPU-Clock setzt diesen, der Geschwindigkeitsgewinn ist zwar 
erkennbar aber nicht sonderlich hoch. Es wird nur der Core-Takt des 
ESP8266 erhöht, alle I/O-Takte (seriell usw.) bleiben unverändert.

Gruß aus Berlin
Michael

von Christian S. (solder)


Lesenswert?

Meine Firmware wird für 512k Flash übersetzt. So war es praktisch schon 
immer. Stört das, wenn der Chip trotzdem 1MB hat (2508...)? Ich denke 
aber, es hängt mit dem WLAN zusammen. Der Absturz kommt beim Aufruf von 
WaitWifi(). Jetzt könnte ich darin noch mal weitersuchen. Aber 
eigentlich kann es ja kein Softwareproblem sein, wenn es mit dem -01 
funktioniert.

Der Aufruf von WiFiMulti.run() führt zu dem Absturz.

Ich habe noch mal zwei andere Beispiele probiert. Immer das gleiche.

Daher habe nun einen weiteren ESP-03 bestellt, damit ich einen Vergleich 
habe. Vielleicht ist das Teil einfach kaputt?

: Bearbeitet durch User
von Thomas S. (thomas55)


Lesenswert?

Stromversorgung, Stromversorgung, Stromversorgung.

Der ESP hat auch das Steckbrett nicht gern. Der will alles was mit 
seiner Stromversorgung zu tun hat gelötet haben. Dann will er möglichst 
3V3 und 500mA hat er auch gern. Wenn Du noch andere Verbraucher 
gleichzeitig speisen willst kann 1 ganzes Ampere nicht schaden.
So, jetzt mein Vorschlag: Neue Stromversorgung, löten, nochmal Testen, 
hier den Erfolg posten.

Gruß aus Spandau

von MasterofDesaster (Gast)


Lesenswert?

Thomas S. schrieb:
> Stromversorgung, Stromversorgung, Stromversorgung.

Das wollen die Arduino-Bastler einfach nicht hören. Denn
was nicht sein darf kann nicht sein. ....... siehe:

Christian S. schrieb:
> Daher habe nun einen weiteren ESP-03 bestellt, damit ich einen Vergleich
> habe. Vielleicht ist das Teil einfach kaputt?

Thomas S. schrieb:
> So, jetzt mein Vorschlag:
> ...............

Mit solcher Vernuft im Hinterkopf wäre hier auf der Seite
viel weniger los.

von Thomas S. (thomas55)


Lesenswert?

Das mußte ich auch am eigenen Leib...

Man kann es sich ja auch schlecht vorstellen daß so kleine 
Übergangswiderstände so verheerende Folgen haben.

Hier ist es einfach:

Christian S. schrieb:
> <\n> ets Jan  8 2013,rst cause:1, boot mode:(3,4)<\r>

Ursache:1 ist doch sehr eindeutig. Stromausfall. Das kann man nicht 
wegbasteln. Leider.

von Christian S. (solder)


Lesenswert?

Ich kann erst heute Abend weitermachen...

Aber, der ESP-03 ist nicht auf einem Steckbrett, sondern einer Platine 
(Oberseite). Die Leitungen sind direkt an die ESP-03-Platine angelötet 
und werden nur um die Lochrasterplatine herum auf die Unterseite 
geführt. Dort habe ich 2 "Stromschienen" GND und + zwischen denen auch 
die Kondensatoren hängen. Weitere Bauteile sind noch gar nicht 
vorhanden, da ich erst mal sehen wollte, ob der ESP-03 überhaupt geht.
Zum Programmieren verwende ich ein CH340-Modul (vituelle COM3). 
Spannungsversorung ist aus Labornetzteil mit 3,3V (hab' auch 3,5 
probiert).

von Pete K. (pete77)


Lesenswert?

Hast Du das Stromversorgungskabel schon geprüft/ausgetauscht?

Und bei dem CH340 bitte nicht VCC mit anschließen! Außerdem den CH340 an 
USB2.0 hängen.

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

GPIO15 über 10k an GND hast Du?

Gruß aus Berlin
Michael

von Thomas S. (thomas55)


Lesenswert?

Das hört sich doch schon gut an.

Nu zeig mal n´paar Fotos.

Gruß aus Spandau

von Christian S. (solder)


Angehängte Dateien:

Lesenswert?

Also

-CH340 ohne VCC: Ja
-CH340 an USB2.0: Ja
-GPIO15 mit 10k an GND: Ja

Ich wollte die Schaltung in einen AA-Schacht setzen (in den anderen 
sollte ein LiFePO4-Akku - den ich noch nicht hab'). Wenn die Versorgung 
so empfindlich ist, dann wird das nie was wegen der Übergangswiderstände 
an den Batteriekontakten.

An meinem PC-Platz ist es zu dunkel. Ich bekomme da keine guten 
Aufnahmen hin. Alles unscharf und verschwommen. Ich habe die Unterseite 
daher ohne Anschluss woanders aufgenommen.

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe im Moment keine Idee, hier simd noch 2x -03 im Einsatz und die 
Laufen bisher.
Einfach zur Sicherheit: welcher Flash ist denn nun auf Deinem drauf?

Einer der -03 an einem China-PIR, betreiben mit 2x AAA nicht ganz neuen 
Primärzellen.
Ist seit ein paar Wochen zum Test in Betrieb, Batteeriespannung zur Zeit 
ca. 2,76V, meldet sich vermutlich bis ca. 2,5V noch.

So sensibel sind ESP nun auch wieder nicht.

Gruß aus Berlin
Michael

von Christian S. (solder)


Lesenswert?

Ich habe es gestern noch an einem LiIon-Akku probiert, der noch 3,5V 
hatte. Keine Änderung. Ich hatte auch die Spannung direkt am Elko 
gemessen, als die Schaltung noch am Labornetzteil hing. Unverdächtig, da 
hat auch nichts gezappelt. Die Anschaffung des Oszis ist schon lange 
geplant. Werde ich wohl doch endlich mal machen.

Ich werde jetzt einfach auf den neuen ESP-03 warten und sehen, ob es 
einen Unterschied gibt.

Der Elko unter der Platine ist nur provisorisch. Aus Platzgründen werden 
da später 2 Low-ESR Tantal sitzen, ich denke mal 2x150µ. Die könnten 
heute kommen, genauso wie der ESP-03.

Flash ist ein BergMicro 25080A5TIG, wenn ich mich nicht verguckt habe. 
Der ist auch auf mindestens einem meiner ESP-01 drauf.

von Einer K. (Gast)


Lesenswert?

Christian S. schrieb:
> Ich werde jetzt einfach auf den neuen ESP-03 warten und sehen, ob es
> einen Unterschied gibt

Kannst du machen....

Mal am Rande:
Irgendwie bist du gar nicht auf mein Posting eingegangen....
Obwohl ich doch die Monitorausgaben deines ESP untersucht habe und 
versucht habe dir meine Erkenntnisse zu übermitteln.

Leider hast du die Meldungen verstümmelt, so das man kein Anfang und 
kein Ende erkennen kann.

Was passiert denn im Fehlerfall?
Eine geworfene Exception, oder ein Power On Reset?


Aber egal...
Warte du erstmal auf dein Dingen!

Meine Glaskugel sagt:
Dann kommste sowieso mit dem selben Problem wieder...

von Christian S. (solder)


Lesenswert?

@Arduino Fanboy:

Ich habe lediglich die Stack-Angaben abgekürzt. Die zweite Zeile oben 
ist gleich der letzten Zeile unten. Das wiederholt sich dann immer 
wieder. Auch bei allen anderen Versuchen.

Wir haben also Exception(3) und Reset-Cause:1

Laut deiner Auflistung ist das ein normaler Boot.

Mit der Arduiono-IDE kenne ich mich kaum aus. Letztlich mache ich da nur 
ein Copy und Paste nach diversen Tutorials... Ok, hab' da mal ein 
bisschen probiert und das hier erhalten, wobei mir nicht klar ist, was 
das mit Java zu tun hat und verstehen tu' ich es auch nicht:
1
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
2
  at processing.app.helpers.CircularBuffer.min(CircularBuffer.java:42)
3
  at processing.app.SerialPlotter$GraphPanel.computeBounds(SerialPlotter.java:90)
4
  at processing.app.SerialPlotter$GraphPanel.paintComponent(SerialPlotter.java:124)
5
  at javax.swing.JComponent.paint(JComponent.java:1056)
6
  at javax.swing.JComponent.paintChildren(JComponent.java:889)
7
  at javax.swing.JComponent.paint(JComponent.java:1065)
8
  at javax.swing.JComponent.paintChildren(JComponent.java:889)
9
  at javax.swing.JComponent.paint(JComponent.java:1065)
10
  at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
11
  at javax.swing.JComponent.paintChildren(JComponent.java:889)
12
  at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
13
  at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
14
  at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
15
  at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
16
  at javax.swing.JComponent.paint(JComponent.java:1042)
17
  at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
18
  at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
19
  at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
20
  at java.awt.Container.paint(Container.java:1975)
21
  at java.awt.Window.paint(Window.java:3912)
22
  at javax.swing.RepaintManager$4.run(RepaintManager.java:842)
23
  at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
24
  at java.security.AccessController.doPrivileged(Native Method)
25
  at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
26
  at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
27
  at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
28
  at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
29
  at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
30
  at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
31
  at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
32
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
33
  at java.awt.EventQueue.access$500(EventQueue.java:97)
34
  at java.awt.EventQueue$3.run(EventQueue.java:709)
35
  at java.awt.EventQueue$3.run(EventQueue.java:703)
36
  at java.security.AccessController.doPrivileged(Native Method)
37
  at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
38
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
39
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
40
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
41
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
42
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
43
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
44
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Mit der Glaskugel kannst du Recht haben. Ich will das gar nicht 
bestreiten, aber es ist dann eine weiterere Fehlermöglichkeit 
ausgeschlossen.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Christian S. schrieb:
> wobei mir nicht klar ist, was
> das mit Java zu tun hat und verstehen tu' ich es auch nicht:
Ja, die Java Meldungen haben da konkret nix mit zu tun...

Aber den "Exception Decoder" hast du gefunden?
Und der liefert keine brauchbaren Ergebnisse?
Das ist extrem schade...


Aktiviere mal die Debugmeldungen.
Dann sagts meist deutlicher, was schief läuft.

von Christian S. (solder)


Lesenswert?

Nein, Exception Decoder habe ich nicht gefunden. Gibt's bei mir nicht. 
Also habe ich mal im Internet gesucht, was das ist und wo das ist. Aha, 
Nachinstallieren von hier:

https://github.com/me-no-dev/EspExceptionDecoder

Habe ich gemacht. Allerdings führt die Ausführung selbst zu einer neuen 
Exception (unten in der IDE)... (Es geht nicht wie beschrieben ein neues 
Fenster auf). Ich habe IDE 1.6.8 unter Windows. Screenshot ist von Mac. 
Es steht dort, dass man eine unterstützte IDE haben muss. Ich sehe aber 
nicht, welche das sein soll.

Langsam bin ich der Meinung, dass der zeitliche Aufwand nicht mehr zum 
Nutzen steht.

von Einer K. (Gast)


Lesenswert?

Nunja....

Mein System:
Win 10 IDE 1.6.12

Ich verwende die Git Version:
https://github.com/esp8266/Arduino#using-git-version

Da wird der Dekoder automatisch mit installiert.
Und der tuts dann auch.

von Michael U. (amiga)


Lesenswert?

Hallo,

der Exceptiondecoder läuft auch mit 1.6.5, 1.6.7 und 1.6.9
Die anderen hatte ich nicht in Benutzung.

Direkt vor dem Start des Exceptiondecoders muß der geladene Sketch 
compiliert worden sein, sicherheitshalber auch geflasht um sicher zu 
sein, daß man wirklich diese Version auf dem ESP hat.

Gruß aus Berlin
Michael

von Christian S. (solder)


Lesenswert?

So, neuen ESP-03 eingelötet. Diesmal habe ich es zuerst mit der 
eingebauten Firmware probiert. Mit den AT-Kommandos ließ sich die 
Verbindung zum Router herstellen und eine IP per DHCP zuweisen. Daher 
gehe ich davon aus, dass das Modul soweit ok ist. Mit dem anderen Modul 
hatte ich das vorher leider nicht probiert.

So, rennt problemlos. Also muss der andere ESP-03 doch eine Macke haben 
(oder irgendwas war nicht richtig angelötet, ohne dass ich das erkannt 
habe). Wenn ich Zeit habe, probiere ich den vielleicht später noch mal.

Fall erst mal gelöst.

: 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
Noch kein Account? Hier anmelden.