Forum: Mikrocontroller und Digitale Elektronik ESP8266-07 Reset Loop


von Net_Hans (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich beschäftige mich aktuell mit dem ESP8266-07. Nach den ersten 
Gehversuchen mit der NodeMCU Firmeware hatte ich Tests mit dem 
Arduino-IDE durchgeführt. Programme ohne eine Aktivierung der 
WLan-Funktion haben problemlos funktioniert. Nachdem ich ein 
Testprogramm geflasht habe, in dem auch das WLan aktiv war, ging das 
eins zwei Mal gut. Ab diesem Zeitpunkt befinden sich inzwischen zwei 
ESPs in einer Art dauer Reset Loop.

Auch die rote Power-LED glimmt nur leicht oder scheint ganz aus zu sein. 
Ich habe leider kein Oszi oder ähnliches um zu prüfen, was genau an der 
LED passiert.

Der ESP sitzt auf einem Breadboard und bekommt von einer 1A 
Spannungsquelle eine Spannung von 3,3V DC. Desweiteren puffern zwei 
10.000µF und ein 100nF Kondensator die Spannung. Somit gehe ich davon 
aus, dass die Spannungsversorgung i.O. ist.

Angeschlossen ist der ESP wie auf diesem Bild beschrieben.
https://github.com/esp8266/Arduino/blob/master/doc/ESP_to_serial.png

Welche ESP-Version ich verwende, sollte aus den Bildern vom Anhang 
ersichtlich sein. Ich habe keine Ahnung wie groß der Flash ist. Zu dem 
Chip finde ich einfach nichts sinnvolles.

Der letzte Quellcode den ich hochgeladen habe, sieht wie folgt aus:
1
#include <ESP8266WiFi.h>
2
3
extern "C" {  //required for read Vdd Voltage
4
#include "user_interface.h"
5
   // uint16 readvdd33(void);
6
}
7
8
const char* ssid = "...";
9
const char* password = "...";
10
11
void setup()
12
{
13
  // Open serial communications and wait for port to open:
14
  Serial.begin(115200);
15
16
  // setting up Station AP
17
  WiFi.begin(ssid, password);
18
  
19
  // Wait for connect to AP
20
  Serial.print("[Connecting]");
21
  Serial.print(ssid);
22
  int tries=0;
23
24
  while (WiFi.status() != WL_CONNECTED) {
25
    delay(500);
26
    Serial.print(".");
27
    tries++;
28
    if (tries > 30){
29
      break;
30
    }
31
  }
32
  Serial.println();
33
34
  Serial.println("Connected to wifi");
35
  //Serial.println(WiFi.localIP());
36
  Serial.print("Udp server started at port ");
37
  Serial.println(localPort);
38
39
}
40
41
void loop()
42
{
43
  delay(200);
44
  Serial.println(".");
45
}

Es kommt über das Serial-Interface entweder nur eine kryptische 
Zeichenkette oder eine Schleife von Reboot-Informationen. Ähnlich 
dieser:
1
ets Jan 8 2016,rst cause:4, boot mode:(3,7)
2
wdt reset
3
load 0x40100000, len 30000, room 16
4
tail 0
5
chksum 0x67
6
load 0x3ffe8000, len 2556, room 8
7
tail 4
8
chksum 0xb7
9
load 0x3ffe8a00, len 3080, room 4
10
tail 4
11
chksum 0x59
12
csum 0x59

Dabei ist der Reset-Grund entweder 4 (Watchdog) oder die 1 (normal 
boot).

Um den Fehler zu korrigieren, habe ich versucht die NodeMCU-Firmeware 
auf zu spielen bzw, die original AT-Firmeware ... aber das hat auch 
keine Besserung gebracht. Anhand dieser Beschreibung, könnt Ihr auch 
erkennen, das der Bootloading-Mode (GPIO0 auf GND) einwandfrei 
funktioniert. Somit gehe ich davon aus, das ich beim Flashen den Inhalt 
der einzelnen Flash-Bereiche durcheinander gebracht habe. Ich konnte 
aber bis jetzt keine Anleitung finden, wo beschrieben ist, wie ich den 
gesamten Flash clearen und neu und sauber flaschen kann.

Ich hoffe Ihr könnt mir bei meinem Problem helfen, damit ich meine ESPs 
wieder ans fliegen und senden ;-) bekomme

Danke schon mal für Eure Hilfe
Grüße Hans

von Thomas T. (knibbel)


Lesenswert?

Trenn mal beim TTL2USB-Wandler die Pins DTR und RTS ab. Der ESP8266 
macht kein Hardware-Handshake, so dass die Pegel dort die Funktion 
stören könnten...

Gruß,
Thomas

von Pete K. (pete77)


Lesenswert?

Net_Hans schrieb:
> Ich habe keine Ahnung wie groß der Flash ist. Zu dem
> Chip finde ich einfach nichts sinnvolles.

https://www.google.de/#q=25q41BT

von Net_Hans (Gast)


Lesenswert?

@Pete K.
immer wieder nett, wenn andere für einen googlen und auch nichts (aus 
meiner Sicht) sinnvolles dabei finden. Genau die gleiche Suche habe ich 
schon gemacht und konnte mit keinem Beitrag was anfangen.


@Thomas T.
die RST und DTR habe ich auch schon getrennt. Das hat aber leider auch 
nichts gebracht :-(

von K. J. (Gast)


Lesenswert?

>
> Auch die rote Power-LED glimmt nur leicht oder scheint ganz aus zu sein.


Hi mit diesem Defekt hab ich auch 2 ESP8266-07 Module rumliegen, die 
haben zwar etwas mehr Beschaltung als deine aber ich denke die sind 
hinüber.

Bei einen davon hab ich den Flash entfernt um zu testen ob der schuld 
ist, der ist aber in Ordnung also kann dann nur noch der ESP hinüber 
sein, vom verhalten her würde ich auf ne Resetschleife tippen.

von Net_Hans (Gast)


Lesenswert?

Das war jetzt nicht die Antwort auf die ich gehofft habe, aber das habe 
ich schon fast vermutet. Kann es mir allerdings nicht erklären. Ich habe 
nur ein Programm aufgespielt und nichts an der Beschaltung geändert. 
Warum sollte dann auch ein Nagelneuer ESP8266 sofort defekt sein ... Ich 
denke das es doch etwas mit falschen Daten in bestimmten 
Speicherbereichen zu tun haben könnte.

Einen weiteren Versuch möchte ich eigentlich kaum riskieren. Denn sobald 
ich was flashe ist der Chip hin ... warum auch immer ...

von K. J. (Gast)


Lesenswert?

Bei mir laufen alle anderen Perfekt, sind bei mir 2 von 18 damit kann 
ich leben, überschrieben haben solltest sie nicht das Bootrom liegt im 
ESP nicht im Flash das ist nicht so leicht tot zu bekommen.

von tja (Gast)


Lesenswert?

1) läßt sich der ESP mit einem Taster im Reset halten? Wurde dies schon 
untersucht?

Net_Hans schrieb:
> Es kommt über das Serial-Interface entweder nur eine kryptische
> Zeichenkette

2) die kryptische Zeichenkette kann von einer anderen Baudrate stammen, 
da der Bootloader eine andere verwendet wie die eigentliche Applikation. 
Wurde dies schon untersucht?

Ich persönlich halte es für unwahrscheinlich, dass der Baustein kaputt 
ist.

Wenn der Watchdog greift, dann wurde wahrscheinlich nicht 
berücksichtigt, dass die eigenen Funktionsaufrufe nur 10ms lang dauern 
dürfen, weil dann die Hauptschleife wieder zum Zug kommen muss.

von Pete K. (pete77)


Lesenswert?

Der Flash sollte 4MBit sein.

Hast Du auch blank.bin an 0xFE000 und 0x7e000 geändert und in den 
Advanced Settings auf 4MBit eingestellt?

von Pete K. (pete77)


Lesenswert?

Net_Hans schrieb:
> Somit gehe ich davon
> aus, dass die Spannungsversorgung i.O. ist.

Wie wäre es mal mit messen?

von tja (Gast)


Lesenswert?

1
while (WiFi.status() != WL_CONNECTED) {
2
  delay(500);

und
1
void loop()
2
{
3
  delay(200);
4
  Serial.println(".");
5
}

ich benutze den SDK vom Hersteller selber und nicht das Arduino 
Framework. Aber ich denke, dass auch hier die 10ms Regel gültig ist, und 
dann sind die beiden Delays für den Watchdog ausschlaggebend:
delay(500) und delay(200)

Kann mich auch Irren, aber dies wäre meine erste Vermutung!

von Pete K. (pete77)


Lesenswert?

delays sind hier nicht gut, weil während des delays keine Verarbeitung 
stattfindet. Möglicherweise geht das mit über Arduino anders, aber mit 
der LUA Software macht man das über einen Timer.

Während des delays kann kein Verbindungsaufbau stattfinden und 
irgendwann schlägt Dein Watchdog an.

von Chr. M. (snowfly)


Lesenswert?

tja schrieb:
> Kann mich auch Irren,

Aus der Doku:
>delay(ms) pauses the sketch for a given number of milliseconds and allows >WiFi 
and TCP/IP tasks to run.

Delay ist also kein Problem, eher kann man damit Probleme vermeiden wenn 
der Code ein wenig Zeit braucht.

von G. H. (schufti)


Lesenswert?

wenn die rote Powerled nur leicht glimmt oder aus ist, dann ist etwas 
gröberes passiert oder oberfaul, da diese LED direkt über einen 
Widerstand an der Versorgung des ESP liegt (ohne sonstiges Beiwerk oder 
gar an einem Pin).
D.h.: entweder mal kräftig Überspannung gehabt und nu LED und ESP tot 
oder keine vernünftige Masse/Vcc Verbindung weil beim Auflöten aufs 
Breakoutboard geschludert. Einfach mal durchklingeln das ganze bzw 
Versorgung direkt am ESP nachmessen.

von Michael U. (amiga)


Lesenswert?

Hallo,

Net_Hans schrieb:
> Der ESP sitzt auf einem Breadboard und bekommt von einer 1A
> Spannungsquelle eine Spannung von 3,3V DC. Desweiteren puffern zwei
> 10.000µF und ein 100nF Kondensator die Spannung. Somit gehe ich davon
> aus, dass die Spannungsversorgung i.O. ist.

wenn das wirklich 2x 10000µF sind würde ich mal die Spannung messen, die 
das Netzteil rausgibt. Mit 20000µF bekommt man durchaus auch ein 1A 
Netzteil kaputt. Ich habe da normalerweise 47...100µ relativ dicht am 
ESP, die 100n hat das Board selber drauf.

Bisher keinerlei Probleme, auch nicht mit meinen -07.

Defekten Flash soll es bei den 4MBit-Versionen schon gegeben haben, 
16MBit gibt es bei ebay, die Bauform ist etwas zu groß, läßt sich aber 
noch auflöten.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Net_Hans schrieb:
> Desweiteren puffern zwei
> 10.000µF und ein 100nF Kondensator die Spannung.

Ist das ein Punktschweißgerät? Da verdampfen bei jedem Fehler 
Bonddrähte, egal wie die Strombegrenzung beim Netzteil eingestellt ist.

MfG Klaus

von Chr. M. (snowfly)


Angehängte Dateien:

Lesenswert?

>immer wieder nett, wenn andere für einen googlen und auch nichts (aus
>meiner Sicht) sinnvolles dabei finden.

Also ich habe was gefunden, war gar nicht so schwer.
1
4M-bit Serial Flash 
2
-512K-byte 
3
-256 bytes per programmable page

von Net_Hans (Gast)


Lesenswert?

Hallo,

vielen Dank für eure zahlreichen Tipps,

ich habe jetzt einen 10.000er Elko aus der Schaltung geschmissen und die 
Spannung nachgemessen. Mit meinem Trägen UNI-T komme ich auf eine 
Spannung von 3,0V bis 2,89V. Somit muss ich mein Netzteil wohl etwas 
umgestalten. Das werde ich morgen auch tun. Vielleicht ist das schon die 
Lösung.

Ebenso werde ich alle Kontakte noch einmal nachlöten, eventuell ist ja 
wirklich irgendwo eine kalte Lötstelle oder aber das Breadboard hat 
Kontaktprobleme .... deswegen werde ich die Verbindungen auch mal direkt 
an den ESP anlöten. Sicher ist sicher ;-)

Mal gucken ob es was bewirkt. Ich sag euch bescheid ;-)


@Pete K.
nein ich habe die blank.bin nicht an beide Adressen geschrieben ... nur 
an die erste glaube ich ... bin mir aber gerade auch nicht ganz sicher

@Chr. Messener
vielen Dank für das Datenblatt. Ich hatte es leider nicht gefunden ... 
THX

von Klaus (Gast)


Lesenswert?

Ich betreibe mehrere, direkt am USB-Port. Mit einem Recom 3-Bein 
Schaltregler 3,3V 0,5A hole ich mir die Versorgung aus der USB-Spannung. 
Ein 10µ Keramikkondensator stützt die 3,3V. Die paar 100mA für den ESP 
sind da kein Problem.

MfG Klaus

von Chr. M. (snowfly)


Lesenswert?

Mögliche Erklärung für das Phänomen:
Der Chip wird mit WiFi disabled ausgeliefer und braucht daher weniger 
Strom,
als du das erste mal WiFi aktiviert hast wurde es auch eingeschaltet und 
zieht nun bei jedem start Strom.

Ich hatte so ein Verhalten mal als ich mit dem Multimeter den Strom 
direkt messen wollte. :)

von Michael U. (amiga)


Lesenswert?

Hallo,

mein CP2102 SiLabs USB-Adapter kann laut Datenblatt 100mA mit seinem 
internen 3,3V-Regler. Mit 100µF am ESP läuft dieser stabil am CP2102.
Benutze ich gern zum Programmieren und testen. Ansonsten diverse 
USB-Lader und ein China AMS1117 oder ein MCP1702 dahinter.
Wenn die rote LED beim WLAN-Zugriff anfängt erkennbar zu flackern reicht 
der Strom nicht, egal was mein Multimeter mir erzählt.

Mein momentanes Bastelwerk liegt gerade hier: ESP8266-12 mit einem RFM12 
dran und 2x MCP23S17 um 2x HDSP2113S (8-stellige 5x7 Matrix-LED) 
anzusteuern. Dazu ein ProMini mit einem RFM12 dran. Regler ist ein 
LM3940, Netzteil ein altes Samsumg-Handynetzteil 5V 650mA.

Gruß aus Berlin
Michael

von Net_Hans (Gast)


Lesenswert?

Hallo,

ich habe nun gestern meine Schaltung noch einmal neu aufgebaut in der 
Hoffnung, dass sich mein Problem erledigt.

Die gute Nachricht vorweg, die zwei ESPs gehen wieder!

Ich habe die Spannungsversorung neu aufgebaut und verwende jetzt einen 
StepDown-Converter welcher 3A liefern kann. Gestützt wird dieser von 
jeweils 47µF Kondensatoren am Eingang und Ausgang. Ausgangsseitig und 
nahe dem ESP befindet sich noch ein 100nF Kondensator. Mit dieser 
Schaltung läuchtet die Power-LED vom ESP erst einmal wieder korrekt. Der 
Chip selber hat sich aber weiterhin in einer Reset-Loop gehlaten. Da ich 
vor diesem Beitrag schon alles mögliche auf den Chip geflasht hatte, war 
ich mir nicht sicher, ob da nicht auch noch irgendwas schief hing. Aus 
diesem Grund, habe ich meinen ESP noch mal komplett neu nach dieser 
Registerbelegung geflasht
http://wiki.jackslab.org/ESP8266_Flash
Ausnahme war hier die "master_device_key.bin" die habe ich nicht 
gefunden.
Danach war die Reset-Loop auch Geschichte. Die nächsten Programme mit 
der Arduino IDE haben dann auch wieder ohne Probleme funktioniert.

Aber es gab dann leider wieder Probleme. Als der ESP gut mit UDP zu tun 
hatte, kam die Reset-Loop wieder. Also habe ich wieder die 
Versorgungsspannung am StepDown gemessen ... 3,29V ... perfekt aber als 
ich am ESP gemessen habe, sackte die Spannung sofort auf 1,9V ein. Ich 
kann es mir nicht erklären, warum das so ist. Könntet ihr mir noch mal 
weiter helfen?

Danke!
Grüße Hans

von Ulrich F. (Gast)


Lesenswert?

Also, wenn sich die Spannung am ESP und am Wandler unterscheiden, dann 
hast du ein Problem mit deinen Drähten.

von Net_Hans (Gast)


Lesenswert?

Da ich nur ein Multimeter habe, kann ich nicht sagen, ob die Spannung am 
Wandler stabil bleibt und am ESP einbricht. Ich konnte nur beobachten, 
das wenn ich am ESP messe, die Spannung einbricht. So als würde das 
Messgerät Störungen verursachen.

von G. H. (schufti)


Lesenswert?

hast du am ESP gemessen oder am breakout-board?

miss einfach mal - im spannungslosen Zustand! - den Widerstand der gnd 
und vcc Verbindung vom Anschluß der Stromversorgung zum jew. Potenzial 
am ESP.

Am breakout-board ist der mittlere SMD Widerstand ein 0 Ohm, der den auf 
der Unterseite bestückbaren 3V3 Regler brückt. Ev. ist der "hochohmig"?

Du hast nur von "Schaltung neu aufgebaut" geschrieben; hast du auch die 
ESP auf dem breakout-board nachgelötet? Da sah einiges nicht so gut 
aus...

von K. J. (Gast)


Lesenswert?

Net_Hans schrieb:
> Aber es gab dann leider wieder Probleme. Als der ESP gut mit UDP zu tun
> hatte, kam die Reset-Loop wieder. Also habe ich wieder die
> Versorgungsspannung am StepDown gemessen ... 3,29V ... perfekt aber als
> ich am ESP gemessen habe, sackte die Spannung sofort auf 1,9V ein. Ich
> kann es mir nicht erklären, warum das so ist. Könntet ihr mir noch mal
> weiter helfen?
>
> Danke!
> Grüße Hans

Hast du mal den Strom gemessen meine beiden ziehen im Reset-Loop 
ziemlich viel Strom kann nicht genau sagen wie viel da nach einigen Sec. 
der Spannungsregler abschaltet aber über 400mA sind es bei mir, würde 
auch erklären warum bei dir die Spannung runtergeht.

von Marcus (Gast)


Lesenswert?

G. H. schrieb:
> Am breakout-board ist der mittlere SMD Widerstand ein 0 Ohm, der den auf
> der Unterseite bestückbaren 3V3 Regler brückt. Ev. ist der "hochohmig"?

So ein Break-Out-Board habe ich auch. Da ist der Regler auf der 
Unterseite nicht bestückt und die drei Widerstände haben einen Wert >> 0 
Ohm. Damit der ESP funktioniert, habe ich eine Drahtbrücke eingebaut.

Marcus

von G. H. (schufti)


Lesenswert?

aber hoffentlich nur beim mittleren. Die anderen beiden sind nämlich 
Pull-Up/-Down ...

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.