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

HOLA
he visto solo algunos errores en el HTML al abrir y cerrar etiquetas.

client.println("Refresh: 1");
En el ejemplo esta linea esta a 5 y tu la tienes a 1, los comentarios dicen que se refresca cada 5 segundos y en tu caso supongo que cada segundo se refresca, posiblemente por eso se queda en cargando...

Serial.println("new client");
Unas lineas antes hay un punto de debug si el serial muestra "new client" entonces el cliente(el navegador) ha accedido al servidor (el arduino) y el navegador le manda una petición http y el final de esta es una nueva linea ("\n") esta peticion tambien se muestra en el serial con las siguientes lineas
 char c = client.read();
          Serial.write(c);

//------------------------
El serial es importante para hacer debuging( buscar problemas en codigo del arduino) si no aparece "new client" cuando entras a la ip del arduino entonces el problema esta antes, si si aparece y se queda en cargando ajusta esa linea del Refresh a 5 y me cuentas que pasa.
Logged

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

hola Ehrja,

muy buena explicacion, ahora he entendido como funciona un poco mas! Gracias!

Lo de "client.println("Refresh: 1");" lo tengo en 1 de tantas pruebas que hice, cambie varias veces 1 , 2, 5.... por si tambien fuera eso.
Pero nada, he puesto a 5 segundos y sigue "cargando"...

En el serial, solo me aparece como la captura que agregue. Solo me aparece "server is at..." y empieza a mostrar las temperaturas, por mas que intento acceder a la web, nunca me muestra en el serial "new client". He probado el ejemplo de "server" de la libreria ethernet y efectivamente al acceder en el navegador en el serial SI me muestra que la conexion fue buena:

server is at 192.168.1.177
new client
GET / HTTP/1.1
Host: 192.168.1.177
.......

esa respuesta en el serial, en este sketch, no me sale nunca, es decir nunca llega a conectar el cliente.

Entonces puede que tenga el error antes de la parte de la ethernet?

Saludos!
Logged

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

Ya me lo había imaginado que lo habrías cambiado a propósito....
pero al menos debería mostrarte:

server is at 192.168.1.177

//-----
Me párese que también podría haber un conflicto entre los códigos que mezclaste y como los mezclaste, me explico:

tu código tiene tres partes principales:

1.- recibir los datos
2.-mostrar los datos en el lcd
3.- mostrarlos en el navegador

en ese mismo orden de ejecución y de importancia, pero solo los primeros dos tienen la posibilidad de ejecutarse (eso esta claro) y en ejecución ocupan gran parte del ciclo loop mientras que a la parte del servidor solo le queda un poco de tiempo para mirar si hay una nueva conexión con la siguiente condición:

  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
....// codigo que no se ejecuta
}

Si miras en el ejemplo del Ethernet esta condición es la única que se ejecuta en el loop hasta que recibe una petición http, con lo cual siempre esta vigilante a una nueva petición http,
tal vez si actualizas manual mente cada 2 segundos te aparezca algo en una de esas, sin embargo hay que mejorar el código, definitivo.

cuéntame si te aparece algo y si al menos en el serial recibiste esto: "server is at 192.168.1.177" al inicio
me parece que también ya has intentado eso jeje pero bueno seguimos en contacto.
actualizando varias veces seguidas tal vez obtengas una respuesta en el serial aunque no veas algo en el navegador:

new client
GET / HTTP/1.1
Host: 192.168.1.177
.......

//*------
aunque no parezca hemos avanzado descartando cosas, sigue adelante porque esta parte es la mas divertida....
Logged

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

hola Ehrja,

lo mas seguro es lo que dices, habra un conflicto de codigos, realmente son parches medio adaptados que al final he ido haciendo funcionar, pero claro cuando quieres un poco mas ya no sirve. Divertida? jejeje ufff! llevo unos dias con esto que saco humo!  smiley-lol Pero estoy aprendiendo un monton y ya no todo me suena a raro lo que leo.

Al grano...

He ido haciendo mas pruebas, separando codigos por partes, es decir, he quitado toda la parte que me muestra el LCD dejando solo la parte de la recepcion de los datos y el servidor web. Asi tampoco llega a cargar el navegador. Otra prueba ha sido clickar rapido a refrescar varias veces al navegador pero no llega hacer el "new client". He probado en varios valores refresh y nada.

Otra prueba que he hecho ha sido jugar con "delay()" para ir retrasando el void loop, creo que no se hace asi, obteniendo el mismo resultado. He subido mas el tiempo a los sensores remotos para que envien la informacion a unos 20 segundos, por si fuera tambien. He quitado la parte del codigo en la que modifico la interpretacion del serial de los valores obtenidos para dejar solo receptor-lcd-servidor y con los valores a secas. Nada smiley-confuse

He visto otra forma que hace la gente para mostrar los valores (analog) es con tarjeta SD guardando un .txt y luego es el servidor el que lee los datos de ese archivo. Realmente se me escapa de mis conocimientos, pero, seria mejor solucion? quizas no tendrian conflictos entre partes del sketch?. Quedando... receptor - lcd - sd - servidor ... o algo parecido?
Pero pienso que si no sale asi de simple como para complicar mas el asunto  smiley-confuse

 Sigo haciendo mas pruebas.

Saludos!


 
Logged

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

Hola

Bueno parece que ya has hecho casi todas las pruebas de rigor aunque usar el delay() en este caso empeora la cosa, tal vez falta enviar datos falsos, eliminar la parte del receptor inalambrico y cargar en las variables datos falsos por ejemplo:
h=88;
t=24;
m=...;

de modo que no se use el virtualwire ni el receptor inalambrico, para también descartar eso.
//------------------------
mañana intentare ayudarte a re acomodar el código, partiendo del ejemplo del servidor a ver si le doy.
//------------------------
animo ya mero queda
saludos.
« Last Edit: April 22, 2014, 12:50:48 am by ehrja » Logged

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

Hola Ehrja,

ok entiendo lo que quieres decirme  smiley-wink , probare a cargar datos falsos e ir separando partes del sketch, pero partiendo sin VirtualWire.
Pues, podria ser que fuera conflicto con el virtualwire porque es lo ultimo que no he descartado aun del codigo jejeje

Muchas gracias por darme otra pista, luego lo probare y te cuento.

Saludos

//-------
EDITO:
Acabo de hacer la prueba de descartar el VirtualWire, y me ha funcionado a la perfeccion sin el!! Exceptuado errores como me dijiste de html, pero eso ya lo mirare mas adelante.
He quitado el virtual, he cambiado los valores que me has dicho, y sin tocar nada, funciono. Ahgora si que veo en el serial:

server is at 192.168.1.177  //--- ya lo veia tambien con el virtualwire

new client                            //--- pero todo esto no con virtualwire
GET / HTTP/1.1
Host: 192.168.1.177
User-Agent: Mozilla/5.0.......

client disonnected            //--- hasta aqui

Humidity: 88 %   Temperature: 24 *C
Sonda:1                                


Bien! es un paso mas! ahora por lo menos algo mas tranquilo me quedo, esta todo el sketch medio bien, funciona  smiley-red Aunque lo que falla entonces es lo mas importante del sketch jejeje pero ahora ya sabemos de donde viene el error, del VirtualWire. No se si se dice asi pero, podria ser que el virtual ocupara el serial y no dejase al servidor coger los datos y por eso se queda todo el rato en cargando porque el serial esta ocupado?, y el lcd si puede?.  smiley-slim

En cuando en cuando se "marea" el servidor y saca cosas raras, le doy a refrescar al navegador, algunas veces da error de conexion y algunas veces vuelve a la normalidad, o si reinicio el Arduino vuelve a funcionar bien, puede ser del codigo que esta un poco escrito a lo bruto verdad?


gracias Ehrja!!  smiley-wink



« Last Edit: April 22, 2014, 02:43:04 am by gains » Logged

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

Primero que nada, te fijaste en la documentacion de virtualwire y de la libreria de ethernet?
Lei que la virtualwire usa el timer2 y no puede funcionar con servos. Se que no tiene nada que ver, pero debe haber algo que se interponen y por eso no funcionan.
Yo usaria los pines tx/rx con seria.Begin() y no con virtualwire, la que dejaria para cuando ya no tienes mas puertos por hardware disponibles.
Incluso usando estos pines puede monitorearlos desde la terminal
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,

creo, que entiendo lo que me quieres decir.
He revisado de nuevo las docuentaciones de la Ethernet y del Virtualwire y creo que lo que me quieres decir es que tanto como el virtualwire como la ethernet, utiliza algun pin comun y por eso puede crear conflictos, cierto?

Virtualwire:
Caution: VirtualWire takes over Arduino Timer1, and this will affect the PWM capabilities of the digital pins 9 and 10.

Ethernet:
    D0 - Unused
    D1 - Unused
    D2 - Connects the INT pin of the W5100
    D3 - Unused
    D4 - Used for SPI Chip Select
    D5 - Unused
    D6 - Unused
    D7 - Unused

    D8 - Unused
    D9 - Unused
    D10 - Used for SPI LED
    D11 - Used for SPI MOSI
    D12 - Used for SPI MISO
    D13 - Used for SPI SCK

    D14(A0) - Unused
    D15(A1) - Unused
    D16(A2) - Unused
    D17(A3) - Unused
    D18(A4) - Unused
    D19(A5) - Unused


Seria el problema de todo esto por el pin 10?
He visto en los esquemas de la documentacion del virtualwire que conectan el modulo de transmision y el de receptor a los pines 11 y 12. Pero en la red cada uno los ponia diferentes.


Saludos!
Logged

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

por un lado puede ser:
    D2 - Connects the INT pin of the W5100
    D4 - Used for SPI Chip Select
    D10 - Used for SPI LED
    D11 - Used for SPI MOSI
    D12 - Used for SPI MISO
    D13 - Used for SPI SCK
todos estos pines son exclusivos de la ethernet, no puedes poner nada mas alli, ni hardware ni software.

En la documentacion por defecto usa los pines 12 y 11, por lo que NO PUEDES USAR LAS 2 COSAS A LA VEZ. Debes poner otros pienes en la configuración
por ejemplo:
  vw_set_tx_pin(5);
  vw_set_rx_pin(6);

Dicho esto, comento y pregunto, ¿Para que usar virtualwire si tienes el UART del arduino? por lo que vi solo lu usas para debug.
Pues no te hagas problema, usalo como debug y a la vez transmite cuando esté funcionando saca los println de debug y yá.
o usa condicionales

#if defined(DEVMODE)
    Serial.begin(115200);
    Serial.print("Devmode ON");
#else
  // Setup the LCD
    myGLCD.InitLCD();
#endif

https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-17/recipe-17-6
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, lo de los pins de la ethernet lo tengo claro, ahora me he fijado e incluso en la placa ethernet lo indica con los numeros pins subrayados. De momento no necesito ninguno de ellos, si necesitara mas pins tengo una MEGA en la recamara jejeje.

Los pins de los modulos tx y rx no hay problema tampoco, lo tengo, los Arduinos con el modulo transmisor en el pin 4 y en el otro Arduino que es el receptor tengo en el pin 7.

El usar el VirtualWire no es mas porque vi muchos ejemplos y al probarlo me funciono y parti de ahi y de otros ejemplos como lectura del DHT11 etc... Realmente como dije son parches de aqui y alla, como he podido he hecho funcionar hasta aqui  smiley-red
Tambien vi algun ejemplo con RCswitch pero no llegue a probarlo porque parecia mas destinada esa libreria a otras cosas.

Utilizar el UART del Arduino? ahi si que me pierdo la verdad, no se como.

Mirare lo de las condicionales que me has pasado.

Saludos!


Logged

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

Sin Ofender creo estas mezclando mucho codigo sin leer primero, el copy/paste no sirve si no lo estudias

En este fragmento lo demuestra

Code:
void setup() {
  lcd.begin(16, 2);  //inicializas el lcd para que use el i2c
  Serial.begin(9600); // inicializas el UART por hardware de arduino
  Ethernet.begin(mac, ip); //inicializas la ethernet
  server.begin(); //comienza a leer los paquetes
  Serial.print("server is at "); // imprimes por puerto serial esta palabra
  Serial.println(Ethernet.localIP()); imprimes la ip local que le asignaste o se asignó por dhcp.

Sí estas usando el Serial por hardware de arduino. Por eso usar un serial por software cuando no te hace falta es ocupar memoria al vicio.
Quita el virtualwire y conecta el modulo al pin tx y listo, lo que transmitirá será todo lo que pongas en los Serial.print(), y tambien puedes capturarlo en el monitor serial.





 

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

No no me ofendes Maxid, todo eso ya lo se yo pero poco a poco voy aprendiendo. Parto de "0" en programacion, solo para que te hagas una idea.

Tambien hago en el codigo comentarios con // pero de lo que yo ponga  a lo que signifique en realidad...... Aqui puse el sketch sin nada por no liar mas la perdiz. Pero suelo ponerlo para ir enterandome en mis sketch.

Vale quito el virtualwire, como hago para que transmita la temperaruta capturada del DHT11? y por otra parte, como hago para que me muestre el receptor los datos que me envia el transmisor?


Saludos
Logged

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

para el dth11 usas esta libreria
http://playground.arduino.cc/main/DHT11Lib

con Serial.available() sabes si hay datos para leer, despues los lees y los usas.

aca tienes toda la docmentacion: http://arduino.cc/en/Reference/HomePage
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 Maxid, me he quedado igual  smiley-red disculpa!
La documentacion esta muy bien si sabes lo que lees pero sino es como leer en extraterrestre, por eso poco a poco ire empapando informacion.

seguire probando sin virtualwire a ver si lo consigo a lo que te refieres. Gracias por la pista!

Saludos!
Logged

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

mas tarde te respondo con tiempo sobre lo que posteaste en el comienzo
Logged

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

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