Forum: Mikrocontroller und Digitale Elektronik Probleme mit ESP8266 Modulen beim Senden per UPD


von Udo W. (udo_w92)


Lesenswert?

Hallo zusammen,

ich habe mehrere gleiche Boards mit ESP8266-07 Modulen drauf.
Alle verbinden sich problemlos mit meiner Netzwerkumgebung.
Zur Kommunikation unter den ESP8266 Modulen werden Daten über UDP 
empfangen/gesendet.
Das Kurriose ist das einige Modulen zwar Daten entgegennehmen (das sehe 
ich daran weil z.B. eine Schalthandlung ausgeführt wird) aber keine 
Antwort senden können.
In Wireshark tauchen auch keine gesendeten Daten vom Modul auf.

Alle haben den gleichen Softwarestand, die Programmierung läuft über 
Arduino.

Der eigentliche Code läuft auf den funktionierenden Modulen schon seit 
vielen Stunden ohne irgendwelche Ausfälle.

Auffällig ist das die Module die Probleme machen keine Beschriftung auf 
der Keramikantenne haben, die anderen sind mit Rainsun bedruckt.

Ich habe selbstverständlich schon die Module auf den Boards 
durchgetauscht um einen Fehler auf dem Board auszuschließen, was 
angesichts der geringen Beschaltung aber kaum möglich sein konnte.

Gibt es einen von euch der dieses Problem kennt und evtl. eine Lösung 
hat?

Gruß Udo

: Bearbeitet durch User
von W.A. (Gast)


Lesenswert?

Udo W. schrieb:
> über UPD

Und das soll was sein?

von Udo W. (udo_w92)


Lesenswert?

W.A. schrieb:
> Udo W. schrieb:
>> über UPD
>
> Und das soll was sein?

Sorry UDP natürlich.

von aGast (Gast)


Lesenswert?

W.A. schrieb:
> Und das soll was sein?

Ein Tippfehler UPD -> UDP (User Datagram Protocol, kurz UDP)

von Michael H. (mueckerich)


Lesenswert?

Ist die Firmewareversion auf allen Modulen die gleiche?

von Udo W. (udo_w92)


Lesenswert?

Michael H. schrieb:
> Ist die Firmewareversion auf allen Modulen die gleiche?

Die Module wurden direkt hintereinander programmiert.
Arduino kompiliert doch die eigentliche Firmware für den WiFi Stack 
jedesmal mit oder?!
Demnach ist dann alles identisch.
Die Module sind allerdings von verschiedenen Lieferanten und daher mit 
sicherheit auch aus verschiedenen Chargen.
Gibt es noch eine andere Firmware im ESP die man selber aktualisieren 
kann?

von Planlos (Gast)


Lesenswert?

Benutzt du einen Arduino (AVR), der per Serieller Schnittstelle an den 
ESP verbunden ist, oder benutzt du den ESP selbst als Arduino, 
programmierst den also direkt, ohne zusätzlichen Zweit-µC, aus der 
Ardino-IDE?

von Udo W. (udo_w92)


Lesenswert?

Planlos schrieb:
> Benutzt du einen Arduino (AVR), der per Serieller Schnittstelle an den
> ESP verbunden ist, oder benutzt du den ESP selbst als Arduino,
> programmierst den also direkt, ohne zusätzlichen Zweit-µC, aus der
> Ardino-IDE?

Die Software ist direkt für den ESP geschrieben, also ohne weiteren µC!
Diese wird dann über den UART Bootmodus aufgespielt.

von Michael U. (amiga)


Lesenswert?

Hallo,

die -07 haben auch alle gleiche Flash-Größe? Alte Module haen 512kB, 
neue 1MB. Erkannbar auch an der Typenbezeichung des Flash:
04 im Namen 4MBit = 512kB
08 im Namen 8MBit = 1MB.
Sollte man auch mit den passenden Einstellungen flashen, sonst kann es 
durchaus komische Effekte geben.

Gruß aus Berlin
Michael

von Udo W. (udo_w92)


Angehängte Dateien:

Lesenswert?

Michael U. schrieb:
> Hallo,
>
> die -07 haben auch alle gleiche Flash-Größe? Alte Module haen 512kB,
> neue 1MB. Erkannbar auch an der Typenbezeichung des Flash:
> 04 im Namen 4MBit = 512kB
> 08 im Namen 8MBit = 1MB.
> Sollte man auch mit den passenden Einstellungen flashen, sonst kann es
> durchaus komische Effekte geben.
>
> Gruß aus Berlin
> Michael


Hallo Michael,

danke für deinen Hinweis!
Ich kann die Typenbezeichnung nicht lesen weil die 07er ja ein 
Abschiermblech haben.

Wenn ich den ESP normal starte kommt folgende Meldung über UART:

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

load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld

Ich habe
512K (64K SPIFFS)
und
1M (512K SPIFFS)
in den Arduino Einstellungen probiert.

Bei beiden Einstellungen war das Verhalten das selbe.

von Michael U. (amiga)


Lesenswert?

Hallo,

stimmt, die -07 haben ja eine Abschirmung. Man kann die Flashgröße 
auslesen, z.B. damit:
https://espressif.com/en/support/download/other-tools

Mir ist noch nicht so ganz klar, was genau bei Dir passiert.
WLAN-Connect ist ok, es empfängt UDP aber sendet keine UDP-Pakete?

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Udo W. (udo_w92)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> stimmt, die -07 haben ja eine Abschirmung. Man kann die Flashgröße
> auslesen, z.B. damit:
> https://espressif.com/en/support/download/other-tools
>
> Mir ist noch nicht so ganz klar, was genau bei Dir passiert.
> WLAN-Connect ist ok, es empfängt UDP aber sendet keine UDP-Pakete?
>
> Gruß aus Berlin
> Michael

Guten Morgen Michael,

du hast es genau verstanden!
Empfangen geht, senden aber nicht.
Gleiches Programm auf einem anderen 07er Modul läuft einwandfrei.
Es kann ja auch eigentlich kein defekt an dem Modul sein, sonst würde es 
sich ja vermutlich auch nicht mit meinem Netzwerk verbinden können?!

Gruß Udo

von Michael U. (amiga)


Lesenswert?

Hallo,

nach defekt klingt es eigenlich nicht.
Allerdings fällt mir im Moment nichts sinnvolles ein.
Mein Bekannter und ich hatten zwar schon nette Effekte mit den 
ESP-Modulen und WLAN, allerdings brachten die dann keinen Connect zum 
Router mehr zustande.
Es gibt Konfig-Bereiche im Flash, die u.a. WLAN-Einstellungen enthalten 
und beim flashen nicht unbedingt neu beschreiben werden.
Passt aber alles nicht damit zusammen.

Du kannst ja mal einen Sketch raufspielen, der in setuo() nur folgendes 
enthält:

  ESP.deepSleep(1, RF_DEFAULT);        // schlafen gehen
  delay(100);

Das schickt ihn Schalfen und läßt ihn nach Reset mit den WLAN-Defaults 
starten.

Flashen und Reset. Passiert nach außen dann nichts mehr, er schläft ja 
sofort.
Dann Deinen Sketch wieder rauf, ob sich was geändert hat.
Die Einstellungen lassen sich nur über den Sleep beeinflussen:

RF_DEFAULT = 0,  //RF_CAL depends on init data from byte 108
RF_CAL = 1,  //RF_CAL enabled causes large current drain after wake 
170mA
RF_NO_CAL = 2,  //RF_CAL disabled, small current drain after wake 75mA
RF_DISABLED = 4  //RF disabled, smallest current drain after wake 15mA

Geht vermutlich auch über Systemaufrufe, habe ich aber nicht geschaut.

Gruß aus Berlin
Michael

von Udo W. (udo_w92)


Lesenswert?

Danke für diesen sehr interessanten Hinweis, davon habe ich bislang noch 
nichts gehört.
Ich werde es heute Abend ausprobieren und davon berichten.

Gruß Udo

von Einer K. (Gast)


Lesenswert?

Ich kann da auch nur vermuten...

1:
Das Routing versagt, in eine Richtung. Evtl. mal die betreffenden 
Router/Repeater/Switches zurücksetzen/neustarten

2.
Das riecht nach Firewall

von Michael U. (amiga)


Lesenswert?

Hallo,

Arduino F. schrieb:
> Ich kann da auch nur vermuten...
>
> 1:
> Das Routing versagt, in eine Richtung. Evtl. mal die betreffenden
> Router/Repeater/Switches zurücksetzen/neustarten
>
> 2.
> Das riecht nach Firewall

prinzipiell Zustimmung. allerdings würde das seine Beobachtung nicht 
richtig erklären, warum es eine ModulVersion des -07 betrifft.

Ansonsten habe ich meinen Router auch schon damit "geschafft", daß ich 
mehrere ESP in bunter Mischung hin und her geflasht dran hatte. Dann 
endete es aber eher so, daß plötzlich das WLAN komplett hing.
Da kam mein Router wohl mit seiner MAC-Table nicht mehr richtig klar.

Gruß aus Berlin
Michael

von Einer K. (Gast)


Lesenswert?

Michael U. schrieb:
> warum es eine ModulVersion des -07 betrifft.
Wg der MAC
Die sollte sich schon von Modul zu Modul unterscheiden.

Michael U. schrieb:
> Da kam mein Router wohl mit seiner MAC-Table nicht mehr richtig klar.
Eben drum!
Dann gibts die lustigsten Erscheinungen.

Aber alles ohne Gewähr.

von Udo W. (udo_w92)


Lesenswert?

Hab alle vorgeschlagenen Ansätze probiert, leider ohne Erfolg.
Ich habe meinen Router nicht zurückgesetzt aber die Liste der 
verbundenen Geräte aufgeräumt.
Die mac Adressen waren aber nicht doppelt vergeben...
Ich werde wenn ich morgen dazu komme ein Modul mit einem eigenen anderem 
Router verbinden.

Was auch sehr merkwürdig ist, auf dem Modul läuft durch meine Software 
eine kleine Webseite, diese lässt sich problemlos aufrufen und 
bedienen...

Gruß Udo

von Michael U. (amiga)


Lesenswert?

Hallo,

seltsam, aber etwas ist mir noch eingefallen:
Was löst das UTP-Senden aus:

Es gab mal -07 mit einem Fehler:
http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-07

Note: some versions have an error on silkscreen:
GPIO4 and GPIO5 are exchanged!

Gruß aus Berlin
Michael

von Udo W. (udo_w92)


Lesenswert?

Hallo,

das senden einer UDP Nachricht wird z.B. als Reaktion auf eine 
empfangene Nachricht oder durch ansteuern eines (Eingangs)-pin 
ausgelöst.
Gleichzeitig wird die selbe Nachricht auch über UART verschickt, das 
klappt ohne Probleme.

Die Module die Probleme machen haben tatsächlich den "Fehler" das GPIO 4 
und 5 vertauscht sind.
Aber das dürfte ja in diesem Fall keine Rolle spielen?!
Wird eigentlich die ganze Ethernetverwaltung jedesmal neu aufgespielt 
oder ist das ein part der vom Chiphersteller fest implementiert ist?

Gruß Udo

von Michael U. (amiga)


Lesenswert?

Hallo,

es wird jedesmal alles neu compiliert und geflasht.
Bei gleichen Einstellungen in der Arduino-IDE für Board usw. sollte also 
jedesmal das identische komplette Programm erzeugt werden, incl. aller 
eingebunder Hersteller-Module.
Es gibt eigentlich nur 2 Flashbereiche, einer davon mit Init-Daten, die 
nicht zwingend neu geflasht werden.
Im Netz liegen irgendwo leere Flash-Files für verscheidene Flashgrößen 
rum , damit kann man alles komplett platt machen.
Allerdings kann es dann etwas problematisch werden, die default.bin 
wieder in den richtigen Bereich zu flashen, das ist alles ziemnlich 
unsortiert, was man da finden.
Man kann auch eine AI-Thinker-Version flashen, allerdings liefen bei mir 
von den AT-Versionen nur wenige dann wirklich.
Richitg kaputt flashen kann man den ESP dabei nicht, der Bootloader usw. 
ist fest im Rom.
Bei falschen defaults startet dann eben die Anwendung nach dem Flashen 
nicht mehr oder WLAN geht nicht oder es gibt seltsame Stacktraces.

Bisher ist mir dabei aber noch kein ESP auf der Strecke geblieben.
Meine 3 defekten sind ein kaputt gekaufter ( Kurzschluß zwischen 2 Pins 
unterhalb der Abschirmung), ein zerlöteter -03 und die Erkenntnis, daß 
ein -12 auf Überspannung (Fehler am China-StepDown) unwillig reagiert. 
;)

Im Moment ist mir das Verhalten ein komplettes Rätsel.
Wenn es nichts geheimnisvolles ist, kannst Du den Sketch ja mal hier 
reinstellen oder mir per PM schicken.

Auf meiner "Wieder vergessen, das Badlicht auszuschalten!" Überwachung 
ist noch ein -07 mit unbeschrifteter Antenne im Einsatz...

Gruß aus Berlin
Michael

von Udo W. (udo_w92)


Lesenswert?

Puhh, der Fehler ist gefunden.
Die IP Adresse welcher per DHCP vergeben wird, wurde in meinem Programm 
falsch abgespeichert.
Hat man im Menü der Homepage die IP einmal statisch eingegeben wurde 
diese im Programm gespeichert und damit konnte gearbeitet werden.
Hat man DHCP ausgewählt hat der ESP sich auch so verbunden, allerdings 
die Adresse 0.0.0.0 weggespeichert. Damit hat die Software dann 
fälschlicherweise versucht Daten zu versenden...

Woran es genau liegt das der Fehler nicht bei allen Modulen auftrat kann 
ich nicht genau sagen, war wohl blöder Zufall.

Allen vielen Dank für Ihre Hilfe, besonders an Michael!

Gruß Udo

von Michael U. (amiga)


Lesenswert?

Hallo,

na dann ist ja auch meine Welt wieder in Ordnung. :-)

Es kann einen Unterscheid geben: der ESP speichert intern Daten zur 
letzten WLAN-Verbindung ab, auf die er zückgreifen kann, um einen 
schnelleren Verbindungsaufbau erreichen kann. Das landet irgendwo in 
diesem default-Block und der wird beim flashen nicht zwingend 
überschrieben.

Allerdings habe ich da auch keine Lust, in diese Tiefen des SDK 
abzusteigen, zumal einige Interna nur mit Mühe im Espressif-Forum zu 
entdecken sind.

Viel Spaß weiterhin.

Da ich ja letztens "aufgeräumt" und mit von irgendwann früher eine 
DC-3840-Kamera in die Hände fiel, habe ich im Moment nichts sinnloseres 
zu tun, als die an den ESP zu hängen. Sind zwar nur Standbilder in 
640x480, aber als "Wolkenkamera" könnte ich sie ja mit an meinen 
BME280-Sensor hängen und mir alle paar Minuten ein Bild mitschicken 
lassen...

Gruß aus Berlin
Michael

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.