Arduino Uno + W5500 Board + Ethernet 2 Libary, kein einziges Beispiel läuft

Hallo Leute ich verzweifel langsam...
Ich versuche seit einer Woche meinen Arduino Uno mit diesem Ethernet board zum laufen zu bringen... Ich habe alle Beispiele der Ethernet2 Libary durchprobiert und nicht ein einziges Funktioniert. ich komme immer bis zu dem Punkt, an dem der client available ist z.b. das Chat Serverbeispiel, ich sehe im Serial Monitor die Ausgabe Chat server address:192.168.2.107 und sobald ich mit moba xterm eine telnet session öffne die ausgabe "We have a new client" Dann 3 gespiegelte Fragezeichen und kurz darauf bricht moba xterm ab weil er die verbindung verloren hat... Gibt es hier niemandem der einem helfen kann?

imho sollte das mit der normalen Ethernet lib klappen.

Genaue Verkabelung schaut bei dir wie aus?
Schaltplan,
Datenblatt vom Modul

  • Echtbild so dass wir JEDES Kabel eindeutig erkennen können

braucht es, damit wir dir Helfen können.

Hallo
Ich bereite einmal alles vor und lad die informationen dann hoch. weiß noch nicht, ob ich das heute noch schaffe

Hallo
Im Anhang eine Zip, Inhalt:
-Der Beispielscatch Chatserver und der Beispielscatch mit ArduinoModbus, was am ende mein Ziel ist, den Arduino als Modbus Server zu verwenden.
-Bilder der aufgebauten Schaltung
-Bild und Fritzing Scatch des Schaltplans
-fzpz datei des W5500 Ethernetmoduls

Ein Datenblatt des Boards hab ich leider nicht gefunden... Bei AzDelivery, wo ich das her habe gibt es nur den hinweiß, dass ein Datenblatt folgt.

W5500.zip (1.56 MB)

Du meinst, dass sich jemand das Zip lädt und durchforstet? Ich eher nicht.
Setze den Sketch um den es geht direkt in den Beitrag. Gib uns LInks zu den Libs. Die Bilder kannst Du auch direkt an Deinen Beitrag hängen.

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.

Gruß Tommy

Nach welcher Bauanleitung gehst du vor?
Warum 3.3 und nicht über die 5V?
Bist du dir sicher dass du Reset weglassen darfst? wodurch resetet nun dein W5500?

edit:
wie schon erwähnt: auch für den w5500: nimm die ganz normale ethernet Library, die ist seit ein paar Jahren auch für den w5500 ok.
Nimm ein ganz einfaches Beispiel, z.B. den Webclient
Und wenn alle Stricke reißen guck hier: Ethernet module W5500 from AliExpress - how to use? - Networking, Protocols, and Devices - Arduino Forum da gibts ein paar Diagnose Sketches.

Aber zu 95% tippe ich auf ein Stromproblem (gib den Arduino externe 7-9 Volt), zu lange Kabel oder Reset-Problem.

knautschkissen:
Ich versuche seit einer Woche meinen Arduino Uno mit [W5500]
Ethernet board zum laufen zu bringen... Ich habe alle Beispiele der Ethernet2 Libary durchprobiert und nicht ein einziges Funktioniert. ich komme immer bis zu dem Punkt, an dem der client available ist z.b. das Chat Serverbeispiel, ich sehe im Serial Monitor die Ausgabe Chat server address:192.168.2.107 und sobald ich mit moba xterm eine telnet session öffne die ausgabe "We have a new client" Dann 3 gespiegelte Fragezeichen und kurz darauf bricht moba xterm ab weil er die verbindung verloren hat... Gibt es hier niemandem der einem helfen kann?

Im Opening schon zu fragen, ob niemand helfen kann ist sportlich.
Das mit den 3,3V kann man machen, aber ich würde definitiv auch auf 5V umstellen.

Wenn Ich Deinem Post folge und mir den Code ansehe, dann würde das bedeuten, das die Ausgabe:

client.println("Hello, client!");

nicht erfolgt.
Da die nächste Ausgabe vom SerMon

Serial.write(thisChar);

ist, würde das bedeuten, das der TelnetClient irgendwas sendet, was der ChatServer nicht versteht.

Hast Du mal versucht mit PuTTy (PuTTY – Wikipedia) zu arbeiten?

Nur, weil ich selbst schon eigenartiges erlebt habe:
gibt es hierfür einen Grund?

IPAddress subnet(255, 255, 0, 0);

Hier ein paar der Bilder im Zip:

Und die Sketche:

/*
 Chat  Server

 A simple server that distributes any incoming messages to all
 connected clients.  To use telnet to  your device's IP address and type.
 You can see the client's input in the serial monitor as well.
 Using an Arduino Wiznet Ethernet shield.

 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)

 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe

 */

#include <SPI.h>
#include <Ethernet2.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network.
// gateway and subnet are optional:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 2, 107);
IPAddress gateway(192, 168, 2, 1);
IPAddress subnet(255, 255, 0, 0);


// telnet defaults to port 23
EthernetServer server(23);
boolean alreadyConnected = false; // whether or not the client was connected previously

void setup() {
  // initialize the ethernet device
  Ethernet.begin(mac, ip, gateway, subnet);
  // start listening for clients
  server.begin();
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Chat server address:");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // wait for a new client:
  EthernetClient client = server.available();

  // when the client sends the first byte, say hello:
  if (client) {
    if (!alreadyConnected) {
      // clead out the input buffer:
      client.flush();
      Serial.println("We have a new client");
      client.println("Hello, client!");
      alreadyConnected = true;
    }

    if (client.available() > 0) {
      // read the bytes incoming from the client:
      char thisChar = client.read();
      // echo the bytes back to the client:
      server.write(thisChar);
      // echo the bytes to the server as well:
      Serial.write(thisChar);
    }
  }
}
/*
  WiFi Modbus TCP Server LED

  This sketch creates a Modbus TCP Server with a simulated coil.
  The value of the simulated coil is set on the LED

  Circuit:
   - MKR1000 or MKR WiFi 1010 board

  created 16 July 2018
  by Sandeep Mistry
*/

#include <SPI.h>


#include <ArduinoRS485.h> // ArduinoModbus depends on the ArduinoRS485 library
#include <ArduinoModbus.h>
#include <Ethernet2.h>
bool _1s;
unsigned long TimeAct, TimePrev, HoldingResult, InputResult, HeartBeat, i, StartingAddr;
long Cmd;

EthernetServer EthServer(502);
ModbusTCPServer modbusTCPServer;

void setup() {
  // Ethernet Settings
  byte mac[] = { 0x4E, 0xA0, 0xBE, 0x3F, 0xFE, 0x0F };  // Define MAc address
  byte ip[] = { 192, 168, 2, 107 };                      // Define IP address
  byte subnet[] = { 255, 255, 255, 0 };                 // Define SubNEt mask

  // initialize the ethernet device
  Ethernet.begin(mac, ip, subnet);                      // Assign MAC, IP, and subnet mask
  Serial.begin(9600);
  EthServer.begin();          // start listening for clients
  modbusTCPServer.begin();    // start listening for clients

  // Define Holding register:
  HoldingResult = modbusTCPServer.configureHoldingRegisters(0, 100);
  InputResult = modbusTCPServer.configureInputRegisters(0, 100);

  Serial.print("Holding Reg init result =");
  Serial.print(HoldingResult);
  Serial.print("\n");

  Serial.print("Input Reg init result =");
  Serial.print(InputResult);
  Serial.print("\n");

  Serial.print("Modbus server address=");
  Serial.println(Ethernet.localIP());
  Serial.print("\n");
}

void loop() {
  // Modbus server accept incoming connections
  EthernetClient client = EthServer.available();
   
  if (client.connected()) {
    modbusTCPServer.accept(client);
    // poll for Modbus TCP requests, while client connected
    modbusTCPServer.poll();
     Serial.print("poll");
  }

  //---------------------------------------------------------------------------------
  // TIME  clock 1s
  TimeAct = millis();     // Millis value between  0 and  655535

  _1s = false;
  if (  ( (TimeAct > TimePrev) and (TimeAct - TimePrev) > 1000) or ((TimeAct < TimePrev) and (65535 - TimePrev + TimeAct) > 1000 )  ) {
    _1s = true;
    TimePrev = TimeAct;
  }
  //---------------------------------------------------------------------------------
  // HeartBeat
  if (_1s) {
    HeartBeat++;
    if (HeartBeat > 255) {
      HeartBeat = 0;
    }
    Serial.print("HeartBeat=");
    Serial.println(HeartBeat);
    Serial.print("\n");
  }
  //---------------------------------------------------------------------------------
  // Modbus server  :

  // holding register 40001: heartbeat (FC3)
  modbusTCPServer.holdingRegisterWrite(0x00, HeartBeat);

  // holding register 40500: Command Word (FC6)
  Cmd = modbusTCPServer.holdingRegisterRead(90);


  if (_1s) {
    Serial.print("cmd");  // printout the Received holding register 90
    Serial.print(Cmd);
    Serial.print("\n");
  }
}

Die Bilder von Deinem veralteten Http-Server bringen auf vernünftig eingestellten Browsern nix, weil sie da in einer Https-Umgebung (das Forum) nicht angezeigt werden.
Wann schaffst Du es endlich mal auf den aktuellen Standard HTTPS zu wechseln? Die Zertifikate gibt es mittlerweile kostenlos.

Gruß Tommy

Hallo
Danke schonmal für eure anregungen:

  • warum 3.3 V öhm ka hatte einen youtuber gesehen der das so verdrahtet hat. Hatte aber auch schon mit 5V versucht ohne erfolg. Ich probiere es morgen mal mit externer Spannungsquelle.
    -Warum hab ich die anderen weg gelassen? SPI Schnittstelle braucht doch nur die 4 Kabel + Power oder?daher dachte ich das müsste so funktionieren, auf youtube wurde das mehrfach auch so verdrahtet
    -Mit der Ethernet Libary komme ich noch nicht einmal bis zu dem punkt mich als client zu conneckten. Deshalb bin ich bei der ethernet2 geblieben.
    -jetzt beim schnellen suchen wüsste ich nichtmal auf welchem pin standardmäßig am arduino der rst belegt ist. oder ist mit rst der knopf gemeint? Mit den anderen beiden Pins (INT und NC) weiß ich leider auch noch nichts anzufangen.
    -Den Webserver als beospiel hatte ich auch versucht, ergebniss: über seriell bekomme ich zwar die meldung dass sich ein client connected hat aber im browser bekomme ich ein"error_empty_response"

Wie gesagt morgen nachmittag probiere ich es erstmal mit mehr power. Vll finde ich in der mittagspause was über RST, INT und NV heraus.
Gute Nacht euch allen.

PS: wegen der Subnetzmaske: öhm ka nicht angefasst, war in dem beispiel so. ist mir nicht aufgefallen, da ping usw ja zu funktionieren scheint.

Tommy56:
Die Bilder von Deinem veralteten Http-Server bringen auf vernünftig eingestellten Browsern nix, weil sie da in einer Https-Umgebung (das Forum) nicht angezeigt werden.

Mein Firefox hat mit der Darstellung kein Problem. Bist Du sicher, dass Du Deinen Browser wirklich vernünftig konfiguriert hast?

Wann schaffst Du es endlich mal auf den aktuellen Standard HTTPS zu wechseln? Die Zertifikate gibt es mittlerweile kostenlos.

Wenn Du Dich mit meinem Provider über derlei Dinge unterhalten möchtest: https://www.loswebos.de/

Gruß

Gregor

Vll finde ich in der mittagspause was über RST, INT und NV heraus.

RST! (!!!)
INT habe ich nicht vorgschlagen, und NV wird wohl generell frei bleiben

Moin gregorss,

gregorss:
Mein Firefox hat mit der Darstellung kein Problem. Bist Du sicher, dass Du Deinen Browser wirklich vernünftig konfiguriert hast?

Auch Dein Firefox sollte Dir zumindest anzeigen, das Du auf der unsicheren Seite stehst.
forum_ff.jpg

Gehärtete Systeme werden die Seite und damit die Posts nicht mehr anzeigen.

https://developer.mozilla.org/de/docs/Sicherheit/MixedContent

Wenn Du Dich mit meinem Provider über derlei Dinge unterhalten möchtest: https://www.loswebos.de/

Also ich lese dort, das in allen Paketen let's encrypt enthalten ist.

Was ich nur nicht verstehe, warum die Bilder nicht einfach im Post gelandet sind.
Dann bräuchte es dieser Diskussion nicht :wink:

forum_ff.jpg

noiasca:
RST! (!!!)
INT habe ich nicht vorgschlagen, und NV wird wohl generell frei bleiben

Moin,
RST braucht es nicht.
Ist in Ethernet2 auch nicht vorgesehen.

Es gibt Shields mit W5500 und SD-Slot.
RST ist da wie auch bei den W5100 mit ner Taste belegt.

Mit der Ethernet3 https://github.com/sstaub/Ethernet3 ist jetzt auch eine lib verfügbar, die Hardwarereset unterstützt, wenn unbedingt nötig.

my_xy_projekt:
Moin gregorss,

Auch Dein Firefox sollte Dir zumindest anzeigen, das Du auf der unsicheren Seite stehst.
forum_ff.jpg

Gehärtete Systeme werden die Seite und damit die Posts nicht mehr anzeigen.
...

Klar, zeigt mein FF an, dass Teile der Seite „unsichere Elemente“ enthalten. Aber er zeigt die Seite vollständig und fehlerfrei an. Demnach ist mein FF wohl „ausreichend vernünftig“ konfiguriert.

Von meiner Seite aus ist diese Diskussion damit beendet. Wer meint, unbedingt ein superhartes Guantanamo-Einzelhaftsystem mit entsprechend konfiguriertem Browser benutzen zu müssen, muss halt damit rechnen, dass er bestimmte Sachen nicht zu sehen bekommt. Wenn hier keine Dinge von „unsicheren“ Seiten rein gehören, sollen sich die Programmierer der Forensoftware um entsprechende Maßnahmen kümmern.

Gruß

Gregor

my_xy_projekt:
RST ist da wie auch bei den W5100 mit ner Taste belegt.

es geht mir u.a. darum, dass wenn am UNO der Reset durchgeführt wird, der Reset auch auf das W5500 Modul gelangt. Und dazu sioll man RST RST verbinden.

Ich bin immer noch dafür er soll die Standard Ethernet und ein einfaches Beispiel daraus nehmen.

Hallo
Also. mit einem Externen Netzteil komme ich schonmal einen großen schritt weiter^^
In verbindung mit der Ethernet2 libary funktionieren die Beispiele Webserver und Chatserver. Wenn ich das Webserver Beispiel mit der Ethernet libary (version 2.0 ist installiert) Einspiele scheitert es an

if (Ethernet.linkStatus() == LinkOFF) {
    Serial.println("Ethernet cable is not connected.");

Ich bekomme die Ausgabe

Ethernet WebServer Example
Ethernet cable is not connected.
server is at 192.168.2.107

Am Setup habe ich nichts verändert, ich kann die IP anpingen aber nicht auf die Seite zugreifen.
Gehe ich zurück auf die Ethernet2 libary funktioniert der webserver.
RST habe ich beide verbunden und der W5500 hängt auch an den 5V. Bevor gefragt wird, ich speise die 5V mittels eines Labornetzteiels auf ein Steckbrett und versorge von dem Steckbrett beide Platienen. Zur Glättung hängt auch noch ein Kondensator auf dem Board zwischen 5V und GND.
Mein Endziel mit dem Modbusserver funktioniert in verbindung mit der Ethernet2 Libary immer nur ein mal, bei 2. anfragen startet das programm einfach neu, ich muss mich neu verbinden und kann wieder einmal abfragen. Auf Arbeit bin ich heute auf ein ähnliches Problem gestoßen, wenn meine anfragezyclen zeitlich zu weit auseinander lagen. Da konnte ich es lösen indem ich in der SPS die TCP Timeout zeit erhöht habe. Muss nachher mal die libary durchforsten ob es da eine ähnliche einstellung gibt.

Mich verwundert dass die Ethernet bei dir nicht läuft.
Irgendwas passt bei dir immer noch nicht.

ja das wundert mich auch. hab ja auch gelesen dass die normale ethernetlibary das können soll. irgendwas scheint ja auch zu funktionieren, da wenn ich eine andere IP adresse vorgebe, ich ihn auch unter dieser ip anpingen kann.
PS, gerade aus neugierde ausprobiert
:astonished: :smiley: wenn ich das Beispiel zur ETHERNET2 Libary starte allerdings bei

#include <Ethernet2.h>

die 2 lösche :wink: dann funktioniert es... zumindest der Webserver
beim modbusserver leider nicht...

Ich stelle gerade ein merkwürdiges verhalten fest

/*
  WiFi Modbus TCP Server LED

  This sketch creates a Modbus TCP Server with a simulated coil.
  The value of the simulated coil is set on the LED

  Circuit:
   - MKR1000 or MKR WiFi 1010 board

  created 16 July 2018
  by Sandeep Mistry
*/

#include <SPI.h>
#include <Ethernet2.h> // for MKR WiFi 1010
// #include <WiFi101.h> // for MKR1000

#include <ArduinoRS485.h> // ArduinoModbus depends on the ArduinoRS485 library
#include <ArduinoModbus.h>

#include "arduino_secrets.h"
///////please enter your sensitive data in the Secret tab/arduino_secrets.h

const int ledPin = 8;


EthernetServer EthServer(502);

ModbusTCPServer modbusTCPServer;

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  Serial.println("Modbus TCP Server LED");
  // Ethernet Settings
  byte mac[] = { 0x4E, 0xA0, 0xBE, 0x3F, 0xFE, 0x0F };  // Define MAc address
  byte ip[] = { 192, 168, 2, 107 };                      // Define IP address
  byte subnet[] = { 255, 255, 255, 0 };                 // Define SubNEt mask

  // initialize the ethernet device
  Ethernet.begin(mac, ip, subnet);                      // Assign MAC, IP, and subnet mask
 
  // start the Modbus TCP server
   EthServer.begin();          // start listening for clients
  if (!modbusTCPServer.begin()) {
    Serial.println("Failed to start Modbus TCP Server!");
    while (1);
  }

  // configure the LED
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  // configure a single coil at address 0x00
  modbusTCPServer.configureCoils(0x00, 1);
}

void loop() {
  // listen for incoming clients
   EthernetClient client = EthServer.available();
  
  if (client) {
    // a new client connected
    Serial.println("new client");

    // let the Modbus TCP accept the connection 
    modbusTCPServer.accept(client);
    Serial.println("accept");
    while (client.connected()) {
      // poll for Modbus TCP requests, while client connected
      modbusTCPServer.poll();
       Serial.println("poll");
      // update the LED
      updateLED();
    }

    Serial.println("client disconnected");
  }
}

void updateLED() {
  // read the current value of the coil
  int coilValue = modbusTCPServer.coilRead(0x00);

  if (coilValue) {
    // coil value set, turn LED on
    digitalWrite(ledPin, HIGH);
  } else {
    // coild value clear, turn LED off
    digitalWrite(ledPin, LOW);
  }
}

Das ist das in der ArduinoModbus Libary mitgelieferte beispiel angepasst auf die Ethernet 2 libary weil das originale warum auch immer auf einer wifi libary aufbaut.
sobald ich eine anfrage sende sollte er "new client" auf dem serial monitor ausgeben. er kommt nur bis "new" mehr nicht. ich bekomme über modbus einmal den wert 0 zurück, was zufällig auch richtig ist danach ist funkstille... hab das gefühl dass da ein paar in den libariy genutzen timer und interrupts sich gegenseitig das leben schwer machen...