ESP8266 Problem

Hallo,

irgendwie habe ich Probleme mit diversen ESP8266 01, 12 und 12E. Ich hatte die schon am laufen nach dem Sketch hier.
Zwischenzeitlich bekomme ich die Dinger nicht mehr richtig zum laufen. Ich habe sie mal geflasht, ging, dann ans Terminal-Programm rangemacht und die diversen AT-Befehle probiert. Ging dann auch gut.
Aber spätestens dann wenn der Strom weg war und wieder am Rechner angeschlossen wird geht nichts mehr. Sogar nach einem Hardware kommt nichts mehr am Terminal an geschweige dass er einen Befehl annimmt. Neu flashen und das Spiel beginnt neu...
Ich bin da etwas bis sehr ratlos. Hat jemand dieses Teilchen an einem MEGA erfolgreich in Betrieb? Ich möchte: einen HTML-Server machen der - wenn er kein bekanntes Netz findet - als AP läuft oder sich zusätzlich auch in ein bekanntes Netz einloggt. Wie gesagt, hat schon geklappt aber jetzt ist nach ein paar Minuten Schluss.
Ach ja, die Funktionen trennen - Arduino misst und bereitet auf und der ESP8266 nimmt die Daten und macht HTML scheint mir zu aufwendig.

Gruß Uwe

Hat jemand dieses Teilchen an einem MEGA erfolgreich in Betrieb?

Ja!

Der ESP führt das Programm aus, und steuert den Mega per I2C an.
Der Mega ist also nicht mehr als ein intelligenter Portexpander.

Nimm nach dem Flashen GPIO 0 von Masse, sonst bootet er in den Flashmode. Direkt nach dem Flashen startet er den Sketch auch mit GPIO 0 auf Masse, aber eben nur ein mal.

uk1408:
Ich bin da etwas bis sehr ratlos. Hat jemand dieses Teilchen an einem MEGA erfolgreich in Betrieb? Ich möchte: einen HTML-Server machen der - wenn er kein bekanntes Netz findet - als AP läuft oder sich zusätzlich auch in ein bekanntes Netz einloggt.
.
.
.
Ach ja, die Funktionen trennen - Arduino misst und bereitet auf und der ESP8266 nimmt die Daten und macht HTML scheint mir zu aufwendig.

Wie jetzt?
Am Mega als Modul mit AT-Firmware?
Am Mega mit eigener Firmware und Wifimanager?
Standalone ?

Das was du vorhast, gibt es bereits als Lib: Wifimanager

Am Mega als Modul mit AT-SOFT. So habe ich es ja Gemacht, den ESP initialisiert, SSID und Passwort für AP und mein WLAN zugewiesen, ins Netz eingeloggt usw.
Und dann in der Loop den esp-Port abgefragt bis was kommt und entsprechend reagiert: CSV-DATEI Senden,Tabelle mit Messwerten senden oder Befehl um CSV-DATEI zu löschen.
Und nun klemmt es.....
GPIO 0 ist über Taster auf Masse sollte also nichts passieren. Und hast Hinweise zu dem WIFI Manager?
Danke

Erste Fundstellen bei Google

Dazu musst du aber den ESP programmieren.

Was hast du für Sensoren am Mega dranhängen?

Am MEGA hängen 3 Stück AGS 712 zur Strommessung, an 3 weiteren werden 3 Spannungen über Spannungsteiler gemessen.

Da ist ein Mega überdimensioniert, nimm z.b. einen pro mini chino und häng den seriell an einen ESP. Dummerweise hat der ESP nur einen ADC Pin. Da braucht es weitere Periferie um 6 analoge Werte zu messen.

Der ESP ist einfacher in C über die IDE Zu programmieren und den Arduino nur sls Zuträger der Werte als wie das ganze per AT-Befehle im Arduino zu lösen. Wobei ich glaube, es gibt da eine Wifi Lib für den Arduino , die könnte es auch einfacher machen. Hab aber keine Erfahrung diesbezüglich.

wenn ich einen esp8266 benutze setze ich im Terminal die Baudrate auf 74880, so konnnte ich bis jetzt bei allen meinen Modellen den Bootvorgang beobachten und man erkennt gleich wo man sich befindet.
Außerdem setze ich CH_PD nur noch über ein RC-Glied (10k, 100nF) auf "HIGH". Das ist leider bei vielen Anleitungen im Nezt falsch.
Vielleicht hilft dir dass weiter. Grüße

Hallo, jetzt habe ich noch ein bisschen probiert, bin aber nicht weiter.

Wie hier beschrieben habe ich neu geflasht. Zuvor Reset und GPIO 0 auf GND, dann Reset- und danach PROG-Taste losgelassen und bis Ende geflasht. Dann Reset und das Terminal geöffnet, Port ausgewählt und AT-Befehle gegeben. Dann ein mal USB Stecker ziehen und wieder ran oder 3,3 V weg und wieder ranmachen und das war es dann. Das alles x mal wiederholt und x mal passiert. Einzige Abweichung zur Schaltung ist, dass CH_PD nicht über einen Widerstand auf + liegt.
Da muss doch irgendwo ein grundsätzliches Problem sein.....

-ElEspanol: Der MEGA muss da noch ein paar Dinge erledigen, Uhrzeit nehmen, Werte auf SD speichern, auf TFT ausgeben, letzte 24 h auf TFT als Kurve zeichnen und letztlich die HTML-Aufbereitung. Nur die eigentliche Anbindung ans WLAN soll der ESP machen und hat es ja auch schon gemacht. Nur jetzt macht er es nicht mehr. Und ich mag es einfach nicht wenn etwas plötzlich nicht mehr geht.....
Wenn es da eine Lib gäbe würde mir das auch helfen, bisher gibt es halt ein paar AT-Befehle und Abfragen die letztlich ja funktionieren. Aber ich denke immer noch es ein Hardware-Problem ist.

-fckw: Kannst du dazu etwas genaueres sagen? Was hat die Baudrate damit zu tun? Und wie hast du das RC-Glied geschaltet - R nach plus und den C ? Was soll der C bewirken?

uk1408:
-fckw: Kannst du dazu etwas genaueres sagen? Was hat die Baudrate damit zu tun? Und wie hast du das RC-Glied geschaltet - R nach plus und den C ? Was soll der C bewirken?

Ich denke das liegt daran, dass der "bootloader" die Daten an die serielle Schnittstelle beim einschalten eben mit besagter baudrate ausgibt. Der Vorteil, du siehst eben sofort in welchem "modus" der esp sich befindet weil er die entsprechende Information ausgibt.

Das zeigt das Terminal bei mir an wenn ich einen normalen reset an einem esp-01 durchführe:

ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
v00000000
~ld

und so ist die Ausgabe wenn ich ihn in den Programmiermodus gesetzt habe.

ets Jan  8 2013,rst cause:2, boot mode:(1,6)

das mit dem RC-Glied mache ich so, weil der "enable" etwas später, wie die Spannungsversorgung, seinen HIGH-Pegel bekommen sollte. Ansonsten kann dein esp kaputt gehen. Ich habe schon selbst zwei geschossen und seit ich das so mache habe ich Ruhe. Ob es wirklich daran liegt kann ich natürlich nicht mit Sicherheit sagen, aber diverse Berichte im Netz bestätigen das.
Das RC-GLied baust du so auf: 10k Widerstand von +3,3 Volt auf den "enable Pin" und von Masse ein Kondensator 100nf auf den "enable Pin". So ist gegeben, dass der HIGH-Pegel sein Potenzial später erreicht wie die Spannungsversorgung.
Folgende Grafik hat mir auch gut weitergeholfen, zwar speziell für den esp-01, aber es gibt auch Informationen zum Bootmodus.
esp8266_esp_01_module_pinout_diagram_cheat_sheet
Im Fall von z.b GPIO2, den HIGH-Pegel auch nur über einen Pullup realisieren (10k von 3,3V kommend).

Grüße

So, jetzt nochmal zum Abschluss (ich hoffe dass es jetzt geht).
Nachdem ich alle nicht benutzten Pin über Pull Up (10 k) hochgelegt habe funktionierte die Hardware wieder nachvollziehbar.
Mein anderes Problem war, dass das WLAN nach ein paar Minuten bzw. ein paar Connects nicht mehr funktionierte. Das Programm lief noch, aber der ESP ließ sich nicht mehr ansprechen. Nach ewigen Versuchen hat sich meiner Meinung nach die "TimeAlarms.h" bzw. die diversen Alarm.timer-Funktionen als Problem herusgestellt.
In meinem Programm habe ich mit Alarm.timerRepeat eine Routine zur Anzeige von Messwerten alle Sekunde und zum Speichern auf SD alle 30 Minuten aufgerufen. Dies hat problemlos funktioniert, nur meine WLAN-Anbindung ging nicht dauerhaft.
Jetzt habe ich die timer-Funktionen rausgenommen und die beiden Programme werden in der Loop nach Abfrage von millis für 1 bzw. 1800 Sekunden aufgerufen. Jetzt klappt es - zumindest für einige Stunden und einige hundert HTML-Aufrufe.
Kennt jemand das Verhalten der TimeAlarms bzw. deren Funktionen?

TimeAlarms nutze ich auch. Was möchtest du wissen?

alternativ könntest du auch einfach mal deinen Code posten...