Pages: [1] 2 3 4   Go Down
Author Topic: ethernet shield + RF 433Mhz  (Read 2812 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-confuse
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 smiley-roll

Code:
#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("<br/>");
            client.println("<p />");

            client.print("Temperatura: ");
            client.println("</H2>");
            client.println("<p />");
            client.println("<H1>");
            client.print(t);
            client.println(" &#176;");
            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("<br/>");
            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("<br/>");
            client.println("<p />");
           
            client.print("Temperatura Ext.: ");
            client.println("</H2>");
            client.println("<p />");
            client.println("<H1>");
            client.print(t);
            client.println(" &#176;");
            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("<br/>");
            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
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 720
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

el modulo rf433 lo debes hacer transmitir/recibir  por los pines 0 y 1 (tx/rx) y por la lan lo que quieras
« Last Edit: April 22, 2014, 01:02:42 pm by maxid » Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hola Maxid,

muchas gracias por contestar, he probado lo que me has dicho, he puesto a los sensores el pin 2 para TX y al arduino que recibe le he puesto el 3 para RX y sigue sin dar resultado.  Influye mucho los puertos para tx-rx? es decir antes tenia TX pin 4 en los sensores y pin 7 al que recibe RX y recibibe todo bien, incluso en el serial. Lo unico que no carga.
He probado los sketch de ejemplo de ethernet y funcionan bien, y a simple vista esta como aqui.

Alguna pista mas? smiley-confuse

Saludos!
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 720
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

en arduino uno por ejemplo los pines tx/rx estan compartidos con el usb. Con lo que para subir el sketch debes retirar las conexiones.
No se a que te referis con sensores y esos pines.

En el pin tx conectas el data del transmisor. y en el pin rx el data del receptor. y listo
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hola Maxid,

Me referia que al arduino uno que tengo en el display, solo tengo el RX (modulo receptor), puesto en el pin 3. Y en los otros dos arduinos los TX (modulos transmisores), puestos en el pin 2. Si es asi como me decias tampoco me funciona. Los datos llegan bien en el serial, pero no carga la web.

Por eso preguntaba si influye mucho el tema de pines tx-rx una vez que recibas datos y salen en el serial tambien.

Lo he hecho bien? smiley-roll

Saludos!
« Last Edit: April 16, 2014, 01:42:37 pm by gains » Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 720
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mejor que pongas un esquema del conexionado porque no te entiendo. creo estas mezclando cosas.
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hola Maxid,

si, creo que me explico mal con lo de tx y rx.

Quote
Me referia que al arduino uno que tengo en el display, solo tengo el modulo receptor, puesto en el pin 3. Y en los otros dos arduinos los modulos transmisores, puestos en el pin 2. Si es asi como me decias tampoco me funciona. Los datos llegan bien en el serial, pero no carga la web.
Asi creo que se me entiende mejor.

te adjunto un esquema.



El esquema del receptor es una ethernet shield, disculpa.

« Last Edit: April 16, 2014, 02:19:56 pm by gains » Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 720
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Te dije mal
Para transmitir el data en el pin tx
y para recibir en el pin rx
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok lo acabo de probar (RX pin 0 y TX pin1) y creo que peor, es decir, el modulo de transmision se queda siempre en transmision continua, al tener un walky que me sube a 433Mhz he podido comprobarlo, no me sale en el display asi y tampoco me carga la web  smiley-confuse




Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 720
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Porque no empiezas por algo simple
Enviar 1 caracter y ver que llegue al otro lado.
puedes poner un delay o un pulsador para iniciar la transmision.

el monitor serial captura lo que envias por el puerto y debiera salir por el modulo TX.
Logged

El que pregunta aprende, el que responde aprende a responder.

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si, asi es como fui haciendo hasta llegar a este obstaculo. Primero una cosa luego la otra, hasta que llegue a la ethernet.

Por serial por lo menos lo puedo ver todo bien de como se recibe por eso creo que el tema sondas(arduinos con transmisores) me funciona bien. Digo creo porque realmente no se si pueden influir mas cosas.



Si hago el sketch server simple de la libreria, funciona a la perfeccion, pero pasandolo al sketch que pretendo hacer funcionar, no hay forma de que el navegador cargue la web.  smiley-confuse
« Last Edit: April 16, 2014, 03:35:20 pm by gains » Logged

Offline Offline
Full Member
***
Karma: 12
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tal vez has mezclado códigos de cliente y servidor.
busca la documentación de la librería de tu tarjeta Eternet, por cierto estoy haciendo un proyecto parecido, con una sola estación.
ENC28J60 + DHT11 + 433MHZ 
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola Ehrja,

muchas gracias por contestar, pegare un vistazo a ver si es por mezclar codigos sin haberme dado cuenta  smiley-confuse
Animarte desde aqui con tu proyecto tambien!

Utilizo W5100 + 2x DHT11 + 2x 433MHZ + LCD 16x2 i2c

Saludos!

EDITO:
Acabo de revisarlo, y esta creo todo conforme el sketch del server, he probado incluso a borrar el contenido del codigo de los sensores para que solo me muestre un html en blanco, pero nada tampoco, se queda mi navegador en cargando...
Tengo que montar igual que el "servidor" de los ejemplos de la libreria ethernet verdad?.  Los ejemplos de la libreria si me funcionan, pero al pasarlo al sketch no smiley-slim
« Last Edit: April 20, 2014, 01:53:28 am by gains » Logged

Offline Offline
Full Member
***
Karma: 12
Posts: 209
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

EDITO:
Acabo de revisarlo, y esta creo todo conforme el sketch del server, he probado incluso a borrar el contenido del codigo de los sensores para que solo me muestre un html en blanco, pero nada tampoco, se queda mi navegador en cargando...
Tengo que montar igual que el "servidor" de los ejemplos de la libreria ethernet verdad?.  Los ejemplos de la libreria si me funcionan, pero al pasarlo al sketch no smiley-slim

Ok me he confundido un poco:

He comparado el tu código con el del ejemplo pero no he encontrado nada, lo revisare mas tarde.
//----
Los ejemplos si te funcionan verdad?
y al agregar el código del LCD y/o el del receptor inalambrico se queda esperando el navegador? 
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Disculpa Ehrja, tambien puede que yo no me explique bien  smiley-red

Si, los ejemplos funcionan todos bien, no hay problemas, inclusos ejemplos que hay en la red que hacen lecturas de los analogos tambien funcionan bien.
Exacto! es cuando agrego el codigo server para que me muestre los valores en un simple html, como multitud de ejemplos que hay.
El navegador se queda todo el rato..."cargando..." pero nunca llega a cargar.

El lcd y el serial me funciona bien, es simplemente cuando intento hacer un servidor web con las lecturas no me sale.

Muchas gracias por tomarte las molestias en revisarlo Ehrja

Saludos
Logged

Pages: [1] 2 3 4   Go Up
Jump to: