Cambiar canal de modulo rf

Buenas, soy principiante en tema y quisiera ver si podrían ayudarme con una duda. La tarea es enviar bits de un arduino a otro con un kit RF para accionar cargas, y después el otro arduino al leer algunos sensores transmita por un kit diferente de rf al primer arduino, mi problema es que no se como cambiar el canal de transmisión para que no choquen ambos kits debido a que manejan la misma frecuencia. Agradecería si alguien puede darme una pista sobre donde leer o cual comando podría ayudarme

Saludos para comunicacion bidireccional es mejor usar nRF24L01, asi usas el mismo canal y envias y recibes por el

Gracias por tu respuesta, con los modulos que "genericos" por asi decirlos de uso comun no se puede? esque ya cuento con ellos y para ver si se pueden aprovechar, Gracias

Hola. Yo también neceito usarlos, pero aún no he probado. En la placa del receptor aparecen impresas 3 frecuencias diferentes, pero no sé si se pueden cambiar. Creo que una manera de usar los TX y RXsin que interfieran es en modo half duplex. Cuando lo pruebe te comento.

Según leí se podía cambiar el canal mediante un código, pero no logro saber cual es

Si no se encuentra en español, busquen en inglés. Ya esta casi todo hecho.

Además como siempre digo, que cuesta decir (y no lo tomen a mal) estoy usando el modulo RF XXXXX comprado acá, con esta librería, ponen el código, y demás.

Asi tiran un dato tan genérico que no se puede ayudar. Yo no trabajo con esos módulos, si con el nRF24L01 pero mas allá de eso si dices.. uso tal módulo miro las especificaciones y puedo sugerirte.

Utilizo un modulo como este http://articulo.mercadolibre.com.mx/MLM-453833478-modulo-rf-emisorreceptor-433mhz-arduino-micro-hd-12e-ht-12d-_JM Y pues tengo algo de duda en cuanto solo el codigo de cambio de canal en emisor y receptor, ya que no se como se cambia eso.

Ahora si, ves que facil se hace cuando se explica detenidamente el problema Bueno este link te será de ayuda Esta librería VirtualWire es tu salvación http://www.airspayce.com/mikem/arduino/VirtualWire/ La libreria tiene ejemplos

acá como usarla (en inglés), busca en google en castellano http://www.airspayce.com/mikem/arduino/VirtualWire.pdf

Aca un ejemplo, esta en inglés pero podras seguir el código http://forum.arduino.cc/index.php/topic,44660.0.html

No veo un solo ejemplo donde se pueda cambiar la frecuencia a la que haces mención.

Muchas gracias por tu respuesta y aportaciones, no es cambiar frecuencia, solo el canal de transmisión para que no choquen ambos módulos en el envió de información por estar en "default" en el mismo canal

Donde dice (pasa el link) que tienes canales para cambiar.

Creo que sonara tonto, pero me lo dijo el vendedor del modulo. Me siento estafado xD

Encontre este codigo en un foro, pero no logro hacer que el receptor reciba algun dato

define BAUD_RATE 1200 // Tasa de transmision

// Definicion de bytes para el protocolo

define BYTE_SINC 0xAA // Byte de sincronia

define BYTE_INICIO 0x7E // Byte delimitador de inicio

define BYTE_DIR_RX 0x11 // Dirección asignada al nodo receptor

define TAM_TRAMA 4 // Cantidad de bytes en una trama

// Definicion de entradas/salidas

define LED_ACTIVIDAD 8 // LED indicador de recepcion

define LED_ACTUADOR 4 // LED que indica la activacion de un actuador

/* Declaracion de funciones */ void Recibir(); //Funcion de recepcion serial void Parpadear( int veces, int periodo); // Funcion para parpadear un LED

unsigned char estado_led = 0;

void setup(void) { /* Inicializar puertos digitales */ pinMode(LED_ACTIVIDAD, OUTPUT); pinMode(LED_ACTUADOR, OUTPUT);

/*Inicializar comunicacion serial */ Serial.begin(BAUD_RATE);

/* Parpadeo de inicio / Parpadear(2, 1000); } / Funcion principal del programa */ void loop(void) { Recibir(); // Funcion de recepcion } void Recibir() { // Variables para almacenamiento de bytes de la trama static unsigned char dir, dato;

// Ejecutar solo si se recibieron la cantidad minima de caracteres por trama if (Serial.available() >= TAM_TRAMA) { // Buscar un byte de inicio, si se lo encuentra procesar los bytes // siguientes (son parte de la trama) if (Serial.read() == BYTE_INICIO) { dir = Serial.read(); // Leer el byte de direccion // Verificar que la trama este dirigida a nosotros if (dir == BYTE_DIR_RX) { dato = Serial.read(); // Leer el byte de datos if (Serial.read() == (dir + dato)) // Verificar el checksum { /* En este punto podemos estar seguros que la informacion no contiene errores */ // Cambiar estado LED de actividad para visualizacion externa if(estado_led) digitalWrite(LED_ACTIVIDAD, HIGH); else digitalWrite(LED_ACTIVIDAD, LOW);

estado_led = ~estado_led;

/* Aplicar el bit correspondiente recibido en los datos para activar/desactivar el actuador. En este ejemplo solo estamos usando el bit 0 pero se podrian usar mas bits */ digitalWrite(LED_ACTUADOR, (dato & 0b00000001));

// Para usar más bits recibidos para el control de // actuadores: // digitalWrite(LED_ACTUADOR_1, ( (dato >> 1) & 0b00000001) ); // digitalWrite(LED_ACTUADOR_2, ( (dato >> 2) & 0b00000001) ); // digitalWrite(LED_ACTUADOR_3, ( (dato >> 3) & 0b00000001) ); // ... y asi sucesivamente } } } } }

y este el transmisor

define BAUD_RATE 1200 // Tasa de transmision

define BYTE_SINC 0xAA // Byte de sincronia

define BYTE_INICIO 0x7E // Byte delimitador de inicio

define BYTE_DIR_RX 0x11 // Dirección asignada al nodo receptor

define TAM_TRAMA 4 // Cantidad de bytes en una trama

define LED_ACTIVIDAD 13 // Pin de salida para LED de actividad

define PIN_SENSOR 4 // Pin de entrada para sensor digital

/* Declaracion de funciones */ void Transmitir(); //Funcion de transmisión serial void setup(void) {

pinMode(LED_ACTIVIDAD, OUTPUT); pinMode(PIN_SENSOR, INPUT); Serial.begin(BAUD_RATE);

}

void loop(void) { Transmitir(); // Funcion de transmision Transmitir(); delay(250); }

void Transmitir() { unsigned char dato_tx = 0x00; // Variable auxiliar para el byte a transmitirse dato_tx = dato_tx | digitalRead(PIN_SENSOR); Serial.write(BYTE_SINC); // Enviar el byte de sincronia Serial.write(BYTE_INICIO); // Enviar el byte delimitador de inicio Serial.write(BYTE_DIR_RX); // Mandar la direccion del receptor Serial.write(dato_tx); // Mandar el byte de dato Serial.write(BYTE_DIR_RX + dato_tx); // Calcular y mandar el checksum (direccion + datos) }

Prove con serialprint y el transmisor si envia dato, pero el receptor no recibe

Porque no usas la librería que te sugerí? VirtualWire la usa todo el mundo para esos transmisores-receptores. Esta probada, tiene todas las actualizaciones. Yo comenzaría por ahi. La descargas, agregas la librería a la carpeta Arduino->Libraries.-> VirutalWire

Y luego ejecutas el demo del link.

Buenas tardees, estoy realizando un proyecto con arduino nano y con nrf24l01, el detalle es que al enviar del transmisor un dato mayor a 255 el receptor realiza una resta por la disparidad de los bits del arduino nano y del nrf.. Como puedo solucionar este detalle??

el detalle es que al enviar del transmisor un dato mayor a 255 el receptor realiza una resta por la disparidad de los bits del arduino nano y del nrf..

que dices willies? en luegar de enviar un byte, envía dos, o envia un entero? Ademas, esto es un post viejo, crea el tuyo, pon el código y lo debatimos.