Hola a tod@s:
Necesito una pequeña ayuda, porque por más que he mirado y remirado, no encuentro la solución y creo que he entrado en bucle.
He programado un pequeño código para un estación meteorológica que conecta con la mi red local a través de un HLK-RM04, configurado como servidor WEB. Hasta aquí todo correcto y funcionando. Conecto a través de I2C un reloj y un BME280 y el HLK-RM04, a través de RX-TX. El problema es que por más que lo intento con distintas líneas de HTML no logro que la página se refresque sola. No sé si me explico bien: quiero que la pagina web una vez conectada, vaya mostrando cada 15 segundos las nuevas mediciones que los sensores vayan haciendo (y el tiempo en este caso también), pero por lo que sea, se queda fija donde conecté la primera vez y hasta que no refresco yo con F5, no se actualiza. Aquí pongo el código. ¿Alguna ayuda?
#include
#include
#include
#include
#include
SoftwareSerial Serial3(3, 2); // RX | TX y crea una instancia de Softwareserial
RTC_DS3231 rtc;
int segundo,minuto,hora,dia,mes;
long anio; //variable año
DateTime HoraFecha;
Adafruit_BME280 bme;
float presion=0;
float temp=0;
float tempmax=0;
float tempmin=0;
float sensacion;
float potencias;
float humedad=0;
unsigned long contadorMillis=0; // variable de tiempo inicio
unsigned long retardorelojMillis=0; // variable de retardo reloj
unsigned long retardobmeMillis=0;
void setup() {
bme.begin(0x76);
Serial.begin(57600);
Serial3.begin(57600);
delay (30000); // espera necesaria para que el módulo WIFI se conecte.
rtc.begin();
// Si se ha perdido la corriente, fijar fecha y hora--------------------
if (rtc.lostPower()) {
// Fijar a fecha y hora de compilacion
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Fijar a fecha y hora específica. En el ejemplo, 21 de Enero de 2016 a las 03:00:00
// rtc.adjust(DateTime(2016, 1, 21, 3, 0, 0));
}
}
//------------------FUNCIÓN WEB-------------------
void webserver(void)
{ Serial3.println("HTTP/1.0 200 OK\r\n content-type:text/html\r\n\r\n");
Serial3.println("");
Serial3.println("");
Serial3.println("Estación La Moheda. ");
Serial3.println("");
Serial3.println("");
Serial3.println("");
Serial3.println(" Estación La Moheda
");
Serial3.println("
");
Serial3.print(" TEMPERATURA: ");
Serial3.print(temp);
Serial3.print (" °C");
Serial3.println ("
");
Serial3.print("MÁX: ");
Serial3.print(tempmax);
Serial3.print (" °C");
Serial3.println ("
");
Serial3.print("MÍN: ");
Serial3.print(tempmin);
Serial3.print (" °C");
Serial3.println("
");
Serial3.print(" HUMEDAD: ");
Serial3.print (humedad);
Serial3.print (" %");
Serial3.println ("
");
Serial3.print (" SENSACIÓN TÉRMICA: ");
Serial3.print (sensacion);
Serial3.print (" °C");
Serial3.println ("
");
Serial3.print (" PRESIÓN ATMOSFÉRICA: ");
Serial3.print (presion);
Serial3.print (" mbar");
Serial3.println ("
");
Serial3.print("Fecha: ");
Serial3.print (dia);
Serial3.print ("/");
Serial3.print (mes);
Serial3.print ("/");
Serial3.print (anio);
Serial3.print (" Hora: ");
Serial3.print (hora);
Serial3.print (":");
Serial3.print (minuto);
Serial3.println ("");
Serial3.println("38 56 18 N 03 14 29 W");
Serial3.print("Altitud: 745 msnm");
Serial3.print("");
}
void loop() {
contadorMillis = millis(); // graba el tiempo actual
if ((contadorMillis-retardorelojMillis)>2000) {
// Obtener fecha actual y asignar a variables
HoraFecha = rtc.now(); //obtenemos la hora y fecha actual
segundo=HoraFecha.second();
minuto=HoraFecha.minute();
hora=HoraFecha.hour();
dia=HoraFecha.day();
mes=HoraFecha.month();
anio=HoraFecha.year();
retardorelojMillis=contadorMillis;
}
// --------------LECTURA SENSOR BME280-------1/2 MINUTO
if ((contadorMillis-retardobmeMillis)>30000){
presion= bme.readPressure()/100.0F;
humedad= bme.readHumidity();
temp= bme.readTemperature();
if (temp>tempmax){
tempmax=temp;
}
if (temp0 )
{char c = Serial3.read();
if (c == 71)
{ webserver();
delay(500);
}
}
}