ciao ragazzi, vorrei stampare a display temperatura, umidita e luce. c'è però un problema, i caricamenti con esp8266 nel mio sito li fa ogni 1 ora circa, come posso aggiornare il display ogni 5secondi stampando temperatura, umidita, ecc..?
ecco lo sketch
#include "DHT.h"
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>
#define SSID "Hipkk118"
#define PASS "gbv8812"
#define SERVER "www.mrvista.org"
String path_page = "/insei.php";
SoftwareSerial mySerial(9, 10);
#define DHTPIN 2 //Pin per rilevare la temperatura
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE); //Creo istanza temperatura del tipo DHTTYPE
int buzzer = 13;
LiquidCrystal lcd(7, 8, 3, 5, 11, 12);
int count;
char status_p;
String cosaMandare;
double T, P, p0, a;
String temp_title = "t=";
String umid_title = "u=";
String lux_title = "l=";
String temp, umid, lux; //Dati da inviare con il Wifi
int inLux = A2; //Pin per rilevare la luce
String response, response2;
int m=0;
int s=0;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
mySerial.begin(115200); //Solo per debug
delay(3000);
pinMode(buzzer,OUTPUT);
lcd.print("Start...");
Serial.println("Start...");
}
void loop() {
tone(buzzer,2000,500);
int i=1;
sendData("AT+RST\r\n", 3000); //Resetta modulo
sendData("AT+GMR\r\n", 3000); //Ottieni info
//sendData("AT+CWLAP\r\n", 3000); //Momentaneamente tolto
sendData("AT+CWMODE=1\r\n", 1000);
String cmd = "AT+CWJAP=\"";
cmd += SSID;
cmd += "\",\"";
cmd += PASS;
cmd += "\"\r\n";
sendData(cmd, 7000);
sendData("AT+CIFSR\r\n", 5000);
lcd.clear();
lcd.write("Connessione ok");
delay(2000);
lcd.clear();
//Rilevazione temperatura e umidità
float temperatura; /*Temperatura che verrà inviata (scelgo la media tra i due valori misurati
DHT22 e BMP180)*/
delay(3000); //Attenzione: per il DHT22 frequenza di campionamento non superiore a 0,5 Hz (una volta ogni 2 secondi)
int temp_dht22 = (int)dht.readTemperature(); //Leggo il valore della temperatura in gradi C dall'istanza dht
delay(3000);
int umi_dht22 = (int)dht.readHumidity(); //Leggo il valore dell'umidità dall'istanza dht
delay(3000);
lcd.write("Temperatura "+temp_dht22);
lcd.setCursor(0,1);
lcd.write("Umidità "+umi_dht22);
delay(2000);
int lux_value = analogRead(inLux); //Leggi valore di luce in una scala da 0 a 1023
int lux_perc = map(lux_value, 1023, 0, 0, 100); //percentuale
/*Serial.print("Luminosita': ");
Serial.print(lux_perc);
Serial.println("%");
*/
delay(2000);
temp = temp_title + (int)temp_dht22;
umid = umid_title + (int)umi_dht22;
lux = lux_title + lux_perc;
cosaMandare=temp;
cosaMandare+="&";
cosaMandare+=umid;
cosaMandare+="&";
cosaMandare+=lux;
String cmd55 = "AT+CIPSTART=\"TCP\",\"";
cmd55 += SERVER;
cmd55 += "\",80\r\n";
sendData(cmd55, 2000); //Avvia connessione con server
String cmd2 = "GET ";
cmd2 += path_page;
cmd2 += "?";
cmd2 += cosaMandare;
cmd2 += " HTTP/1.1\r\nHost: ";
cmd2 += SERVER;
cmd2 += "\r\n\r\n";
String cmd3 = "AT+CIPSEND=";
cmd3 += cmd2.length();
cmd3 += "\r\n";
sendData(cmd3, 2000);//Lunghezza della richiesta
//delay(1000);
sendData(cmd2, 3000); //Richiesta
tone(buzzer,2000,200);
delay(500);
tone(buzzer,2000,200);
while(i<120){
delay(29884); //ritardo 59,27min
i++;
}
//delay(120000); //ritardo 2min
lcd.clear();
}
String sendData(String command, const int timeout)
{
response = "";
response2 = "";
count = 0;
mySerial.print(command); // invia il comando all' esp8266
long int time = millis();
while ((time + timeout) > millis())
{
while (mySerial.available())
{
char c = mySerial.read(); // componi la risposta coi caratteri ricevuti dal modulo
if (c == '\n' or c == '\r')
response2 += ' ';
else
response2 += c;
response += c;
count++;
}
}
Serial.print(response);
Serial.print(count);
return response;
}