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?
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
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
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.
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.
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.
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.
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.
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.
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).
Das Modul von Tenstar hat einen Spannungsregler und einen Pegelwandler, so daß ein Betrieb mit 3.3V/5V-Pegel möglich sein soll.
Genau, das Modul bietet Anschlüsse für beides (3.3 bzw 5). Man muss es aber halt korrekt anschließen :-)
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.
> 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
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.
> 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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.