Forum: Mikrocontroller und Digitale Elektronik Problem WIZnet W5500 auf Tenstar


von svensson (Gast)


Lesenswert?

Moin,

mit einem Modul /Tenstar Robot W5500/ gibt es Problemchen. Sieht aus wie 
auf dem folgenden Bild, ist aber in DE gekauft:

https://www.aliexpress.com/i/32819343794.html

Angesteuert wird er von einem ATmega328p über SPI. Verwendet wird die 
Ethernet3-lib. Link, DHCP, HTML usw. funktioniert auch alles, aber in 
unregelmäßigen Abständen scheint sich das Modul "aufzuhängen".

Das kann nach 3 Minuten passieren oder nach fünf Tagen, anscheinend 
jedoch nicht ohne externe Anfragen.

Die Funktion /client.available()/ liefert einfach kein TRUE mehr bei 
Anfragen, die Led für Netzwerkaktivität leuchtet jedoch.
Nach einem Reset des Boards läuft dann wieder alles.

Könnte es sein, daß irgendwelcher Netzwerkverkehr zu einer Überlastung 
des W5500 führt?

von Sven L. (svenl)


Lesenswert?

Die WIZnet-Module funktionieren durch die Bank weg nach meiner Erfahrung 
problemlos!

Viel wichtiger ist es mit dem Konfigtool TCP-keepalive im 
COM-Port-Treiber und auch im WIZnet-Modul einzuschalten. Somit werden 
unterbrochene Netzwerkverbindungen erkannt und das WIZnet-Modul gibt den 
Socket wieder frei.

Macht man das nicht, nimmt das WIZnet-Modul keine neue Verbindung an. 
Ein ICMP-Ping funktioniert allerdings weiterhin.

Viele Grüße!

Sven

von svensson (Gast)


Lesenswert?

Danke, das werde ich mir morgen ansehen.

Offenbar scheint meine LIB da keine Funktion vorzusehen, dann werde ich 
das wohl von Hand nachimplementieren müssen.

Viele Grüße

von svensson (Gast)


Lesenswert?

Nach vielen weiteren Tests scheint es nun so zu sein, daß ich das Modul 
tatsächlich neu initalisieren muß, da offenbar sogar die IP verloren 
geht.

Das kann ich mir nicht wirklich erklären.

Wenn jedoch die Abfragen weit genug zeitlich auseinander liegen, dann 
kann zwischendurch das Modul immer wieder neu initialisiert werden.
Nicht schön, aber eine QnD-Lösung.

von Torsten (Gast)


Lesenswert?

Ich nehme mal an es geht um Arduino, oder?
Das von dir genannte Modul habe ich mit der Ethernet-Lib am von dir 
genannten Controller problemlos zum Laufen gebracht. Auch am ESP32.

Beispiel: 
https://github.com/arduino-libraries/Ethernet/blob/master/examples/WebClient/WebClient.ino

Angebunden wird das ja via SPI. Man muss halt bei der Initialisierung 
drauf achten, dass man den passenden CS-Pin konfiguriert.

von svensson (Gast)


Lesenswert?

Ja, ist ein Arduino.

Mit der Arduino-LIB hatte ich das Arduino Ethernet2 Shield zum laufen 
gebracht.
Das genannte Modul arbeitete damit jedoch sehr langsam. Deshalb bin ich 
auf diese Lib umgestiegen:
https://github.com/sstaub/Ethernet3

Damit läuft das Modul auch, aber hat halt ganz gelegentlich Aussetzer.

Der Arduino läuft als Webserver und wird von einem Webbrowser (derzeit 
noch Mozilla) abgefragt. Die Abfrage initiert das Auslesen von Daten, 
die dann als HTML-Seite dargestellt werden. Ein PC soll die Daten später 
loggen.

Mittlerweile vermute ich, daß evtl. der Client Schuld ist. Wenn ich nach 
jedem Auslesen ein Hardwarereset des Modules durchführe, dann geht es. 
Bei dieser Lösung hätte ich aber Bedenken wie lange das Modul/Chip das 
mitmachen, wenn jede Minute neu initialisiert wird. Außerdem dauert das 
etwa 30 Sekunden bis der Webserver wieder betriebsbereit ist.

Wenn ich ein Softwarereset durchführe (Ethernet.softreset()), dann 
scheint es auch zu funktionieren. Zwar steigt ab und an der Browser auch 
aus, aber mit Klick auf "Wiederholen" holt er dann die Seite, d.h. das 
Modul arbeitet weiter.

von Torsten (Gast)


Lesenswert?

An der von dir genannten Lib finde ich auf jeden Fall gut, dass man den 
PHY konfigurieren kann. Reduziert man die Geschwindigkeit von 100 auf 10 
MBps, hat man schon deutlich weniger Stromverbrauch. Schaltet man die 
Netzwerkverbindung komplett ab, ist es nochmal weniger. Mir ging das 
allerdings nicht weit genug und habs final dann so gemacht, dass das 
komplette Modul über einen MosFET spannungslos gemacht wird und mein uC 
auch Heia macht. Nach 5min wacht der uC wieder auf und der MosFET 
schaltet auch das Ethernet-Board wieder ein. Aber das jetzt nur als 
Randnotiz.

Was ich an deiner Stelle mal zum Datentransport mir anschauen würde ist 
MQTT (https://github.com/knolleary/pubsubclient). Ich lese in meinem 
Projekt (neben der Steuerung der Gartenbewässerung) verschiedene 
Sensoren aus und das Ganze übertrage ich dann per MQTT. Der zugehörige 
Dienst (Broker) läuft auf einem Raspberry Pi. Falls du MQTT nicht 
kennst: Man überträgt dort Werte in sog. Topics. Kannst dir wie einen 
String-Container vorstellen. In ein solches Topic können Teilnehmer 
reinschreiben oder auch nur lesen. Der Broker notifiziert die 
Teilnehmer, wenn ein neuer Wert eingetroffen ist. Bei mir ist openHAB2, 
welches ebenfalls auf dem Raspi läuft, ein Teilnehmer und kümmert sich 
um die PErsistierung in einer mySQL-DB. Die Visualisierung mache ich mit 
Grafana. Bei der Gartenbewässerung ist es ein Stück weit umgekehrt: Da 
schreibt openHAB in ein Topic rein und der uC empfängt den Befehl.

Die Notifizierung der Teilnehmer erfolgt auf jeden Fall innerhalb von 
Millisekunden und es gibt auch Mechanismen dafür, wenn Teilnehmer mal 
nicht erreichbar sind. Ich finde MQTT auf jeden Fall grandios.

von svensson (Gast)


Lesenswert?

Das MQTT klingt interessant, das versuche ich mir zu merken.

Aber in diesem Projekt ist es wohl keine Option, denn ich möchte, daß 
die Werteausgabe des µC auch mit einem "stinknormalen" PC ohne 
zusätzliche Software gelesen werden kann, da eignet sich HTML eben sehr 
gut.
Das Datenlogging können dann ein paar Zeilen Code auf einem Computer 
übernehmen.

Mit dem Aufruf von Ethernet.softreset() nach dem Ende jeder 
Datenübertragung scheint das Problem gelöst zu sein. Der dauert auch nur 
1 Sekunde.

Ich vermute folgendes Problem: der Client baut die Verbindung nicht 
100% ab oder schickt irgendwelche kruden Daten und daher "hängt" das 
Socket irgendwie. Der Reset initialisiert das Modul wieder neu.
Könnte man natürlich per Netzpaketanalyse herausfinden, aber das ist mir 
derzeit viel zu zeitaufwendig.

Die Netzwerkschnittstelle verbraucht ordentlich Strom, so bis zu 140mA 
im Betrieb, so daß der 7805 wohl noch einen Kühlkörper spendiert 
bekommt. Bei 10 Mbit soll sich der Strimbedarf etwa halbieren und im 
"Powerdown" bei etwa 5mA liegen - habe ich aber (noch) nicht 
nachgemessen.
Da der µC jedoch per Netzteil versorgt wird, spielt der Energiebedarf 
keine Rolle.

von Torsten (Gast)


Lesenswert?

Mein ursprünglicher Ansatz für ein anderes Projekt war mal, dass ich den 
328P schlafen lege und das Eth-Modul ihn bei Bedarf wieder aufweckt. Bis 
ich mir dann mal den Strombedarf des uC und den das EthBoards angeschaut 
habe :-) Ich habe in nem anderen Forum mal nen längeren Text dazu 
geschrieben: 
https://www.arduinoforum.de/arduino-Thread-ESP32-Ethernet?pid=56653#pid56653

Ich weiß nicht mehr genau, wie hoch der Strombedarf vom EthBoard war, 
wenn man es auf Powerdown gesetzt hatte. Ich fand es auf jeden Fall 
vergleichsweise viel und hab es dann per Mosfet "richtig" gemacht.

von Uwe D. (monkye)


Lesenswert?

Betreibst Du den Arduino mit 5V und den W5500 mit angepasstem Pegel? 
Falls nicht, dann geht das Modul kurz über lang über den Jordan. Ist mir 
nicht nur 1x passiert (auch mit dem W5200).

von svensson (Gast)


Lesenswert?

Das Modul von Tenstar hat einen Spannungsregler und einen Pegelwandler, 
so daß ein Betrieb mit 3.3V/5V-Pegel möglich sein soll.

von Torsten (Gast)


Lesenswert?

Genau, das Modul bietet Anschlüsse für beides (3.3 bzw 5). Man muss es 
aber halt korrekt anschließen :-)

von OMG (Gast)


Angehängte Dateien:

Lesenswert?

Uwe D. schrieb:
> Betreibst Du den Arduino mit 5V und den W5500 mit angepasstem Pegel?
> Falls nicht, dann geht das Modul kurz über lang über den Jordan. Ist mir
> nicht nur 1x passiert (auch mit dem W5200).

OMG!

Was muss ich da schon wieder für einen Käse lesen?

Tausende von (5V-) Arduinos auf der ganzen Welt funktionieren mit
einem W5100 oder W5500.

von J. W. (dilbert)


Lesenswert?

> Die WIZnet-Module funktionieren durch die Bank weg nach meiner Erfahrung
> problemlos!

Die Erfahrung kann ich nicht teilen: Ich wollte den 5500 mal als MAC/PHY 
verwenden, aber Datenframes mit einem bestimmten Muster kamen 
korrumpiert an. Eine entsprechende Meldung beim Hersteller wurde 
anscheinend nicht ernst genommen.

: Bearbeitet durch User
von OMG (Gast)


Lesenswert?

J. W. schrieb:
> Eine entsprechende Meldung beim Hersteller wurde
> anscheinend nicht ernst genommen.

Weil du vermutlich mit der Hardware nicht ausreichend sorgfältig
und angemessen umgehen konntest.

Viele Leute sind schon an der Versorgung von W5x00-Modulen und
-Chips gescheitert. Und immer war der Chip dran schuld, nie der
"Entwickler" und Nutzer der Chips.

von J. W. (dilbert)


Lesenswert?

> Weil du vermutlich mit der Hardware nicht ausreichend sorgfältig
> und angemessen umgehen konntest.

Mag sein.

Aber
1) es war ein fertiges Board von WIZnet,
2) ich hatte (mehrfach) die entsprechenden Abschnitte im Datenblatt 
gelesen,
3) das Problem trat nur bei einem bestimmten Bitmuster auf.

von OMG (Gast)


Lesenswert?

J. W. schrieb:
> 1) es war ein fertiges Board von WIZnet,

War die Stromversorgung und der umgebende Aufbau auch von WIZnet?

OMG schrieb:
> Viele Leute sind schon an der Versorgung von W5x00-Modulen und
> -Chips gescheitert.

J. W. schrieb:
> das Problem trat nur bei einem bestimmten Bitmuster auf.

OMG schrieb:
> Und immer war der Chip dran schuld, nie der
> "Entwickler" und Nutzer der Chips.

J. W. schrieb:
> aber Datenframes mit einem bestimmten Muster kamen
> korrumpiert an

Im Datenblatt ist nichts dazu beschrieben, aber wenn ich
RAW Ethernet bzw PHY Mode annehme dann wird dort keine
Checksum Überprüfung enthalten sein, daher können dann
auch fehlerhafte Pakete empfangen werden.

von svensson (Gast)


Lesenswert?

svensson schrieb:
> Das Modul von Tenstar hat einen Spannungsregler und einen Pegelwandler,
> so daß ein Betrieb mit 3.3V/5V-Pegel möglich sein soll.

Ich habe mir das Modul noch einmal angesehen, Spannungsregler ja, 
Pgelwandler doch nicht. Macht aber nichts, da der W5500 auch 5V-Pegel 
abkann.

Funktioniert übrigens seit Hunderten von Anfragen.

von Uwe D. (monkye)


Lesenswert?

OMG schrieb:
> Uwe D. schrieb:
>> Betreibst Du den Arduino mit 5V und den W5500 mit angepasstem Pegel?
>> Falls nicht, dann geht das Modul kurz über lang über den Jordan. Ist mir
>> nicht nur 1x passiert (auch mit dem W5200).
>
> OMG!
>
> Was muss ich da schon wieder für einen Käse lesen?
>
> Tausende von (5V-) Arduinos auf der ganzen Welt funktionieren mit
> einem W5100 oder W5500.

Ja, für 10 Minuten auf dem Steckbrett, aber nicht immer über Monate. Du 
kannst gerne ein paar von meinen Wiz820 Modulen haben, die 5V tolerant 
waren.
Auf Datenblättern kann jeder reiten.

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.