(beendet) UNO Replika ks0304 eth

Hallo,
ich habe mir den neuen UNO mit ETH schittstelle W5500 zugelegt. Dazu war ich auch auf der Seite
Uno ETH W5500
Aber leider Verliert das Teil schon nach wenigen Augenblicken die Verbindung und kann nicht mehr angesprochen werden. Zum Testen hatte ich den Code A genommen sowie die Bibliothek Ethernet55 von der Seite des Hersteller.

Hat eventuell auch einer soein Teil und die gleichen Probleme und kann mir sagen wie er/sie es geschafft haben eine Stablile Verbindung zu bekommen?

gruss
Luzie

Das ist Sinn und Zweck dessen...

  // print out your local IP address
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) 
  {
    // print out four byte IP address
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print("."); 
  }

  Serial.println();
}

void loop() 
{
}

Zuerst mal das ist kein Orginal Arduino und deshalb darf der Markenname nicht dafür nicht verwendet werden.

Mit

meinst Du Ethernet oder USB?

Ich habe kein solches Teil sodaß ich Dir nicht weiter helfen kann.

Grüße Uwe

oh sorry Uwe, dann habe ich etwas Falsches geschrieben. kein Arduino sondern ein ks0304.

die USB Schnittstelle ist OK er Verliert die ETH Verbindung. Ich kann das Teil anpingen mal kappt schon nach 3 manchmal nach 7 oder 10 pings die Verbindung.
Ich habe es auch mit dem 2tem versucht. Aber das Ergebniss bleibt das selbe. Auch habe ich die Ethernet.h Ethernet2.h probiert aber immer das gleiche. er läuft nicht stabil durch.

hast du das gemacht?

2. For first test, connect DC7-12V、USB MICRO、TF card and network cable.

bitte zeige ein Foto von deiner Verkabelung.

Hallo.

Egal was ich mache, ob 9v oder usb, das verhalten bleibt das gleiche. Es muss auch ohne TF Card Funktionieren da in der beschreibung steht das wenn tf karte vorhanden es probleme mit dem ethernet geben kann, daher habe ich es auch ohne probiert. wie gesagt es geht unterschiedlich lange und dann ausfall.



Angeschlossen ist das ganze an ein TP-Link den ich eigendlich als Fehlerquelle ausschliessen kann.
Da vorher ein Arduino Leonardo genau mit dem selben Netzwerkkabel an dieser Stelle sein Dienst getan hat. Also gleiche Situation. Auch wurde ein Leonardo ETH POE daran probiert, er zeigt auch nicht dieses Verhalten.

Hinweis: Die TF-Karte kann beim Lesen des IP-Adresscodes nicht an die Steuerplatine angeschlossen werden, andernfalls wird die IP-Adresse möglicherweise nicht gelesen Der Code darf nur auf 1.4 Version IDE getestet werden.
Inzwischen ist seine MAC-Adresse zufällig. Sie können die MAC-Adresse im Code einstellen.

Sollte es daran liegen weil ich habe version 1.8.15

schließ die 9V dauerhaft an.
Schritt 1:
lad den Code A hoch.
ping auf einem PC dein Teil
ping [deine Ip] -t

Wie lange geht der Sketch?
Wie lang klappt der Ping?

Schritt 2:
lad mal den Code aus der IDE hoch:

Findest in Ethernet/WebClientRepeating.

ping auf einem PC dein Teil.
Wie lang geht der Sketch?
Wie lang geht der Ping?
Poste den Start der Seriellen Ausgabe

hier der Auszug des ganzen

Antwort von 192.168.178.152: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.152: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.152: Bytes=32 Zeit<1ms TTL=128
Zeitüberschreitung der Anforderung.
Zeitüberschreitung der Anforderung.

Die IP Adresse habe ich vom DHCP bezogen.

21:22:35.661 -> My IP address: 192.168.178.152.
21:23:19.241 -> My IP address: 192.168.178.152.
21:28:07.935 -> My IP address: 192.168.178.152.
21:28:29.601 -> My IP address: 192.168.178.152.
21:29:10.267 -> My IP address: 192.168.178.152.

#include <SPI.h>
#include <Ethernet55.h>

// set MAC address
#if defined(WIZ550io_WITH_MACADDRESS) // Use assigned MAC address of WIZ550io
;
#else
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
#endif

void setup()
{
  Serial.begin(9600);
  if (Ethernet.begin(mac) == 0)
  {
      Serial.println("Failed to configure Ethernet using DHCP");
      // connection fails, stop program run.
      for(;;);
  }

  // print out your local IP address
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++)
  {
    // print out four byte IP address
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }

  Serial.println();
}

void loop()
{
} 

Schrit 2 MIT DER ORIGINALEN Ethernet library bring was?

nein, das hatte ich weiter oben schon geschrieben das auch die anderen lib nicht so richtig Funktionieren. Weder die Ethernet.h noch die Ethernet2.h. Ich habe die Jungs von Keyestudio schon mal angeschrieben und ihnen die Auswertung vom Ping und den krams geschickt. Bin nun mal gepannt was von denen kommt.

Eigendlich sollte dieser als ersatz für den leonardo der leider eine kaputte USB hat herhalten. Aber leider gehts irgendwie nicht so richtig wie es soll. Und ein Originalen UNO mit ETH gibt es ja leider nicht. Ein Shild kommt auch nicht in betracht da es die Bauhöhe vom Geäuse nicht hergibt.
Also bin ich wo leider gezwungen auf nem Clone auszuweichen. Anfrage an Arduino CC blieben bisher unbeantowrtet ob es eine neue Version vom Leonardo gibt da die alte ja eingestampft wurde.
Naja man kann nicht alles haben.

an der Ethernet55 liegt es nicht,
Das habe ich gerade mit einem Nano+W5500 ausprobiert.
Der Webserver Sketch (aus der Hersteller Lib funktioniert, der Sketch A aus dem Wiki nicht).

Alternativen:
bringst du einen Nano + Shield evtl. Hochkant unter?

die Robotdyn sachen sind normalerweise ok - hab aber beide nicht selber getestet:
ein Uno mit Ethernet

ein Mega mit Ethernet

übrigens gibt es die W5500 auch als ganz kleine Module, wenn du die verkabelung selber machst, dann kannst du "die Buchse" neben einen Standard UNO geben (der W5500 ist unten drauf auf der PCB):
z.B. so etwas:

so, genug zum surfen :wink:

Danke,

das kleine Teil wäre eine Alternative für das neue Projekt V2. Den Leonardo hatte ich schon hier v2, aber leider ist dort die ETH Buchse Fehlerhaft und die Jungs haben nicht auf meine Reklamation Reagiert. Vieleicht war es eine schlechte Charge. Aber egal. Ich habe es nun mit meinem Code Prbiert und lasse noch den Ping laufen. bisher scheint es zu klappen. Benutze aber die ethernet2.h dafür.
von der Bauhöhe her kann ich nicht Senrecht bauen. Ich habe nur 158x90x68 zur verfügung und da ist nioch ein anderes Board drunter was diese art einbau verhindert.
Ich habe erstmal alles nur mit Kabel gesteckt zum testen, wenn es klappt dann kann ich die Pinheader austauschen gegen Stifte und so auf die untere Platine stecken.

das war muster mit Leonardo.

wenns fertig ist passt alles genau rein. OK der usb anschluss ist anders als wie beim leonardo, aber ist ja ein Prototype. da kann noch gefeilt werden.

und das nun mit Uno

Mal meinen kurzen Senf dazu.
Ich weiss nicht, was keyes da macht. Die geben Code nur auf ein google-Drive.

Ich habe bisher bei einem via DHCP bezogenem init grundsätzlich ein

Ethernet.maintain();

im loop() gebraucht, weshalb ich mich darauf beschränke feste IP-Adressen zu vergeben.

Und siehe da, es lösen sich viele Probleme.

Das war im Übrigen mein Gedankengang in #2 - vielleicht macht da irgendwas was selbst und das funktioniert nicht.

Der W5500 geht mit der ganz normalen ethernet-lib und das sehr gut.

Ach schau.
Je länger ich drüber nachdenke....

.... Keine Experimente, wenn bereits vorhandenes nicht fehlerfrei probiert wurde.

Na denn.

@my_xy_projekt

ich muss leider mit einer festen IP arbeiten, da ja der Modbus noch auf dem Teil am werkeln ist. Und die SPS Fragt halt genau auf dieser IP den Arduino ab.

Aber das Problem ist noch nicht vom Tisch. Habe den Ping jetzt die ganze Zeit laufen lassen. Leider hatte es nur 3h gehalten dann war die Verbindung auch wieder unterbrochen.

Frage: gibt es eine Möglichkeit das die Verbindung am Ende beendet wird und beim nächsten Durchlauf wieder von neuem Gestartet wird?
Macht das auch Sinn oder eher unfug?
gruß

Und warum benutzt Du dann DHCP?

Das macht sie ja.

Die Problematik ist ja nicht geklärt.
Ist es ein (wiederholt) nicht geschlossener Socket?
Ist es ein Hardwaredefekt?
Ist es eine fehlerhafte Netzwerkverbindung?

Erstmal musst Du feststellen, ob nur die Anfragen an den Arduino ins Leere laufen.
Dazu musst Du feststellen, ob es möglich ist vom Arduino aus Anfragen fehlerfrei auszuführen.

Das Ganze ist sehr aufwändig und nicht mit drei Punkten abzuhandeln.

nein das mit dem dhcp war ja zum testen der neuen hardware mit dem code von keyestudio. Aber das brachte ja nichts.

Deswegen habe ich dann mein original sketch genommen und aufgespielt. dieser läuft stabil und ohne probleme auf einem leonardo, der aber ausgetauscht werden muss gegen ein von den unos. Aber die Funktionieren nicht so wie sollen.

Der uno unterscheidest sich ein wenig vom leonardo aber das ist vom programm her nicht relevant nur eben was die serialle schnittstelle angeht.
es hat sich auch nichts bei der verkabelung oder so geändert. ist 1zu1 geblieben.

Wie gesagt es tritt bei beiden uno´s auf. wäre es nur einer ok dann könnte man auf hardware schliessen, aber beide das gleiche verhalten, hmm.

hier einaml ein auszug vom code der auf dem Leonardo "ohne Probleme" und auf den beiden Uno´s "mit Problemen" läuft

#include <Wire.h>
#include <SPI.h>
#include <Ethernet2.h>
#include <avr/wdt.h>  // Watchdog timer

byte mac[] = {0x90, 0xA2, 0xDA, 0x0E, 0x94, 0xB5 };
IPAddress OwnIP (192, 168, 178, 13); // IP form Device
IPAddress rIP (192, 168, 178, 10);   // IP form Server

void setup() {
  Wire.begin();                 // enable I2C port.
  Ethernet.begin(mac, OwnIP);   // start ethernet interface
  Serial.begin(115200);  
}  // 

und beim Ping
Ping-Statistik für 192.168.178.13:
Pakete: Gesendet = 229, Empfangen = 219, Verloren = 10
(4% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
das war jetzt nicht lange.
Ich hatte auch schon gestestet die serialle schnittstelle aussenvor zu lassen da dort noch ein Nextion Display sonst am werkeln ist. Aber egal ob mit ohne Serial. Das problem tritt immer auf nur zu unterschiedlichen zeiten. mal funktioniert es stunden lang dann wieder nur sec oder minuten. Der Support von den Jungs hat sich ja auch noch nicht gemeldet.
Werde die Teile wo wieder zurückschicken.
Also lasse ich erstmal den Leonardo dort weiter arbeiten da weiß ich das es mit dem Netzwerk klappt.

Ich habe mal etwas ausprobiert.
Habe den Ping laufen lassen und dann den Seriallen Monitor gestartet.
Ergbiss:

`Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Zeitüberschreitung der Anforderung. // Seriellen Monitor gestartet
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128
Zeitüberschreitung der Anforderung. // Seriellen Monitor gestartet
Antwort von 192.168.178.13: Bytes=32 Zeit<1ms TTL=128

Ping-Statistik für 192.168.178.13:
    Pakete: Gesendet = 97, Empfangen = 94, Verloren = 3
    (3% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 995ms, Mittelwert = 10ms`

Also scheint das Problem von der Seriellen Schnittstelle zu kommen. Normal haben die doch nichts miteinander zu tun oder irre ich mich da?

Hallo,

ich habe zwar davon keine Ahnung, aber eine Vermutung, also seht es mir bitte nach.

Die ATmegas sind für Ethernet ja eigentlich fast schon zu lahm Aber der Leonardo hat einen µC drauf der USB intern in Hardware hat. Der Uno mit ATmega328P muss das erst serial rausgeben und der onBoard Serial-USB IC stellt die Daten an USB zur Verfügung. Was ich sagen will, der Leonardo mit seinem ATmega32U4 kann bestimmt intern besser die Interrupts abarbeiten und die Daten damit schneller per USB rausgeben o.ä. und bremst deswegen vielleicht das Ethernet nicht aus. Irgendwie so ist meine vage Vermutung.

Was du probieren kannst ist, die Ethernet Verbindung auf 10MBit runtersetzen, falls das geht und die serielle Baudrate für den Uno entweder runter auf lahme 9600 oder hoch 250000 oder gar 500000. Einfach mal probieren. Mit 9600 hat er zwischen den Zeichen senden mehr Zeit für die Ethernet. Mit 250000 sind alle Zeichen schneller raus und er hat danach mehr Zeit für Ethernet.
Wenn zwei Schnittstellen zeitlich konkurrieren muss man der wichtigeren irgendwie den Vorzug geben.

Wenn du die serielle startest, startet dein Uno. dann kann schon mal ein Ping Packet verloren gehen zwischen setup() und Ethernet.begin() sind ja ein paar Zeilen Code.

Aber auf 115200 kannst trotzdem gehen.