Arduino schéma - arduino.sk

IP teplomer - rada

Programovanie arduina
Príspevky: 2
Registrovaný: Štv 14. Aug 2014 3:35:28

IP teplomer - rada

Poslaťod petersmd » Štv 02. Okt 2014 16:34:54

Ahojte. Spravil som si IP teplomer, ktorý mi meria teplotu+vlhkosť a následne tieto dáta posiela na web server do databazy a následne zobrazuje tabulku na mojej web stránke. Problém mám ale s tým že program by mal každých 5 min. odosielať tieto údaje, no prvýkrát sa tieto údaje odošlú správne po resete adruina no keď príde po 5min. na odoslanie ďalších dát, tak odošle korektne len vlhkosť a teplota akoby zamrzla a stále posiela už len rovnaké hodnoty. Akonáhle ho resetnem, opat prvé hodnoty sú v poriadku a ďalsie opať zamrznutá teplota na tej istej hodnote. Kde by mohol byť problém? Díky
-------------------------------------------------------------------------------------------------------------

#include <DHT.h>
#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { .......................................... }; // MAC adresa mojej dosky
EthernetClient client;

#define DHTPIN 2 // SENSOR PIN
#define DHTTYPE DHT22 // SENSOR TYPE - THE ADAFRUIT LIBRARY OFFERS SUPPORT FOR MORE MODELS
DHT dht(DHTPIN, DHTTYPE);


long previousMillis = 0;
unsigned long currentMillis = 0;
long interval = 25000; // READING INTERVAL

int t = 0; // TEMPERATURE VAR
int h = 0; // HUMIDITY VAR
String data;

void setup() {
Serial.begin(9600);

if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
}

dht.begin();
delay(100000); // GIVE THE SENSOR SOME TIME TO START

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


}

void loop(){

currentMillis = millis();
if(currentMillis - previousMillis > interval) { // READ ONLY ONCE PER INTERVAL
previousMillis = currentMillis;
t = (int) dht.readTemperature();
h = (int) dht.readHumidity();

}

float temperature = dht.readTemperature();
char temp[10];
String tempAsString;
data+="temp1=";
dtostrf(temperature,1,2,temp);//convert float to string
tempAsString = String(temp);
data += tempAsString;

float humidity = dht.readHumidity();
char tempp[11];
String temppAsString;
data+="&hum1=";
dtostrf(humidity,1,2,tempp);//convert float to string
temppAsString = String(tempp);
data += temppAsString;



Serial.println(data);


if (client.connect("www...........sk",80)) { // REPLACE WITH YOUR SERVER ADDRESS
Serial.println("connected");
client.println("POST /teplota/add.php HTTP/1.1");
client.println("Host:.............sk"); // SERVER ADDRESS HERE TOO
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(data.length());
client.println();
client.print(data);


Serial.println("POST /teplota/add.php HTTP/1.1");
Serial.println("Host:..........sk"); // SERVER ADDRESS HERE TOO
Serial.println("Content-Type: application/x-www-form-urlencoded");
Serial.println("Connection: close");
Serial.print("Content-Length: ");
Serial.println(data.length());
Serial.println();
Serial.print(data);

}

delay(300000);

if (client.connected()) {

client.stop();// DISCONNECT FROM THE SERVER

}

//delay(300000); // WAIT FIVE MINUTES BEFORE SENDING AGAIN

}

Príspevky: 174
Registrovaný: Ned 16. Mar 2014 23:22:00

Re: IP teplomer - rada

Poslaťod posjirka » Štv 02. Okt 2014 18:54:52

Ahoj, WEBové rozhraní jsem ještě neřešil. Zkus to nejdřív přes seriovou linku, co ti posílá za data. Aspoň zjistíš, zda je chyba v ethernet modulu nebo v čidle/programu.
Navíc v tom kodu trochu nechápu proč tolikrát čteš tu samou hodnout :
Nejtřív jako INT
t = (int) dht.readTemperature();
h = (int) dht.readHumidity();
potom jako Floaf ...

Asi bych to trochu zjednodušil a zkusil rozjet po částech.

Vyzkoušej poupravit toto:
http://arduino.cc/en/Tutorial/Barometri ... eWebServer

testu zdar
jirka

Príspevky: 2
Registrovaný: Štv 14. Aug 2014 3:35:28

Re: IP teplomer - rada

Poslaťod petersmd » Pon 06. Okt 2014 10:14:06

Len tam je server a ja to mam ako client ktorý odosiela dáta, to je niečo úplne iné.

Späť na Software