Ethernet-Shield initialisieren
Bevor wir Daten über das Ethernet-Shield verschicken können, müssen wir es initialisieren. Dazu benötigen wir zwei Bibliotheken, die bereits mit der Arduino-IDE mitgeliefert werden. Außerdem müssen wir für das Ethernet-Shield von Hand eine MAC festlegen und ein Objekt definieren, über das unsere Kommunikation mit dem Shield abgewickelt wird:
So vorbereitet beschränkt sich der Start des Ethernet-Shields auf einen Funktionsaufruf, den wir in die setup()-Funktion des Sketch packen:
EthernetClient client; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
Ethernet.begin(mac)
In unserem Skript auf Github haben wir diesen Aufruf in der Funktion initEthernet() gekapselt, die auch die Fehler bei der Initialisierung behandelt.
Temperatur senden
Die Daten werden schließlich in der Funktion sendTemperature() versendet. Die Funktion erwartet als Parameter die ID des Sensors, die wir in der Variable thermometer gespeichert haben.
Damit lesen wir den gespeicherten Temperaturwert des Sensors in Grad Celsius aus:
float tempC = sensors.getTempC(deviceAddress);
Als Nächstes weisen wir das Ethernet-Shield an, eine TCP-Verbindung zum Golem.de-Server an Port 80 aufzubauen, die Konstante SERVER enthält den Servernamen "www.golem.de":
client.connect(SERVER, 80)
War das erfolgreich, wickeln wir eine HTTP-GET-Anfrage von Hand ab. Diese bauen wir mit Hilfe eines String-Objekts zusammen. Wichtigster Bestandteil ist die URL, sie besteht aus der Konstante namens URL, daran wird die Temperatur als Parameter angehängt.
Wie die URL-Konstante aufgebaut werden muss, kann der technischen Dokumentation unseres Messprojekts entnommen werden. Teil der Dokumentation ist auch ein Formular, um sich die URL einfach zusammenzuklicken. Für die URL ist es wichtig, dass "Temperatur anhängen" ausgewählt wurde.
String cmd = "GET "; cmd += URL; cmd += tempC; cmd += " HTTP/1.0"; client.println(cmd); client.print("Host: "); client.println(SERVER); client.println("Connection: close"); client.println();
Die Zeichenketten in den Aufrufen von client.print() und client.println() werden direkt an den Golem.de-Server geschickt.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
LED ansprechen | Zeitgesteuerte Ausführung |
Hallo, ich habe Interesse an so einem Temperatur Projekt auf Bluetooth Basis (Arduino...
Breadboard ist ja auch nur zum testen einer Schaltung da und nicht für Dauerbetrieb...
Damit geht's auch und kost' fast nix ;)