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.
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
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
resetcauses:
2
0:
3
1:normalboot
4
2:resetpin
5
3:softwarereset
6
4:watchdogreset
Christian S. schrieb:> <\n>Exception (3):<\r>
In der Arduino IDE gibts einen "ESP Exception Decoder".
Nutze ihn.
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.
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?
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
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?
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
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.
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.
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).
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.
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
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.
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...
@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.
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.
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.
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
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.