INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Temperatur u. feuchtigkeit Webserver+speichern der Temp. u. Feuchti. auf sd Porblem!!
27.10.2014, 10:14
Beitrag #1
Sad Temperatur u. feuchtigkeit Webserver+speichern der Temp. u. Feuchti. auf sd Porblem!!
Hi Leute,
Ich habe ein großes Problem!
Ich habe einen Arduino UNO R3 + Ethernetshield, und habe ein Programm geschrieben das mir die Werte von einen Temperatursensor u. Feuchtigkeitssensor(DHT11) einließt und diese dann auf einen Webserver ausgibt sowie diese Werte im ca. 10 sec. Takt auf die SD-Karte schreiben "soll"!!!!
Doch genau hier ist das Problem, Ich komme zwar problemlos auf dem Webserver doch er will nicht sowohl den Server nutzen als auch die SD-Karte! Er sagt mir er würde die temp.txt nicht öffnen können (das ist durch ne if else geregelt if wenn er die txt öffnen kann else wenn nicht).
Ich habe wie in den Beispielen die in im Internet gefunden habe den das Wechselspiel zwischen HIGH und LOW von pin 4 und 10 ausprobiert aber es will einfach nicht funktionieren!!!!
Als das nicht lief habe ich mal Stück für Stück den Ethernet teil Kommentiert, erst den HTML aufruf in der loop und dann immer höher bis zum Punkt, Ethernet.begin(mac, ip); und server.begin(); wenn ich dann diese Sachen auch auskommentiert habe läuft das Schreiben wieder auf die SD aber natürlich wenn die Initialisierung und der Aufruf fehlt nicht der Webserver.

Nun zu meinen Fragen kann sich mal jemand bitte meinen Code ansehen ob ich da Fehler gemacht habe, bezüglich dem Trick mit Pin 4, 10 !
Und gibt es unter Umständen die Möglichkeit die Initialisierung vom Server in der loop wieder aufzuheben so das ich eben auf die SD-Karte beschreiben kann und dann den Webserver wieder initialisieren damit es damit weiter läuft.

Wenn ihr das Programm ausprobieren wollt braucht ihr nur den Ethernetshield und nen Uno R3, da man die Temp. und die Feuchtigkeitswerte auch als feste werte deklarieren kann. Eins noch in dem Programm ist noch ne Grenzwertabfrage eingebaut. Wie schon oben angemerkt einzelnt funktioniert das Programm ohne Fehler nur zusammen nicht.

Ich bedanke mich schon einmal im voraus für die Mühe!

das ist mein code:

#include <SD.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <SPI.h>
#include <Ethernet.h>

const int chipSelect = 4;
//char scdPuffer[256];
int zaehler = 0;
int grenzet = 22.00;
int grenzeh = 60;
int dRETH;
int dRSD;
float h;
float t;



//Einstellen der MAC und der IP Adresse
byte mac[] =
{ 0x90, 0xA2, 0xDA, 0x00, 0x23, 0x36 };
IPAddress ip(192,168,178,99);

EthernetServer server(80);


void setup()
{
pinMode(4, OUTPUT);
pinMode(10, OUTPUT);
dht.begin();
Serial.begin(9600);
pinMode(5, OUTPUT);
beep(50);
beep(50);
beep(50);
while (!Serial)
{
;
}


digitalWrite(10, HIGH);
digitalWrite(4, LOW);
if (!SD.begin(chipSelect))
{
Serial.println("initialization fehlgeschlagen!");
return;
}
if (SD.begin(chipSelect))
{
Serial.println("initialization erledigt.");
}



// Sartet die Ethernet Verbindung und den Server
Ethernet.begin(mac, ip);
server.begin();
Serial.print("Der Server ist an der Adresse: ");
Serial.println(Ethernet.localIP());

}


void loop()
{
h = dht.readHumidity();
t = dht.readTemperature();


Serial.println(zaehler);
Serial.println("Temperatur in Celsius:");
Serial.println(t);
Serial.println("Feuchtigkeit in %:");
Serial.println(h);

iniETH();

inisdbeep();


}




void beep(unsigned char delayms)
{
analogWrite(5, 200);

delay(delayms);
analogWrite(5, 0);
delay(delayms);
}

void iniETH()
{

h = dht.readHumidity();
t = dht.readTemperature();

digitalWrite(4, HIGH);
digitalWrite(10, LOW);

dRETH = digitalRead(10);
dRSD = digitalRead(4);

if (dRETH == LOW && dRSD == HIGH)
{
EthernetClient client = server.available();
if (client)
{
Serial.println("Neuer USER auf dem Server");
boolean currentLineIsBlank = true;
while (client.connected())
{
if (client.available())
{
char c = client.read();
Serial.write©;
if (c == '\n' && currentLineIsBlank)
{
// sendet standart HTTP header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 5");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");

// mit diesen zeilen werden nun die gelesenen daten auf der seite angezeigt
client.println("<H2>");
client.print("Feuchtigkeit: ");
client.println("</H2>");
client.println("<p />");
client.println("<H1>");
client.print(h);
client.print(" %\t"); // in Prozent
client.println("</H1>");
client.println("<p />");
client.println("<H2>");
client.print("Temperatur: ");
client.println("</H2>");
client.println("<H1>");
client.print(t);
client.println(" °"); // das Gradzeichen
client.println("C"); // in Grad Celsius
client.println("</H1>");



client.println("</html>");
break;
}
if (c == '\n')
{
currentLineIsBlank = true;
}
else if (c != '\r')
{
currentLineIsBlank = false;
}
}
}

delay(1);
client.stop();
Serial.println("client disonnected");
}
}

}

void inisdbeep()
{
h = dht.readHumidity();
t = dht.readTemperature();


if (h > grenzeh)
{
beep(50);
beep(50);
beep(50);
}

if (t > grenzet)
{
beep(200);
}
delay(1000);
if (zaehler == 10)
{
zaehler = 0;

digitalWrite(10, HIGH);
digitalWrite(4, LOW);

dRETH = digitalRead(10);
dRSD = digitalRead(4);
if (dRETH == HIGH && dRSD == LOW)
{

File dataFile = SD.open("temp.txt", FILE_WRITE);

if (dataFile)
{
Serial.println("ich war drin in der sd");
if (t > grenzet)
{
dataFile.print("Temperatur:");
dataFile.print(t);
dataFile.print("*C");
dataFile.println(" Grenze Überschritten");
dataFile.close();
}
else
{
if (h > grenzeh)
{
dataFile.print("Feuchtigkeit:");
dataFile.print(h);
dataFile.print("%");
dataFile.println(" Grenze Überschritten");
dataFile.close();
}
else
{
dataFile.print("Temperatur:");
dataFile.print(t);
dataFile.println("*C");
dataFile.print("Feuchtihkeit:");
dataFile.print(h);
dataFile.println("%");
dataFile.close();
}
}
}
else
{
Serial.println("temp.txt wurde nicht geoeffnet");
}
}

}

zaehler++; // addiert zaeler um +1 in jeder Schleife

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Rainbow Messeinrichtung 6 x Temperatur & Feuchtigkeit JoeDorm 4 127 Gestern 13:00
Letzter Beitrag: Tommy56
Rainbow Wetterstation mit LC-Display I2C --> Feuchte, Temp, Wind, Druck, Tau, Tendenz Wampo 25 36.220 24.10.2016 19:05
Letzter Beitrag: Wampo
Question pool temperatur messen... unfug11 4 1.455 06.04.2016 09:11
Letzter Beitrag: unfug11
  Arduino UNO + EthernetShield (Webserver mit E-Mail) m0nn3 0 996 21.12.2015 18:35
Letzter Beitrag: m0nn3
  Substrat-Feuchtigkeitsmesser + Temp. und RLF Nifu 19 4.887 19.07.2015 11:39
Letzter Beitrag: MeisterQ
Smile Temperatur mit DS18S20, Kommastellen Dan16 13 3.446 29.03.2015 15:36
Letzter Beitrag: Dan16
  Gärbox mit fallender Temperatur Kubus 3 1.532 29.09.2014 20:23
Letzter Beitrag: Thorsten Pferdekämper
  Arduino Webserver mit Sensoren Mi Kat 10 8.545 20.08.2014 14:14
Letzter Beitrag: RMR
  Temperatur-Farbwechsler lena 2 1.446 22.05.2014 09:46
Letzter Beitrag: Thorsten Pferdekämper
  Temp. Rollo Steuerung - Was brauche ich? Backjump 7 4.314 26.12.2013 05:04
Letzter Beitrag: Sloompie

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste