Forum: Mikrocontroller und Digitale Elektronik W5500 Ethernet nicht funktionabel


von Martin H (Gast)


Lesenswert?

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

von Frickelfritze (Gast)


Lesenswert?

Martin H schrieb:
> an MOSI und SCK einen Spannungsteiler angeschlossen da der
> W5500 mit 3,3V arbeitet.

Wie sieht der Spannungsteiler denn aus?

Wenn du die maximale Datenrate des SPI ausnutzt (beim W5100 10 MBit)
wirst du an dieser Stelle vielleicht in Schwierigkeiten geraten.

Vielleicht mal die Signalform nachmessen und beurteilen ob
das reicht .....

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.