Inhaltsverzeichnis WordPress
Von Haus aus kommt der Arduino Uno ohne eine Netzwerklösung daher. Dies kann man recht einfach mit einem Arduino Ethernet Shield aendern. Einfach aufstecken und der Arduino hat eine LAN Anschluss.
Damit nun der Arduino in deinem Netzwerk funktioniert bedarf es noch einem Sketch.
Dank dem gut Dokumentierten Arduino Projekt gibt es auch gute Ethernet Libray’s.
Arduino LAN Sketch
/*
Web Server
*/
// Diese beide Libraries sind erforderlich
#include <SPI.h>
#include <Ethernet.h>
/*
Hier die MAC Adresse des Shields eingeben
Meistens gibt es einen Aufkleber auf der Rückseite des Shields
*/
byte mac[] = {
0x90, 0xA2, 0xDA, 0x00, 0xFB, 0x80 };
/*
Nun noch eine freie IP auf aus deinem Netzwerk angeben. Dazu
ist es am einfachsten die IP des Rechners auszulesen.
ifconfig ist hier das Stichwort.
*/
IPAddress ip(192,168,1,177);
// Ethernet Library als Server initialisieren
// Verwendet IPAdress und den Port 80 für http
EthernetServer server(80);
void setup() {
/*
Serielle Kommunikation starten
*/
Serial.begin(9600);
// Ethernet Verbindung und Server starten
Ethernet.begin(mac, ip);
server.begin();
Serial.print("Server gestartet. IP: ");
// IP des Arduino-Servers ausgeben
Serial.println(Ethernet.localIP());
}
void loop() {
/*
server.available() schaut, ob ein Client verfügbar ist und Daten
an den Server schicken möchte. Gibt dann eine Client-Objekt zurück, sonst false
*/
EthernetClient client = server.available();
// Wenn es einen Client gibt, dann...
if (client) {
Serial.println("Neuer Client");
/*
Jetzt solange Zeichen lesen, bis eine leere Zeile empfangen wurde
HTTP Requests enden immer mit einer leeren Zeile
*/
boolean currentLineIsBlank = true;
// Solange Client verbunden
while (client.connected()) {
// client.available() gibt die Anzahl der Zeichen zurück, die zum Lesen
// verfügbar sind
if (client.available()) {
// Ein Zeichen lesen und am seriellen Monitor ausgeben
char c = client.read();
Serial.write(c);
// In currentLineIsBlank merken wir uns, ob diese Zeile bisher leer war.
/*
Wenn die Zeile leer ist und ein Zeilenwechsel (das \n) kommt,
dann ist die Anfrage zu Ende und wir können antworten
*/
if (c == '\n' && currentLineIsBlank) {
// HTTP Header 200 an den Browser schicken
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // Verbindung wird nach Antwort beendet
client.println("Refresh: 2"); // Seite alle 25 Sekunden neu abfragen
client.println();
// Ab hier berginnt der HTML-Code, der an den Browser geschickt wird
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("Analogpin 0: <b>");
client.print(analogRead(A0));
client.println("</b><br />");
client.println("</html>");
break;
}
if (c == '\n') {
// Zeilenwechsel, also currentLineIsBlack erstmal auf True setzen
currentLineIsBlank = true;
}
else if (c != '\r') {
// Zeile enthält Zeichen, also currentLineIsBlack auf False setzen
currentLineIsBlank = false;
}
}
}
// Kleine Pause
delay(1);
// Verbindung schliessen
client.stop();
Serial.println("Verbindung mit Client beendet.");
Serial.println("");
}
}