Forum: Mikrocontroller und Digitale Elektronik Arduino Nano und ENC28J60 Ethernet Shield


von Julia C. (juliac)


Lesenswert?

Ich möchte mich gerade in die Programmierung mit dem Arduino Nano 
einlernen und ein Netzwerk aufbauen.

Im ersten Schritt habe ich mir einen Arduino Nano und folgendes Ethernet 
Board gekauft (ENC28J60 Ethernet Shield).

Einfache Testprogramme konnte ich schon auf den Arduino Nano aufspielen. 
Nun habe ich ihn auf das Ethernet-Shield aufsteckt, über USB und RJ45 an 
den PC angesteckt.

Zuerst habe ich den Webclient aus den Beispielen installiert (Arduino 
1.8.3). Er soll dem Board eigentlich die IP Adresse: 192.168.0.177 
geben. Über die Serielle erhalte ich aber nur folgende Ausgabe:
"server is at 0.0.0.0" sonst passiert gar nichts.

Dann habe ich mir noch folgende Bibliothek heruntergeladen:
https://github.com/ntruchsess/arduino_uip und den TcpClient aufgespielt.
Damit erhalte ich folgende Ausgabe:
"localIP: 0.0.0.0
 subnetMask: 0.0.0.0
 gatewayIP: 0.0.0.0
 dnsServerIP: 0.0.0.0
 Client connect
 Client connect failed"

Wir haben hier feste IP-Adressen. Ich habe dem Programm jeweils eine 
freie IP-Adresse mitgeteilt.
Woran kann das liegen?
Ich habe es mit einem normalen Netzwerkkabel angeschlossen. Das ist do 
gekreuzt. Ist das in Ordnung?

von Philipp K. (philipp_k59)


Lesenswert?

Zu 90% die Verdrahtung, Fa gibts doch bestimmt nen anderen Sketch mit 
dem die Kommunikation getestet wird.

Ansonsten lieber zum w5100 greifen, der brauch nicht so eine Riesen 
proggerei vorweg.

: Bearbeitet durch User
von Dauergast (Gast)


Angehängte Dateien:

Lesenswert?

Julia C. schrieb:
> Nun habe ich ihn auf das Ethernet-Shield aufsteckt, über USB und RJ45 an
> den PC angesteckt.

Ich vermute, es handelt sich um das Teil im Bild?

Stromversorgung ?
Versorgung über USB reicht für den Nano allein, aber nicht für 
Nano+EthShield.

von Einer K. (Gast)


Lesenswert?

Julia C. schrieb:
> Wir haben hier feste IP-Adressen. Ich habe dem Programm jeweils eine
> freie IP-Adresse mitgeteilt.

Das hätte ich doch gerne mal gesehen.

von Toto mit Harry (Gast)


Lesenswert?

Dauergast schrieb:
> Ich vermute, es handelt sich um das Teil im Bild?

Ups das hatte ich überlesen..

Muss funktionieren. Am besten ein Howto durchlesen.

von Julia C. (juliac)


Lesenswert?

Ich hab alles so gemacht, wie hier  https://youtu.be/M4mVDnlnzSA

Da läuft das Teil auch ohne zusätzliche Stromversorgung für das ENC28J60 
Ethernet Shield.

von 458iu7888766687 (Gast)


Lesenswert?

Arduino F. schrieb:
> Julia C. schrieb:
>> Wir haben hier feste IP-Adressen. Ich habe dem Programm jeweils eine
>> freie IP-Adresse mitgeteilt.
>
> Das hätte ich doch gerne mal gesehen.

poste deinen code ...

von Christian M. (Gast)


Lesenswert?

Das mit der Versorgung unbedingt beachten! Kondensator zusätzlich!

Zusätzlich auch noch das CS in der Software richtig einstellen (je nach 
Lib anders). Bei Deinem Modul kannst Du ja die HW nicht ändern.

Ich habe die UIP-Ethernet library benutzt, hat aber Bugs. Jetzt verwende 
ich auch den W5100, das läuft!

Gruss Chregu

von Frickelfritze (Gast)


Lesenswert?

Julia C. schrieb:
> Da läuft das Teil auch ohne zusätzliche Stromversorgung für das ENC28J60
> Ethernet Shield.

Alles was im Internet geschrieben steht ist wahr.

Auch alles was in Videos im Internet zu sehen ist.

von Frickelfritze (Gast)


Lesenswert?

Frickelfritze schrieb:
> Alles was im Internet geschrieben steht ist wahr.

Und auf mikrocontroller.net treiben sich lauter Typen herum
die dauernd behaupten dass dies und jenes anders sein könnte ....

Und ich .... ich mach mir die Welt wie sie mir gefällt.

von Julia C. (juliac)


Lesenswert?

Danke für den Tipp mit dem W5100.

Als Funkchip habe ich mir den NRF24L01+ ausgesucht, habe ihr hier auch 
eine bessere Alternative?

von Christian M. (Gast)


Lesenswert?

Julia C. schrieb:
> Als Funkchip habe ich mir den NRF24L01+ ausgesucht, habe ihr hier auch
> eine bessere Alternative?

Nein, ist nach meinen Recherchen momentan der Beste. Kommt auch drauf 
an, was Du damit machen willst...

Gruss Chregu

von Julia C. (juliac)


Lesenswert?

Ich hab nun "mein" erstes Programm zum Laufen bekommen und schon bin ich 
mit meinem Latein wieder am Ende.

In der Arduino Bibliothek befindet sich der Code für den W5100, somit 
geht diese nicht und ich musste mit
#include <UIPEthernet.h>
erstmal die richtige Bib einfügen. Nun klappt es auch, aber ich möchte, 
dass sich der Potiwert auf der Webseite automatisch aktualisiert (nur so 
zum Testen). Den Code habe ich wie folgt angepasst, aber die Ausgabe 
wiederholt sich ständig und die Webseite wächst nach unten weiter. Wie 
kann ich diese vor dem erneuten schreiben löschen?
1
#include <UIPEthernet.h> // Used for Ethernet
2
3
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };                                      
4
IPAddress ip(192, 168, 0, 179);                        
5
EthernetServer server(80);
6
7
void setup() {
8
  Serial.begin(9600);
9
10
  // start the Ethernet connection and the server:
11
  Ethernet.begin(mac, ip);
12
  server.begin();
13
14
  Serial.print("IP Address: ");
15
  Serial.println(Ethernet.localIP());
16
}
17
18
void loop() {
19
  // listen for incoming clients
20
  EthernetClient client = server.available();
21
22
  if (client)
23
  {  
24
    Serial.println("-> New Connection");
25
26
    // an http request ends with a blank line
27
    boolean currentLineIsBlank = true;
28
29
    while (client.connected())
30
    {
31
      if (client.available())
32
      {
33
        char c = client.read();
34
35
        // if you've gotten to the end of the line (received a newline
36
        // character) and the line is blank, the http request has ended,
37
        // so you can send a reply
38
        if (c == '\n' && currentLineIsBlank)
39
        {
40
          for(int i= 0; i<100; i++)
41
          {
42
            int sensorValue = analogRead(A0);
43
            delay(1);        // delay in between reads for stability          
44
                    
45
            client.println("<html><title>Hello World!</title><body><h3>Hello World!</h3> Poti-Stand ist: ");
46
            client.println(sensorValue);
47
            client.println("</body>");
48
            delay(500);
49
          }
50
          
51
          
52
          break;
53
        }
54
55
        if (c == '\n') {
56
          // you're starting a new line
57
          currentLineIsBlank = true;
58
        }
59
        else if (c != '\r')
60
        {
61
          // you've gotten a character on the current line
62
          currentLineIsBlank = false;
63
        }
64
      }
65
    }
66
67
    // give the web browser time to receive the data
68
    delay(10);
69
70
    // close the connection:
71
    client.stop();
72
    Serial.println("   Disconnected\n");
73
  }
74
}

von Einer K. (Gast)


Lesenswert?

Du solltest dich kundig machen, wie das HTTP funktioniert!
Stichworte: Request Response


Wenn du, sich dynamisch ändernde, Inhalte zeigen möchtest, ohne die 
Seite jeweils neu zu laden, dann nutze jquerry und/oder websockets

von Philipp K. (philipp_k59)


Lesenswert?

Im Prinzip ist es ganz einfach..

Man schiebt als erstes eine Html Seite zum Client welche Code enthält 
der eine zweite Seite dynamisch nachlädt und Anzeigen aktualisiert.

Man muss nur die Weiche im Server auf den GET Parameter stellen..


also zum Beispiel zwischen index.html und daten.txt unterscheiden.

daten.txt macht man zum Beispiel alle Werte mit Komma getrennt und das 
script in der Html lädt alle 5 Sekunden diese Daten, splittet die Kommas 
in einen Array und aktualisiert damit Werte im Text/Code.

Dafür gibt es bereits hunderte Beispiele.

von Julia C. (juliac)


Lesenswert?

Danke! Das mit dem GET-Parameter und dem dynamischen integrieren von 
Werten wußte ich eigentlich, hab's nur irgendwie vergessen und dachte es 
gibt die Möglichkeit, dass ich von mir aus, ohne dass der Benutzer die 
Seite erneut aufruft, den kompletten html-Text der Seite überladen kann.

Mir ist noch eine weitere Frage gekommen:
Wenn ich den Arduino über den VIN-Pin mit 12V anschließe und es mit dem 
EthernetShield mit dem ENC28J60 zusammenstecke, würden dann die 12V auch 
am ENC28J60 anstehen (der ist ja nur 5V tolerant). Muss ich in diesem 
Fall dann fliegend verdrahten und kann nicht aufstecken?
Ich hab im Internet leider kein komplettes Datenblatt von dem NANO 
Ethernet Shield gefunden (ich habe das längliche, das oben auch auf dem 
Bild zu sehen ist).

von Philipp K. (philipp_k59)


Lesenswert?

Die 12v muss man nur am RAW Pin anlegen, dann sollte der Shield auch 
funktionieren.. Nicht an Vcc, dann ist der Arduino und der Shield 
kaputt.

Der Atmega auf dem Arduino ist auch nur 5V tolerant.

12v ist aber schon sehr hoch, da sollte man einen kleinen externen 
Schaltregler verwenden.

von Philipp K. (philipp_k59)


Angehängte Dateien:

Lesenswert?

Hier mal ein Quick&Dirty Beispiel..

Der Sketch prüft auf "daten.txt", wenn vorhanden gibt er Analog 0-7 und 
Digital Pin0-7 Komma separiert aus.

Das Javascript ist so klein es geht gehalten und aktualisiert im 1000ms 
Takt.

Man kann ja auch wie das JQuery alles extern legen damit es winzig 
wird.. mit eigenem JS,Stylesheet und nachgeladenem Body.

Wenn es komplett Standalone bleiben soll, müsste man noch etwas 
nachrüsten. Womöglich einen Speicher spendieren von dem aus alles 
geladen wird oder das ganze mit reinem JS umgehen.

Geht natürlich Welten besser wenn man sich mehr als eine Stunde damit 
beschäftigt.

: Bearbeitet durch User
von Einer K. (Gast)


Lesenswert?

Julia C. schrieb:
> dachte es
> gibt die Möglichkeit, dass ich von mir aus, ohne dass der Benutzer die
> Seite erneut aufruft, den kompletten html-Text der Seite überladen kann.

Grundsätzlich muss der Impuls zum "Seite neu laden" vom Browser/Client 
kommen.

Mancher (alle?) Browser lässt sich überreden, dieses auch ohne JS zu 
tun, indem man ihm einen "http refresh header" sendet.

von Rainer M. (rainer_m818)


Angehängte Dateien:

Lesenswert?

Hallo,

bin zwar kein absoluter Neuling, aber mein Arduino Nano V3 und das 
ENC28J60 EthernetShield (siehe Bild) lässt mich fast verzweifeln. Ich 
habe mir ein Beispielprogramm hergenommen und nur die IP-Adresse 
geändert. Mein Rechner hat ebenfalls eine feste IP und hängt am gleichen 
Switch wie der Nano. Leider scheitern jegliche Ping-Versuche.

Hat jemand noch einen Tipp für mich?
1
#include <UIPEthernet.h> // Used for Ethernet
2
3
// **** ETHERNET SETTING ****
4
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };                                       
5
6
IPAddress ip(192, 168, 178, 202);                        
7
EthernetServer server(80);
8
9
void setup() {
10
  Serial.begin(9600);
11
  // start the Ethernet connection and the server:
12
  Ethernet.begin(mac, ip);
13
  // print your local IP address:
14
  Serial.print("My IP address: ");
15
  Serial.println(Ethernet.localIP());
16
  server.begin();
17
}
18
19
void loop() {
20
  // listen for incoming clients
21
  EthernetClient client = server.available();
22
  if (client) 
23
  {  
24
    Serial.println("-> New Connection");
25
    // an http request ends with a blank line
26
    boolean currentLineIsBlank = true;
27
    while (client.connected()) 
28
    {
29
      if (client.available()) 
30
      {
31
        char c = client.read();
32
        // if you've gotten to the end of the line (received a newline
33
        // character) and the line is blank, the http request has ended,
34
        // so you can send a reply
35
        if (c == '\n' && currentLineIsBlank) 
36
        {
37
          client.println("<html><title>Hello World!</title><body><h3>Hello World!</h3></body>");
38
          break;
39
        }
40
        if (c == '\n') {
41
          // you're starting a new line
42
          currentLineIsBlank = true;
43
        }
44
        else if (c != '\r') 
45
        {
46
          // you've gotten a character on the current line
47
          currentLineIsBlank = false;
48
        }
49
      } 
50
    }
51
    // give the web browser time to receive the data
52
    delay(10);
53
    // close the connection:
54
    client.stop();
55
    Serial.println("   Disconnected\n");
56
  }
57
}

von Stefan F. (Gast)


Lesenswert?

Untersuche die Netzwerk-Aktivität mit Wireshark.

von Fern Schätzer (Gast)


Lesenswert?

Rainer M. schrieb:
> Mein Rechner hat ebenfalls eine feste IP und hängt am gleichen
> Switch wie der Nano. Leider scheitern jegliche Ping-Versuche.

Untersuche im Switch ob sein IP-Adressbereich für dein Netz die
Adresse deines Nanos erlaubt.

Rainer M. schrieb:
> Leider scheitern jegliche Ping-Versuche.

Ping wohin? Das Protokoll kann durch die Firewall des Switches
oder deines Rechners (bewusst) blockiert sein.

von Rainer M. (rainer_m818)


Lesenswert?

Fern Schätzer schrieb:
> Rainer M. schrieb:
>> Mein Rechner hat ebenfalls eine feste IP und hängt am gleichen
>> Switch wie der Nano. Leider scheitern jegliche Ping-Versuche.
>
> Untersuche im Switch ob sein IP-Adressbereich für dein Netz die
> Adresse deines Nanos erlaubt.

Mein Rechner hat die IP 192.168.178.25, der Nano sollte die 
192.168.178.202 haben. Die Subnetmaske im Rechner ist 255.255.255.0. Der 
verwendete Switch ist unmanaged und die Firewall im Rechner ist aus.

ping 192.168.178.202 führt zu 'Destination host unreachable'.

Was ich komisch finde ist, dass die orangene LED am EthernetShield 
anfängt zu blinken, wenn ich pinge. Das sieht für mich so aus, als ob da 
doch was ankommt, aber keine Antwort gesendet wird.

von Fern Schätzer (Gast)


Lesenswert?

Rainer M. schrieb:
> Was ich komisch finde ist, dass die orangene LED am EthernetShield
> anfängt zu blinken, wenn ich pinge. Das sieht für mich so aus, als ob da
> doch was ankommt, aber keine Antwort gesendet wird.

Das wird wohl immer passieren wenn irgendwelche Pakete in deinem
Netz gesendet werden.

Ansonsten unterstütze ich diese Aussage:

Stefanus F. schrieb:
> Untersuche die Netzwerk-Aktivität mit Wireshark.

von Fern Schätzer (Gast)


Lesenswert?

Dann noch dieses:

Ein Nano mit W5100- oder W5500-Modul ist viel besser da das
ganze IP-Gerödle grösstenteils nicht im Nano abgehandelt
werden muss.

Das ergibt mehr nutzbaren Speicher für das User-Programm und
die gröbsten IP-Probleme sind bereits vorab gelöst. Einen
Geschwindigkeitsvorteil bringt es auch da das Ethernet-Packet-
Handling (Ein-/Auspacken, Checksum) nicht der Nano übernehmen
muss.

von Rainer M. (rainer_m818)


Lesenswert?

Fern Schätzer schrieb:
> Stefanus F. schrieb:
>> Untersuche die Netzwerk-Aktivität mit Wireshark.

Bin zwar kein Netzwerkexperte aber in Wireshark kann ich den ping sehen:

171  35.506719615  IntelCor_37:dd:a4  Broadcast  ARP  42  Who has 
192.168.178.202? Tell 192.168.178.25

Eine Antwort auf den Broadcast kann ich leider nicht finden.

von Stefan F. (Gast)


Lesenswert?

Was du da siehst ist kein Ping, sondern ein ARP Request. Der PC will 
herausfinden, wer (konkret welche MAC Adresse) die angefragte IP Adresse 
hat. Und da antwortet es schon nicht drauf?

Dann hast du wohl einen schwerwiegenden Softwarefehler im Arduino oder 
die Hardware ist defekt.

Der nächste Schritt wäre, herauszufinden, ob der Arduino diesen ARP 
Request vom Ethernet Modul empfängt und warum er ihn nicht beantwortet. 
Da wirst du jetzt wohl ziemlich tief in die Funktionsweise des IP Stacks 
einsteigen müssen.

Zu Dumm, dass Arduino keinen Debugger hat. Du wirst nun wohl ziemlich 
viele Debug Meldungen an strategisch günstigen Stellen in die Arduino 
Library einfügen müssen. Weißt du wie sie funktioniert?

Auf jeden Fall würde ich Dein Programm vor dem Debuggen auf ein Minimum 
reduzieren: Eine leere loop. Dann müsste es nämlich auch schon auf den 
ARP Request reagieren.

von Fern Schätzer (Gast)


Lesenswert?

Vielleicht hilft es etwas (ich weiss das ist eine Krücke)
im eigenen Rechner die Adresse des Nano/Ethernet-Moduls in
ARP Tabelle händisch einzutragen um ARP nicht bemühen zu
müssen ....

von Rainer M. (rainer_m818)


Lesenswert?

Hallo,

vielen Dank für Eure Hilfe und Tipps. Ich fang jetzt erstmal wieder bei 
Null an und schau mir mal die Schaltung und den Code genauer an, hatte 
gehofft dass ich das nicht brauche.

1. Ich prüfe mal die Pinbelegung

2. Könnte es sein dass es nur mit dem neuen Bootloader vom 328P 
funktioniert? Bei mir ist der alte drauf.

3. Danach muss ich wohl ziemlich tief in den Code rein

Grüße und Danke

von Stefan F. (Gast)


Lesenswert?

zu 2: Unwarscheinlich

von Einer K. (Gast)


Lesenswert?

Stefanus F. schrieb:
> zu 2: Unwarscheinlich

Dem stimme ich zu.
Nur der WDT, könnte da quer schießen.

von Achim Gottinger (Gast)


Lesenswert?

Hallo Rainer,

Habe die gleiche Kombo AZ_Delivery Nano 3 + ENC28J60  Shield zum 
aufeinanderstecken.
Bist du weiter gekommen?
Habe in UIPEthernet/utility/logging.h das Loglevel mal auf LOG_DEBUG_V2 
erhöht und bekommen folgenden Output:

ENC28J60::init DEBUG:csPin = 10
ENC28J60::init DEBUG:miso = 12
ENC28J60::init DEBUG:mosi = 11
ENC28J60::init DEBUG:sck = 13
ENC28J60::init DEBUG:Use Native hardware SPI
Enc28J60Network::phyWrite ERROR:TIMEOUT !!
Enc28J60Network::phyWrite ERROR:TIMEOUT !!
ENC28J60::init INFO: Chip erevid=0 initialization completed.
UIPEthernetClass::tick() ERROR:EREVID=0 -> Not found ENC28j60 device !! 
Function ended !!
IP Address: 192.168.100.132
UIPEthernetClass::tick() ERROR:EREVID=0 -> Not found ENC28j60 device !! 
Function ended !!
UIPEthernetClass::tick() ERROR:EREVID=0 -> Not found ENC28j60 device !! 
Function ended !!
UIPEthernetClass::tick() ERROR:EREVID=0 -> Not found ENC28j60 device !! 
Function ended !!
UIPEthernetClass::tick() ERROR:EREVID=0 -> Not found ENC28j60 device !! 
Function ended !!
UIPEthernetClass::tick() ERROR:EREVID=0 -> Not found ENC28j60 device !! 
Function ended !!
...

Ist mein erstes Arduino Experiment würde also auch erstmal die 
Pinbelegung vergleichen.

von Achim G. (achim71)


Lesenswert?

Habe eine andere Library getestet, auf die der Hersteller des Network 
Shields verweist:

https://github.com/njh/EtherCard

In beiden Fällen hängt die Initalisierung des Shields in der 
Warteschleifebei phyWrite

UIPEthernet:
utility/Enc28J60Network.cpp
1
...
2
void
3
Enc28J60Network::phyWrite(uint8_t address, uint16_t data)
4
{
5
  #if ACTLOGLEVEL>=LOG_DEBUG_V3
6
    LogObject.uart_send_strln(F("Enc28J60Network::phyWrite(uint8_t address, uint16_t data) DEBUG_V3:Function started"));
7
  #endif
8
  unsigned int timeout = 15;
9
  // set the PHY register address
10
  writeReg(MIREGADR, address);
11
  // write the PHY data
12
  writeRegPair(MIWRL, data);
13
  // wait until the PHY write completes
14
  while (readReg(MISTAT) & MISTAT_BUSY)
15
    {
16
    delay(10);
17
    #if defined(ESP8266)
18
       wdt_reset();
19
    #endif
20
    if (--timeout == 0)
21
      {
22
      #if ACTLOGLEVEL>=LOG_ERR
23
         LogObject.uart_send_strln(F("Enc28J60Network::phyWrite ERROR:TIMEOUT !!"));
24
      #endif
25
      return;
26
      }
27
    }
28
}
29
...

EtherCard:
src/enc28j60.cpp
1
...
2
static uint16_t readPhyByte (byte address) {
3
    writeRegByte(MIREGADR, address);
4
    writeRegByte(MICMD, MICMD_MIIRD);
5
    while (readRegByte(MISTAT) & MISTAT_BUSY)
6
        ;
7
    writeRegByte(MICMD, 0x00);
8
    return readRegByte(MIRD+1);
9
}
10
...

: Bearbeitet durch User
von DAVID B. (bastler-david)


Lesenswert?

Hallo
Auch ich habe mal mit dem billig teil Enc28J60 angefangen und habe 
schnell gemerkt vergiss es für einmal testen und vergessen voll ok.
Aber richtig laufen tut das alles nicht.

Der Enc28J60 war bei mir sehr instabil mal lief er eine stunde durch 
ohne sich auf zuhängen ein anderes mal nur einpaar Minuten.

Und sein grösstes problem ist der braucht richtig viel speicher auf dem 
nano so das du Kaum noch platz für dein eigentliches vorhaben hast.

noch was wenn du 12 Volt auf die 5 Volt Regler legst bekommst du massive 
Temperatur probleme es werden nur kleine 78l05 Regler verbaut die haben 
keine große Wärmeabgabe Möglichkeit.

Der oben angesprochen W5100 oder der neue W5200 ist die bestere Wahl.
Minimal schneller im seiten ausbau.
Und braucht nicht so viel speicher wie der Enc28J60 Chip.


Beispiel nur für dich grade zusammen gebastelt ist eine webseite mit nur 
2 butten und fester IP.

W5100
Der Sketch verwendet 17028 Bytes (55%) des Programmspeicherplatzes. Das 
Maximum sind 30720 Bytes.
Globale Variablen verwenden 689 Bytes (33%) des dynamischen Speichers, 
1359 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Enc28J60
Der Sketch verwendet 22144 Bytes (72%) des Programmspeicherplatzes. Das 
Maximum sind 30720 Bytes.
Globale Variablen verwenden 1451 Bytes (70%) des dynamischen Speichers, 
597 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

55% VS 72% (wie gesagt die exakt selbe Webseite.)

Und verwende wenn Möglich grade bei so kleinen Atmegas wie der 328p
Den F befehl dieser sorgt dafür das dein Ram frei bleibt und die 
Webseite aus dem Programm speicher geladen wird was viel ram frei machen 
kann.

Beispiel
client.println(F("Test"));
Aber nur bei text NICHT bei variablen.

// Nano
//Der Sketch verwendet 21618 Bytes (70%) des Programmspeicherplatzes. 
Das Maximum sind 30720 Bytes.
//Globale Variablen verwenden 2685 Bytes (131%) des dynamischen 
Speichers, -637 Bytes für lokale Variablen verbleiben. Das Maximum sind 
2048 Bytes.

// MIT F
//Der Sketch verwendet 22144 Bytes (72%) des Programmspeicherplatzes. 
Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1451 Bytes (70%) des dynamischen Speichers, 
597 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

Aber Achtung es ist NICHT möglich den SD karten Slot oder den W5100 Chip 
in einen Projekt zu benutzen.

Das einlegen einer SD karte deaktiviert zugleich den W5100 Chip.

Ich hoffe ich konnte die Verwirrung auf ein neues level ziehen :-)

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

unabhängig davon ob es heute elegantere Lösungen als den ENC28J60 gibt:
er läuft mit der UIPEnthernet-Lib am AVR-Arduino ohne Probleme.

Speicherbedarf kann ein Problem werden, hier ist es mit PubSubClient und 
BME280 dran ziemlich am Ram-Ende.

Die UIP-Lib geht von /CS des ENC an Pin D10 des Arduino aus, INT wird 
nicht genutzt. Stromversorgung über USB reicht aus, es sei denn, der 
Nano macht Mist, ich hatte da schon eigenartige China-Versionen, wo an 
5V hinter der Diode von VUSB nur noch 4,2V ankamen, obwohl es eine 
Schottkydiode sein sollte.

Gruß aus Berlin
Michael

von Achim G. (achim71)


Lesenswert?

Michael U. schrieb:
> Stromversorgung über USB reicht aus, es sei denn, der
> Nano macht Mist, ich hatte da schon eigenartige China-Versionen, wo an
> 5V hinter der Diode von VUSB nur noch 4,2V ankamen, obwohl es eine
> Schottkydiode sein sollte.

Danke, hab es nachgemesse zwischen 5V und GND liegen hier auch 4.2V an.

Möchte hier eigentlich nur ein paar Relais mit dem Nanon über Lan/Telnet 
steuern, mit 20€ für eine Nano und nochmal 15€ für ein Lan Modul könnte 
ich dann auch gleich zu einem Raspberry Pi greifen.

Versuche mich jetzt mal mit einer externen Stromversorgung für das 
Ethernet Shield.

Nachtrag:

Mit einem zusätzlichen Netzteil 5V/2A angeschloßen an 5V und GND werden 
nun 5.4V auf dem DMM angezeigt, das Lan Modul funktioniert leider so 
auch nicht und bringt die selben Fehlermeldungen.

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

ok, keine Idee von hier. Ich habe das Modul nicht, kann also nichs 
weiter dazu sagen.
Ich habe dieses Modul:
https://eckstein-shop.de/mini-ENC28J60-Ethernet-LAN-Netzwerk-Modul?curr=EUR&gclid=EAIaIQobChMI49iptb_Z3QIVzbvtCh3tygm1EAQYAyABEgKMbfD_BwE

Das hat aber keinen Spannungsregler drauf, das erledigt hier ein 
AMS1117-3,3 Modul vom China-Mann.

Gruß aus Berlin
Michael

von Achim G. (achim71)


Lesenswert?

Hab mir eine original Arduino Nano kommen lassen, bringt die selben 
Fehler wie der Nachbau. Das Ethernet Shield schick ich also zurück.

Hab meine Relais Steuerung derweil mit einem ESP8266 Modul für knapp 4€ 
ohne zusätzlichen Arduino hinbekommen, is halt WiFi.

Nachdem das Teil aus deinem Link eine recht lange Lieferzeit hat hab ich 
was Vergleichbares incl. AMS1117 geordert, danke nochmal für die Tipps.

von Rainer (Gast)


Lesenswert?

Hallo Achim,

ich habe nach mehreren Stunden Suche dann aufgegeben und das ENC28J60 
Ethernet Shield zurück geschickt.
Ich verwende normalerweise für meine Projekte einen ESP32 (z.B. Wemos 
Lolin ESP32). Da ich aber dieses Mal eine LAN-Verbindung benötige hatte 
ich die Kombi Nano + Ethernet Shield probiert, was ich leider nicht zum 
Laufen gebracht habe.
Mein nächster Versuch wird nun folgende Paarung sein: ESP32 mit LAN8720
Da ich momentan zeitlich eingeschränkt bin kann dies aber noch ein paar 
Tage dauern.

Grüße,
Rainer

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Kennst du dieses Ethernet Projekt?:
http://stefanfrings.de/net_io/index.html

Ich habe dort einen CP2201 verwendet. Im Gegensatz zum EN28J60 hat der 
CP2201 eine parallele Schnittstelle und eine offizielle MAC Adresse.

Ich habe noch ein CP2201 Modul "ioMate Net 1.0" 
(https://www.chip45.com/products/iomate-net-1.0_embedded_internet_ethernet_module_board_cp2201_mac_phy.php) 
herum liegen, das könnte ich Dir billig verkaufen.

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

ich könnte da zwar rumliegende Mega644 verwenden, aber andererseits:
ich glaube, da würde ich eher einen ESP8266 oder ESP32 neben einen 20€ 
AP in der Steckdose nehmen... ;-)
Kommt natürlich immer auf die konkrete Anwendung an.

Doch noch ein ENC-Modul rumliegen gehabt, UIP-Lib und PuSubClient auf 
einen Nano geworfen, nun schickt er mir sinnlos alle 10s seine millis() 
per MQTT.
Mal schauen, wie lange... ;-)

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> ich glaube, da würde ich eher einen ESP8266 oder ESP32 neben
> einen 20€ AP in der Steckdose nehmen...

Ich denke, dass der ESP für Basteleien zu Hause gut genug und 
praktischer ist.

Nur in Umgebungen, wo WLAN nicht benutzt werden darf (oder kann) würde 
ich auf Ethernet Module setzen.

von Michael U. (amiga)


Lesenswert?

Hallo,

Stefanus F. schrieb:
> Nur in Umgebungen, wo WLAN nicht benutzt werden darf (oder kann) würde
> ich auf Ethernet Module setzen.

da stimme ich komplett zu.
PS: der ENC schickt noch artig seine Messages.

Gruß aus Berlin
Michael

von DAVID B. (bastler-david)


Lesenswert?

Stefanus F. schrieb:
> Ich denke, dass der ESP für Basteleien zu Hause gut genug und
> praktischer ist.

Aber nur solange man an die 3,3 Volt maximaler Pegel denkt :-)

von Achim G. (achim71)


Lesenswert?

Danke für das Feedback!

Das erste ESP8266 Modul hatte ich mit 5V statt 3.3V geschrottet, 
zusätzlich hat es die Stromschiene auf dem Breadboard und das 5V AMS1117 
auf dem 3.3V/5V Netzteil Adapter erwischt.

Zusammen mit dem AVR 51 ENC28J60 Lan Modul hab ich auch gleich einen 
ModeMCU LUA Amica V2 geordert.

Mein Plan war eigentlich eine Mehrfachsteckerleiste für den 
Serverschrank zu bauen bei dem ich via Arduino oä. die Steckdoesn 
einzeln An- und Ausschalten kann. Dafür ist mir Wifi eigentlich zu 
unsicher.

Wo ich schon dabei bin werd ich jetzt wohl auch noch eine Ampere Messung 
mit einem Talema AC1030 integrieren das sich dann via SNMP überwachen 
lässt.

von Stefan F. (Gast)


Lesenswert?

> Dafür ist mir Wifi eigentlich zu unsicher.

Denke darüber nochmal intensiver nach.

Ich würde es z.B. nicht wollen, dass ein Fremder meine Steckdosen 
fernsteuert. Was braucht er dazu?

a) Mein WLAN Passwort.
b) Einen Standort in der Nähe.
c) Er muss wissen, dass bei mir etwas ist, dass er fernsteuern kann.
d) Er muss wissen, wie man diese Sachen ansteuert.

Wie hoch ist wohl die Wahrscheinlichkeit, dass das alles gleichzeitig 
zutrifft? Und wie schlimm wäre das?

Wenn ein Hacker mein Wohnzimmerlicht fern-schalten kann - so what? Ist 
doch egal!

Wenn er jedoch mein Aquarium abschalten würde, fände ich das weniger 
lustig. Also hänge ich mein Aquarium einfach nicht ans WLAN - so 
verlockend das aus technischer Sicht auch sein mag.

Man angenommen, ich mache es doch, dann kann ich die Steckdosenleisten 
ganz einfach absichern indem ich sie nicht erreichbar mache. Anders 
herum könnten sie doch einen sicheren Server fragen, was sie tun sollen. 
Dann muss ich nur den Server absichern, was viel einfacher ist, als sich 
mit den Schwachpunkten irgendwelcher Mini-Webserver herum zu schlagen.

Als zentraler Server für das ganze Smart Home könnte zum Beispiel ein 
Raspberry Pi dienen. Der bietet sämtlichen Security Schnickschnack, der 
heute so üblich ist.

Was hältst du von diesem Ansatz?

von Stefan F. (Gast)


Lesenswert?

Ich möchte noch etwas ergänzen:

Man sollte fernsteuerbare Geräte so bauen, dass sie eigensicher sind. 
Als Worst-Case Szenario wird zum Beispiel gerne die Heizungsanlage 
angeführt, die nach Manipulation auf 50°C die Haustiere grillt.

Man kann Geräte so konstruieren, dass sie auch bei völlig falscher 
Fernsteuerung nichts böses anstellen können.

Meine Heizung würde die Räume im Winter höchstens auf 30°C bringen 
können, wenn sie ununterbrochen mit maximaler Leistung durch liefe. Für 
mehr hat sie nämlich schlicht nicht genug Power. Und im Sommer ist sie 
ohnehin manuell abgeschaltet.

Wenn die Anlage doppelt so viel Power hätte, würde ich einen 
zusätzlichen Sicherheits-Schalter anbauen, der die Anlage bei 
Überschreiten einer gewissen Temperatur ganz autark ohne Internet 
abschaltet.

Ich bin ziemlich sicher, dass man doppelte Sicherheit überall einbauen 
kann, wo es nötig ist.

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.