hola,
estoy haciendo una estacion meteorologica para casa con dos sensores remotos, uno para interior y otro para exterior, transmitiendo de forma inalabrica con los modulos FS1000 de 433MHz. Mi intencion es poderlo ver en un display 16x2 i2c y poder ver los datos a traves de la web, simplemente los valores.
No se nada de programación, de electronica y de RF aun me defiendo, pero poco a poco mirando aqui y alla, copia-pega de aqui alla he hecho funcionarlo hasta poderlo ver en el display.
He estado intentado hacerlo funcionar con la Ethernet shield, montar un simple servidor que pueda ver los valores de las 2 sondas, pero se queda todo el rato el navegador en "cargando..." y no consigo conectar.
He revisado el tema de la ip, ip fija, con y sin gateway y submask, dhcp etc... consigo hacer un ping obteniendo respuesta desde otro pc en la misma red, pero no consigo que cargue con ningun navegador.
He estado mirando sketch que ha hecho la gente con la ethernet shield, incluso los ejemplos, por si me habia dejado algo, pero creo que esta bien las configuraciones, pero mis pocos conocimientos de programacion no me dejan ver mas :~
Podriais hecharme una mano donde he cometido el error?
Os dejo el codigo que hasta ahora he podido conseguir hacer funcionar hasta el display, pero no los datos en una simple web
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <VirtualWire.h>
#include <SPI.h>
#include <Ethernet.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
EthernetServer server(80);
int Sensor1Data;
int Sensor2Data;
int Sensor3Data;
int h, t, m;
char StringReceived[21];
int led = 13;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
pinMode(led, OUTPUT);
vw_setup(2000);
vw_set_rx_pin(7);
vw_rx_start();
lcd.setCursor(1, 0);
lcd.print("RX is");
lcd.setCursor(1, 1);
lcd.print("OK");
delay (2000);
lcd.clear();
}
void loop(){
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
digitalWrite(led, HIGH);
int i;
for (i = 0; i < buflen; i++)
{
StringReceived[i] = char(buf[i]);
Serial.print(StringReceived[i]);
}
sscanf(StringReceived, "%d,%d,%d",&Sensor1Data, &Sensor2Data, &Sensor3Data);
digitalWrite(led, LOW);
h = Sensor1Data;
t = Sensor2Data;
m = Sensor3Data;
if (Sensor3Data == 1) // Numero de sonda
{
lcd.setCursor(0, 0);
lcd.print("T=");
lcd.print(t);
lcd.write(0b11011111);
lcd.print("C");
lcd.setCursor(7, 0);
lcd.print("H=");
lcd.print(h);
lcd.print("%");
lcd.setCursor(13, 0);
lcd.print("S=");
lcd.print(m);
Serial.println(Sensor3Data);
}
if (Sensor3Data == 6) // numero de sonda
{
lcd.setCursor(0, 1);
lcd.print("T=");
lcd.print(t);
lcd.write(0b11011111);
lcd.print("C");
lcd.setCursor(7, 1);
lcd.print("H=");
lcd.print(h);
lcd.print("%");
lcd.setCursor(13, 1);
lcd.print("S=");
lcd.print(m);
Serial.println(Sensor3Data);
}
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
Serial.print("Sonda:");
Serial.print(m);
Serial.println();
Serial.println();
}
//--------------HASTA AQUI TODO FUNCIONA OK------------------------
//--------------A PARTIR DE AQUI NO CARGA EL CLIENTE WEB-----------
//--------------EL NAVEGADOR SE QUEDA...CONECTANDO...--------------
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("Refresh: 1");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
if (Sensor3Data == 1) // Numero de sonda
{
client.print("SONDA: ");
client.println("</H2>");
client.println("<H1>");
client.print(m);
client.println(" %\t");
client.println("</H1>");
client.println("
");
client.println("<p />");
client.print("Temperatura: ");
client.println("</H2>");
client.println("<p />");
client.println("<H1>");
client.print(t);
client.println(" °");
client.print("C");
client.println("</H1>");
client.println("<p />");
client.println("<H2>");
client.print("Humedad: ");
client.println("</H2>");
client.println("<H1>");
client.print(h);
client.println(" %\t");
client.println("</H1>");
client.println("
");
client.println("<p />");
}
if (Sensor3Data == 6) // numero de sonda
{
client.print("SONDA: ");
client.println("</H2>");
client.println("<H1>");
client.print(m);
client.println(" %\t");
client.println("</H1>");
client.println("
");
client.println("<p />");
client.print("Temperatura Ext.: ");
client.println("</H2>");
client.println("<p />");
client.println("<H1>");
client.print(t);
client.println(" °");
client.print("C");
client.println("</H1>");
client.println("<p />");
client.println("<H2>");
client.print("Humedad Ext.: ");
client.println("</H2>");
client.println("<H1>");
client.print(h);
client.println(" %\t");
client.println("</H1>");
client.println("
");
client.println("<p />");
client.println("<p />");
client.println("<p />");
client.println("<H2>");
}
client.println("</html>");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
Serial.println("client disonnected");
}
//----------------------------------------------------
//----------------------------------------------------
//----------------------------------------------------
memset( StringReceived, 0, sizeof( StringReceived));
}
}
Muchas gracias de antemano, a ver si con un poco de suerte puedo destravarme.
saludos