
Das Ethernet-Shield ist eine Platine, die einfach auf den Arduino aufgesteckt wird. Auf ihr befindet sich ein LAN-Anschluss (RJ45). Alle digitalen und analogen Anschlüsse stehen auch weiterhin zur Verfügung.
An zwei Beispielen sollen die Variablen und Funktionen der Bibliothek Ethernet erläutert werden.
Es wird eine Testseite erstellt und der von der Testseite gesendete Buchstabe angezeigt. Du musst die im Seriellen Monitor angezeigt IP in der Adresszeile des Browsers eingeben, anschließend fügst du ein / und den Buchstaben hinzu.
So sieht es aus:

Benötigte Bibliothek:

oder: Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
Binde die Bibliothek ein und definiere die benötigten Variablen.
1 2 3 4 5 6 7 | #include “Ethernet.h” // MAC-Adresse und IP definieren byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Name des Servers vergeben EthernetServer WebServer(80); |
Der setup-Teil vergibt die IP, startet den Server und zeigt die vergebene IP an.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void setup() { // Ethernet starten DHCP Ethernet.begin(mac); // Server starten WebServer.begin(); Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} delay(500); // zur Kontrolle IP-Adresse anzeigen // localIP -> Adresse, die im Browser eingegeben wird Serial.print(F(“IP Adresse: ”)); Serial.println(Ethernet.localIP()); } |
Der loop-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | void loop() { String Auswertung = “”; // auf Klienten warten … EthernetClient Client = WebServer.available(); // neue Anfrage if (Client) { // solange der Client verbunden ist … while (Client.connected()) { if (Client.available()) { // Zeichen vom Clienten lesen char Zeichen = Client.read(); // String “zusammenbauen” // += ist die Kurzform von Auswertung = Auswertung + Zeichen; Auswertung += Zeichen; // \n = Seite vom Clienten vollständig geladen if (Zeichen == ‘\n’) { // HTTP-Anforderung senden Client.println(F(“HTTP/1.1 200 OK”)); Client.println(F(“Content-Type: text/html”)); // Leerzeile zwingend erforderlich Client.println(); /* HTML-Seite aufbauen die folgenden Anweisungen müssen mit print oder println gesendet werden println “verschönert” den Quelltext (jede Anweisung in einer eigenen Zeile) */ Client.println(F(“<!doctype html>”)); Client.println(F(“<html>”)); Client.println(F(“<body>”)); Client.println(F(“<h1>Testseite</h1>”)); Client.println(F(“<b>Gelesenes Zeichen: </b>”)); Client.println(Auswertung); /* ein Zeichen hinter der IP nach dem / erzeugt eine GET-Anweisung in der Form GET /a HTTP/1.1 -> a auswerten GET /b HTTP/1.1 -> b auswerten indexOf durchsucht den String nach diesen Zeichen (> 0 = Zeichen gefunden) */ if (Auswertung.indexOf(“a”) > 0) { Client.println(F(“<hr>Der Buchstabe a wurde eingegeben!”)); } if (Auswertung.indexOf(“b”) > 0) { Client.println(F(“<hr>Der Buchstabe b wurde eingegeben!”)); } // IPs anzeigen Client.print(F(“<hr><b>Eigene IP: ”)); Client.print(Client.remoteIP()); Client.println(F(“<br>”)); Client.println(F(“IP des Ethernet-Shields: ”)); Client.print(Ethernet.localIP()); Client.println(F(“</b>”)); Client.println(F(“</body>”)); Client.println(F(“</html>”)); // Zeit, um die Antwort zu übertragen delay(1); // Verbindung beenden Client.stop(); } } } } } |
Das vollständige Programm:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | #include “Ethernet.h” // MAC-Adresse und IP definieren byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Name des Servers vergeben EthernetServer WebServer(80); void setup() { // Ethernet starten DHCP Ethernet.begin(mac); // Server starten WebServer.begin(); Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} delay(500); // zur Kontrolle IP-Adresse anzeigen // localIP -> Adresse, die im Browser eingegeben wird Serial.print(F(“IP Adresse: ”)); Serial.println(Ethernet.localIP()); } void loop() { String Auswertung = “”; // auf Klienten warten … EthernetClient Client = WebServer.available(); // neue Anfrage if (Client) { // solange der Client verbunden ist … while (Client.connected()) { if (Client.available()) { // Zeichen vom Clienten lesen char Zeichen = Client.read(); // String “zusammenbauen” // += ist die Kurzform von Auswertung = Auswertung + Zeichen; Auswertung += Zeichen; // \n = Seite vom Clienten vollständig geladen if (Zeichen == ‘\n’) { // HTTP-Anforderung senden Client.println(F(“HTTP/1.1 200 OK”)); Client.println(F(“Content-Type: text/html”)); // Leerzeile zwingend erforderlich Client.println(); /* HTML-Seite aufbauen die folgenden Anweisungen müssen mit print oder println gesendet werden println “verschönert” den Quelltext (jede Anweisung in einer eigenen Zeile) */ Client.println(F(“<!doctype html>”)); Client.println(F(“<html>”)); Client.println(F(“<body>”)); Client.println(F(“<h1>Testseite</h1>”)); Client.println(F(“<b>Gelesenes Zeichen: </b>”)); Client.println(Auswertung); /* ein Zeichen hinter der IP nach dem / erzeugt eine GET-Anweisung in der Form GET /a HTTP/1.1 -> a auswerten GET /b HTTP/1.1 -> b auswerten indexOf durchsucht den String nach diesen Zeichen (> 0 = Zeichen gefunden) */ if (Auswertung.indexOf(“a”) > 0) { Client.println(F(“<hr>Der Buchstabe a wurde eingegeben!”)); } if (Auswertung.indexOf(“b”) > 0) { Client.println(F(“<hr>Der Buchstabe b wurde eingegeben!”)); } // IPs anzeigen Client.print(F(“<hr><b>Eigene IP: ”)); Client.print(Client.remoteIP()); Client.println(F(“<br>”)); Client.println(F(“IP des Ethernet-Shields: ”)); Client.print(Ethernet.localIP()); Client.println(F(“</b>”)); Client.println(F(“</body>”)); Client.println(F(“</html>”)); // Zeit, um die Antwort zu übertragen delay(1); // Verbindung beenden Client.stop(); } } } } } |
Buttons können auf die gleiche Weise ausgewertet werden:

Für die Darstellung im Browser ist in Zeile 91 eine Änderung nötig:
| ü -> ü |
|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | #include “Ethernet.h” // MAC-Adresse und IP definieren byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Name des Servers vergeben EthernetServer WebServer(80); void setup() { // Ethernet starten DHCP Ethernet.begin(mac); // Server starten WebServer.begin(); Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} delay(500); // zur Kontrolle IP-Adresse anzeigen // localIP -> Adresse, die im Browser eingegeben wird Serial.print(F(“IP Adresse: ”)); Serial.println(Ethernet.localIP()); } void loop() { String Auswertung = “”; // auf Klienten warten … EthernetClient Client = WebServer.available(); // neue Anfrage if (Client) { // solange der Client verbunden ist … while (Client.connected()) { if (Client.available()) { // Zeichen vom Clienten lesen char Zeichen = Client.read(); Auswertung += Zeichen; // entspricht: // Auswertung = Auswertung + Zeichen; // \n = Seite vom Clienten vollständig geladen if (Zeichen == ‘\n’) { // HTTP-Anforderung senden Client.println(F(“HTTP/1.1 200 OK”)); Client.println(F(“Content-Type: text/html”)); // Leerzeile zwingend erforderlich Client.println(); /* HTML-Seite aufbauen die folgenden Anweisungen müssen mit print oder println gesendet werden println “verschönert” den Quelltext (jede Anweisung in einer eigenen Zeile) */ Client.println(F(“<!doctype html>”)); Client.println(F(“<html>”)); Client.println(F(“<body>”)); Client.println(F(“<h1>Testseite mit Buttons</h1>”)); // Button rot Client.print(F(“<input style=‘background-color:red;cursor:pointer‘”)); Client.print(F(“ border-radius:5px;border: 2px solid black;’ type=‘button‘”)); Client.print(F(“ type=‘button‘”)); Client.println(F(“ onClick =\“location.href=‘rot’\“”)); Client.println(F(“ value=‘rot’>”)); // Button gelb Client.print(F(“<input style=‘background-color:yellow;cursor:pointer‘”)); Client.print(F(“ border-radius:5px;border: 2px solid black;‘”)); Client.print(F(“ type=‘button‘”)); Client.println(F(“ onClick =\“location.href=‘gelb’\“”)); Client.println(F(“ value=‘gelb’>”)); // Button grün Client.print(F(“<input type=‘button’ style=‘background-color:#92F099;cursor:pointer‘”)); Client.print(F(“ border-radius:5px;border: 2px solid black;‘”)); Client.print(F(“ type=‘button‘”)); Client.println(F(“ onClick =\“location.href=‘gruen’\“”)); Client.println(F(“ value=‘grün’>”)); Client.println(F(“<br><hr>”)); Client.println(F(“<b>Gelesenes Zeichen: </b>”)); Client.println(Auswertung); /* ein Zeichen hinter der IP nach dem / erzeugt eine GET-Anweisung in der Form GET /gruen HTTP/1.1 -> Button gruen auswerten GET /gelb HTTP/1.1 -> Button gelb auswerten indexOf durchsucht den String nach diesen Zeichen (> 0 = Zeichen gefunden) */ if (Auswertung.indexOf(“rot”) > 0) { Client.println(F(“<hr>Der Button rot wurde gedrückt!”)); } if (Auswertung.indexOf(“gelb”) > 0) { Client.println(F(“<hr>Der Button gelb wurde gedrückt!”)); } if (Auswertung.indexOf(“gruen”) > 0) { Client.println(F(“<hr>Der Button grün wurde gedrückt!”)); } // IPs anzeigen Client.print(F(“<hr><b>Eigene IP: ”)); Client.print(Client.remoteIP()); Client.println(F(“<br>”)); Client.println(F(“IP des Ethernet-Shields: ”)); Client.print(Ethernet.localIP()); Client.println(F(“</b>”)); Client.println(F(“</body>”)); Client.println(F(“</html>”)); // Zeit, um die Antwort zu übertragen delay(1); // Verbindung beenden Client.stop(); } } } } } |
Letzte Aktualisierung: