Pages: 1 2 [3] 4   Go Down
Author Topic: ethernet shield + RF 433Mhz  (Read 2742 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

Oh que bien ya encontramos el problema...
Quote
Virtualwire:
Caution: VirtualWire takes over Arduino Timer1, and this will affect the PWM capabilities of the digital pins 9 and 10.

Lo que dice maxid tiene sentido: utilizar el serial para mandar y recibir los datos por el inalambrico
te iba a sugerir eso en mi primer comentario, mirando lo que maxid decia, pero me estaba haciendo bolas comparando lo con virtualwire y no quería confundirte mas jejeje...
De hecho en mi proyecto para la parte que manda y recibe los datos utilizo el USART pero como estoy usando un attiny2313 el codigo es chiquititito, pero bueno nada que ver con el Serial de arduino.

---

es fácil utilizar el serial con los modulos inalambricos:

Arduino -   Receptor                           -----                 Arduino  -   Transmisor
   pin 0   -   data pin (rx)          ~~~~~~~~~~~      pin 1       -      data pin (TX)

Solo pones el pin de datos del receptor en el pin rx del arduino y lo mismo con el otro pero en el tx, y en el código utiliza Serial.print("algo ");  para mandar y el otro lo recibe con Serial.read();
 cierto maxid?
« Last Edit: April 22, 2014, 10:33:27 pm by ehrja » Logged

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

Hola Ehrja,
entiendo mas o menos lo que quereis decirme, empezare de nuevo, intentando enviar aunque sea un "hola" y a partir de ahi seguir.

Saludos!


EDITO:

Me he puesto manos a la obra, pero...primera y de frente!. He puesto como me habeis dicho el transmisor en el pin 1 TX, he subido el sketch con el cable del modulo transmisor desconectado, para que no de errores al compartir los pins con el USB, alimentandolo externamente. Una cosa que no me gusta como dije en un anterior post cuando lo probe por primera vez, es que se queda todo el rato de continuo el modulo transmitiendo. Cambio el delay, y retrasa el envio de informacion, se escucha, pero se queda todo el rato el modulo en portadora. una consecuencia de tenerlo asi seria que las baterias durarian mucho menos.
Bueno lo aceptamos y seguimos... smiley-wink

Este es el skecth que he subido al Arduino del transmisor:

Code:
int i = 3;
void setup(){
  Serial.begin(9600);
}
void loop() {
  Serial.println(i);

  delay(2000);
}

Es asi como decis? Asi me muestra en el serial el numero 3 todo el rato. Cada 2 segundos, entre la portadora que hace el modulo transmisor escucho como se envia la informacion, coincidiendo cada vez que me sale el numero 3 en el serial.
Entonces entiendo que esta enviando la informacion.

Paso al arduino con el modulo receptor.
Misma operacion, envio el sketch con el cable del modulo receptor desconectado para que no de error , luego lo conecto. En este Arduino lo pongo al pin 0 RX y lo alimento externamente tambien.

Este es el codigo del Arduino Receptor:

Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void setup() {
   lcd.begin(16, 2);  
  Serial.begin(9600);
  Serial.println("hola");
  pinMode(0, INPUT);
}

void loop()
 {
   int receptor = digitalRead(0);
   Serial.println(" mensaje: ");
   Serial.println(receptor);
   lcd.setCursor(0, 0);
   lcd.print("M=");
   lcd.print(receptor);
   delay(1000);
 }

Que he hecho mal? no llego a recibir nada  smiley-red

He probado con o sin pinMode, como salida y entrada, pero nada. Al quedarme sin ver el serial, no puedo ver que sucede, tengo que mostrarlo en el lcd, pero siempre sale el valor de 1 o 0, vamos que va mal.

Sigo mirando informacion.

Saludos!
« Last Edit: April 23, 2014, 02:10:00 am by gains » Logged

Palencia, Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 542
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola.
Para enviar bytes deberías usar Serial.write en el emisor y Serial.read en el receptor. Echale un vistazo a la referencia de Serial para ver todos los comandos disponibles.
Con un digitalread por sí solo no podrás leer un dado serializado.
Logged

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

Ok Noter gracias por tu respuesta, voy a mirarlo.  smiley-wink

Saludos!
Logged

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

Seria Serial.read() sin utilizar el pinMode() el Serial.begin() se encarga de configurar los dos pines Rx y Tx

eso de que se queda transmitiendo todo el rato, no me quedo muy claro.
Logged

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

Hola Ehrja,

te comento, tengo un walky que me sube a 433 Mhz, con lo cual puedo escuchar las señales. Con el VirtualWire cuando transmitia solo transmitia la informacion y paraba. Asi asi todas las veces que transmite solo hace la portadora necesaria para enviar la info.

Con el pin TX no sucede asi, hace portadora continua, y cada tiempo indicado en el delay envia la informacion, pero sigue haciendo portadora.

En la jerga HAMRADIO te diria que hace PTT continuo y cada tiempo envia la informacion.
Imaginatelo asi, tienes un walky y cada vez que hablas (en este caso envias la info) pulsas un boton (se llama PTT) no? Asi seria la forma correcta, hablas y sueltas el boton. Bien con el virtualwire me lo hace asi, que pasa cuando no utilizo el virtualwire y lo pongo directo al TX para hacerlo por serial, pues imaginate, quieres hablar por el walky, y SIEMPRE tienes el boton pulsado, pero hablas cada tiempo.  Con lo cual siempre estas emitiendo portadora, pero cada tiempo emites la info como modulacion por decirlo de algun modo. Si quiero ponerlo remoto, el consumo de bateria aumentara considerablemente, etc etc....

No se si me he explicado bien jejeje  smiley-razz

Saludos!
Logged

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

si creo que si te entiendo, la señal es mas limpia con el virtualWire que con el serial, nunca probe usar el virtualWire:

                      |                         señal                              |
 virtualWire     ---------------11010101-------------------
     Serial         &%&*%$$&#*11010101**&&$&%##%%$/

de hecho en los datos que recupere para mi proyecto menciona que hay que usar interupciones y un truco mandando un dato al inicio de la cadena, como un dato especifico que indica el comienzo de la transmicion, en medio los datos y al final un dato que le llaman checksum este es la suma de los datos y sirve para comprobar la integridad de la cadena, siempre escucha pero cuando escucha ese dato se interrumpe el codigo y se ejecuta el codigo dentro de la interrupcion, que seria para leer y analizar la cadena de datos, todo un reto, no solo por los interruptores(cosa fasil) pero por el continuo ruido que hay en la señal que es supongo es originada por el serial en reposo.

-conrazon ya me estaba interesando el virtualWire jeje, en la documentación mencionan un lado negativo del serial....

|                                       señal ejemplo con el serial                                     |
**/$&(/&#%$/(/(11111111 10101110 1100101 checksum (/)&%&%#$#((&$&($&

ahora recuerdo que en mi proyecto me quede pensando en una forma de evitar ese ruido y ahora mismo se me ocurrió una muy sencilla pero no se si funcione, utilizar un transistor o un mosfet para habilitar la coneccion entre el pin Tx y el transmisor, con otro pin lo habilitamos antes de mandar la señal y lo deshabilitamos al final, bueno es solo una idea.
 -que no creo que sea tan buena despues de todo, ahora que lo pienso tambien recibia ruido cuando el transmisor estaba apagado, bueno en fin lo dejo aquí "for the record".
Logged

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

Entonces si que puede que sea eso Ehrja, faltaria mirar eso, la forma de que no fuera de continuo.
Pero bueno esto cada vez se va liando mas, al final optare por desistir de la ethernet, comprar un lcd mas grande, y dejarlo todo para mas adelante o cuando comprenda mejor las cosas.

Sigo probando!

Saludos
Logged

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

No bueno yo tampoco quería des motivarte, yo en cambio le echaría un ojo clínico al virtualWire o esperar que maxid nos sugiera algo con el serial

saludos.
Logged

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

No no todo lo contrario Ehrja! aun que me dais pistas y voy buscando y probando cosas, sino creo que hace dias que no hubiera continuado jejeje De todas formas quiero agradeceroslo!

Saludos
Logged

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

Hola Ehrja,

te comento, tengo un walky que me sube a 433 Mhz, con lo cual puedo escuchar las señales. Con el VirtualWire cuando transmitia solo transmitia la informacion y paraba. Asi asi todas las veces que transmite solo hace la portadora necesaria para enviar la info.

Con el pin TX no sucede asi, hace portadora continua, y cada tiempo indicado en el delay envia la informacion, pero sigue haciendo portadora.

En la jerga HAMRADIO te diria que hace PTT continuo y cada tiempo envia la informacion.
Imaginatelo asi, tienes un walky y cada vez que hablas (en este caso envias la info) pulsas un boton (se llama PTT) no? Asi seria la forma correcta, hablas y sueltas el boton. Bien con el virtualwire me lo hace asi, que pasa cuando no utilizo el virtualwire y lo pongo directo al TX para hacerlo por serial, pues imaginate, quieres hablar por el walky, y SIEMPRE tienes el boton pulsado, pero hablas cada tiempo.  Con lo cual siempre estas emitiendo portadora, pero cada tiempo emites la info como modulacion por decirlo de algun modo. Si quiero ponerlo remoto, el consumo de bateria aumentara considerablemente, etc etc....

No se si me he explicado bien jejeje  smiley-razz

Saludos!

soy radio aficionado LU4HNE, el ptt es push to talk.

Me parece raro que transmita todo el tiempo, porque esos bichitos son en  AM y emiten solo con el bit alto, salvo tengan algun otro metodo de emision como manchester que el 0 y 1 siempre hay bits altos.
Haz la prueba de conectar solo sin arduino el transmisor en un protoboard +5, gnd y data conentado a una resistencia de 10k a gnd.
Y prueba de ponerlo en transmision manualmente con un pulsador, no sea que tenes ruido y emite por eso todo el tiempo y escuchas con tu walky.
Y no es mala idea poner un par de capacitores de desacople de 100nf y 10uf en la alimentacion.

Hay algunos modelos que tienen un 4to pin para habilitar la transmision, con lo que poner un mosfet pequeño que lo prenda antes de enviar no seria mala idea


* TXMANUAL.png (4.25 KB, 234x305 - viewed 25 times.)
« Last Edit: April 23, 2014, 10:02:06 am by maxid » Logged

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

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

Perdon, corregi el grafico por que sino no va a funcionar.

Otra cosa que puede ser que virtualwire tenga un protocolo, y este se encargue de leer datos validos y descartar el ruido.
Que para esto puedes usar librerias como messenger, hay muchos mas por ahi dando vuelta.
playground.arduino.cc/Code/Messenger

Puedes hacer tu protocolo esperando por ejemplo un valor b01111110 para seguir leyendo el resto y ese tambien puede ser el terminador.  trama 01111110 + datos + 01111110
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 eres radioaficionado entonces me habras entendido smiley-wink

Que bueno el circuito que me has pasado, lo acabo de montar y es asi como deberia funcionar mas o menos en el Arduino, cada vez que pulsas el boton hace portadora y deberia de enviar la info. Me lo guardo para cualquier invento jejeje
Al montarlo en el pin 1 TX siempre hace portadora, y cada tiempo (el que indico con el delay) manda los datos pero siguiendo la portadora continuamente.
Este modulo el transmisor FS1000A solo tiene 3 pins, el receptor si que tiene 4 pins, gnd, vcc, y 2 data.
Ok, buscare informacion sobre la libreria "Messenger" a ver si encuentro alguna pista mas.

Saludos!
Logged

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

Pero con el circuito manual emite portadora?
Con arduino sin enviar datos emite portadora?
Leiste con un multimetro si no hay tension?, recuerda que es cmos y con 2 voltios ya toma como 1.
Probaste de pones un capacitor de 10uf en la alimentacion del modulo?
Probaste de poner la resistencia entre el data y gnd con arduino? Esto te asegura el 0.
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,

Quote
Pero con el circuito manual emite portadora?
Si, emite portadora cada vez que pulso, cuando no no hace portadora.

Quote
Con arduino sin enviar datos emite portadora?
Si, con o sin datos solo poniendolo en el pin 1 TX ya se pone en portadora.

Quote
Leiste con un multimetro si no hay tension?, recuerda que es cmos y con 2 voltios ya toma como 1.
Probaste de pones un capacitor de 10uf en la alimentacion del modulo?
No a las dos cosas, buscare en el baul de trastos a ver si puedo sacar algun capacitor de 10uf.

Quote
Probaste de poner la resistencia entre el data y gnd con arduino? Esto te asegura el 0.
No, no lo he llegado a probar, en el esquema que lo tenia montado en el Arduino es como el equema que puse en el anterior post.

Saludos
Logged

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