Hallo zusammen,
ich suche nun schon echt seit Tagen überall, um mein Prblem zu lösen, aber ohne Erfolg.
Für meine Wetterstation habe ich eine Schneehöhenmessung mit folgenden Teilen gebaut:
1 x Arduino UNO R3
1 x Ethernetshield
Mit diesem Code klappt alles prima. Die Daten werden in die MSQL Datenbank geschrieben.
#include <SPI.h>
#include <Ethernet.h> // library for ethernet functions
//ETHERNET-SETTINGS
byte mac[] = { 0x10, 0x90, 0x44, 0xDD, 0x1, 0x8, 0x0, 0xFD }; // MAC-Adresse des Arduino
byte ip[] = { 192, 168, 1, 18 }; // IP-Adresse des Arduino
byte gateway[] = { 192, 168, 1, 1 }; // Gateway
byte subnet[] = { 255, 255, 255, 0 }; // SubNet
//byte server[] = {81, 169, 145, 157 }; // IP-Adresse ursprungwetter.de bei Strato
EthernetClient client;
char host[] = "ursprungwetter.de"; // Domain
char url[] = "/ultraarduinoxxx.php"; // Pfad zur PHP-Datei
char key[] = "xxxx"; // Kennwort aus PHP-Datei
char serverName[] = "www.ursprungwetter.de";
char c; // Variable für Rückgabe des Servers
long Interval = 15000; // Upload-Interval in Minuten
int trigger=5;
int echo=6;
long dauer=0;
long entfernung=0;
void setup() {
delay(1000);
Serial.begin (9600);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
Serial.println("Ethernet initialisieren...");
Ethernet.begin(mac, ip);
//Interval = Interval * 1000 * 60; // Das in Minuten angegebene Interval in Millisekunden umrechnen
delay(1000); // warten, bis Ethernet gestartet
}
void loop() {
pinMode(trigger, OUTPUT);
digitalWrite(trigger, LOW);
delay(2);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
pinMode(echo, INPUT);
dauer = pulseIn(echo, HIGH);
entfernung = 50 - (dauer / 58); // umrechnen in zentimeter 50 ist Installationshöhe zum Boden
if (entfernung >= 500 || entfernung < 0)
{
Serial.println("Kein Messwert");
}
else
{
Serial.print(entfernung);
Serial.println(" cm");
}
delay(5000);
Daten_senden(entfernung); // Temperaturdaten an Server übertragen
delay(5000);
byte maxReads = 10; //Seconds
while ((maxReads-- > 0) && client.connected()) // Antwort des Servers lesen
{
delay(1000);
while (client.available())
{
char response = client.read();
Serial.print(response);
}
}
client.stop();
Serial.println("Done.");
client.flush();
delay(Interval);
}
/******************************
*
Daten an Server schickenn *
*
*******************************/
void Daten_senden(long entfernung)
{
if (client.connect(serverName, 80)) // Verbindung zum Server aufbauen
{
Serial.println("Verbunden, Sende Daten...");
client.print("GET " + String(url));
Serial.println("GET " + String(url));
client.print("?entfernung=");
Serial.print("?entfernung=");
client.print(entfernung);
Serial.println(entfernung);
client.print("&key=" + String(key));
Serial.print("&key=" + String(key));
client.println(" HTTP/1.1");
Serial.println(" HTTP/1.1");
client.print("Host: " + String(host));
Serial.print("Host: " + String(host));
client.println();
Serial.println();
client.println("User-Agent: Arduino");
Serial.println("User-Agent: Arduino");
client.println("Connection: close");
Serial.println("Connection: close");
client.println();
Serial.println();
}
else
{
Serial.println(" ***** VERBINDUNG KANN NICHT HERGESTELLT WERDEN *****");
}
}
Nun versuche ich vergeblich das Ethernetshild mit einem XbeeS6B zu ersetzen, um die Daten
drahtlos über meinen Router zu versenden (kann kein Kabel verlegen).
Achso, was ich noch dazu sagen muss, ich bin noch totaler Anfänger was Arduino betrifft.
Also habe ich mir ein SainSmart XBee Shield und ein Xbee S6B gekauft:
Alles zusammen gesteckt und das XbeeS6B konfiguriert. Das wird jetzt im Router erkannt.
Dann habe ich mit verschiedenen Code`s probiert eine Verbindung aufzubauen.
Es kam aber immer die Fehlermeldung:
"WiFi shield not present"
Habe auch versucht nur das Xbee ohne SainSmart XBee Shield an dem Arduino anzustecken
aber es klappt nichts. Wie gesagt , keine Ahnung. aber davon jede Menge.
Oder brauche ich vielleicht ganze andere Hardware?
Könnt ihr mir irgendwie weiterhelfen?
Grüsse Bernd