Wie ihr im Titel lest geht es um den W5500 Ethernetcontroller von 
Wiznet. Dieser wird von mir mit einem Arduino Leonardo Board betrieben.
Bisher habe ich den W5100 (standard vom Arduino Ethernetshield) 
Problemlos verwendet für mein Projekt. Nun wollte ich meine eigene 
Platine entwickeln und das mit dem W5500 da dieser weniger Pins hat und 
günstiger ist. Dieser wird auch mit der von Wiznet modifizierten Library 
wohl Problemlos unterstützt, auf der von mir entwickelten Platine jedoch 
nicht.
Mein Programm spuckt mir normalerweise am Anfang die Daten aus die vom 
DHCP zugewiesen wurde und wartet danach auf das Signal "hello" per Funk 
(VirtualWire) um über Ethernet eine Meldung an einen Push Server zu 
schicken. Dieser Aufbau funktioniert absolut Problemlos, wenn ich ein 
W5100 Breakout Board verwende.
Hier das Feedback was ich über den Serial Monitor erhalte beim W5500.
--------------------
Initialisiere...
Attempting to obtain a DHCP lease...
My IP address: 255.255.255.255
Gateway IP address is 255.255.255.255
DNS IP address is 0.0.0.0
 MSG lautet:   hello
Nachricht erfolgreich angekommen
Sending push notification...Error. Server returned: -16891
--------------------
Wichtige Anmerkung
Das Arduino Leonardo Board arbeitet mit 5V daher hab ich vom Arduino 
ausgehen an MOSI und SCK einen Spannungsteiler angeschlossen da der 
W5500 mit 3,3V arbeitet. In den nächsten Tagen sollte bei mir ein 
Arduino Pro Micro Board ankommen (Atmega32u4 wie beim Leonardo) welches 
mit 3,3V betrieben wird. Außerdem erhalte ich noch ein WIZ550io Modul 
welches den W5500 enthält um einen Fehler in der Programmierung 
ausschließen zu können.
Ich weiß vielen Bluten die Augen, wenn Sie Arduino anstatt C sehen, ich 
hoffe aber ihr könnt mir trotzdem helfen.
1  | #include <VirtualWire.h>
  | 
2  | #include <SPI.h>
  | 
3  | #include <Ethernet.h>
  | 
4  | #include <HTTPClient.h>
  | 
5  | #include <Ethernet.h>
  | 
6  | #include <Avviso.h>
  | 
7  | #define DEBUG 1
  | 
8  | 
  | 
9  | byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
 | 
10  | int counterValue;
  | 
11  | char msg[9] = "";  //Speicher für die eingehende Nachricht
  | 
12  | 
  | 
13  | void setup() 
  | 
14  | {
 | 
15  |   pinMode(8, OUTPUT);
  | 
16  |   digitalWrite(8, LOW);
  | 
17  |   Serial.begin(9600);
  | 
18  |   while (!Serial);
  | 
19  |   Serial.println("Initialisiere...");
 | 
20  |   vw_set_rx_pin(7);
  | 
21  |   vw_set_ptt_inverted(true);
  | 
22  |   vw_setup(4000);
  | 
23  |   vw_rx_start();
  | 
24  |   if (DEBUG) Serial.println("Attempting to obtain a DHCP lease...");
 | 
25  |   digitalWrite(8, HIGH);
  | 
26  |   delay(5000);
  | 
27  |   Ethernet.begin(mac);
  | 
28  |   if (DEBUG) {
 | 
29  |     Serial.print("My IP address: ");
 | 
30  |     Ethernet.localIP().printTo(Serial);
  | 
31  |     Serial.println();
  | 
32  | 
  | 
33  |     Serial.print("Gateway IP address is ");
 | 
34  |     Ethernet.gatewayIP().printTo(Serial);
  | 
35  |     Serial.println();
  | 
36  | 
  | 
37  |     Serial.print("DNS IP address is ");
 | 
38  |     Ethernet.dnsServerIP().printTo(Serial);
  | 
39  |     Serial.println();
  | 
40  |   }
  | 
41  | 
  | 
42  |   Avviso.begin(NOTIFY_MY_ANDROID);
  | 
43  |   Avviso.setApiKey("4f8560d3eab3b2e3732b362bf4b31e4e50109dc4005531b0");
 | 
44  |   Avviso.setApplicationName("mydbell System");
 | 
45  | }
  | 
46  | 
  | 
47  | 
  | 
48  | void loop()
  | 
49  | {
 | 
50  |     uint8_t buf[VW_MAX_MESSAGE_LEN];
  | 
51  |     uint8_t buflen = VW_MAX_MESSAGE_LEN;
  | 
52  |     if (vw_get_message(buf, &buflen)) // Non-blocking
  | 
53  |     {         
 | 
54  |         digitalWrite(13, HIGH); // Empfange Nachricht [LED AN]  
  | 
55  |         
  | 
56  |         for (int i = 0; i < buflen; i++)
  | 
57  |            {
 | 
58  |             msg[i] = buf[i];
  | 
59  |            }
  | 
60  |         Serial.print(" MSG lautet:   ");
 | 
61  |         Serial.println(msg);
  | 
62  |     }
  | 
63  |      else if (strcmp(msg, "hello") == 0)
  | 
64  |         {
 | 
65  |           Serial.println("Nachricht erfolgreich angekommen");
 | 
66  |           msg[1] = '0';
  | 
67  |           delay(8000);
  | 
68  |           if (DEBUG) Serial.print("Sending push notification...");
 | 
69  |           int returnCode = Avviso.push("Es hat geklinget an der", "Vordertuer", 0);
 | 
70  |           if (returnCode == 200) {
 | 
71  |           if (DEBUG) Serial.println("OK.");      
 | 
72  |           } else 
  | 
73  |      {
 | 
74  |       if (DEBUG) Serial.print("Error. Server returned: ");      
 | 
75  |       if (DEBUG) Serial.print(returnCode);      
  | 
76  |      }
  | 
77  |    }
  | 
78  | }
  | 
Vielen Dank im Voraus