Este transmisor de bajo costo nos permite realizar una comunicación inalámbrica para transmitir datos en un volumen moderado.
Algunas características son descritas a continuación:
# Frecuencia de transmisión : 433 MHz
# Consumo de corriente : < 40 mA
# Alcance : 100 m con una antena de 17 cm / 7 m sin antena
# Alimentación : 3 V a 12 V.
# Velocidad de transmisión : < 10 Kbps.
# Método de trabajo : ASK
# Poder de transmisión : 25 mW
# Modo de resonancia : SAW
Algunas características son descritas a continuación:
# Frecuencia de transmisión : 433 MHz
# Consumo de corriente : < 5.5 mA
# Alcance : 100 m con una antena de 17 cm / 7 m sin antena
# Alimentación : 5 V
# Velocidad de transmisión : < 9.6 Kbps.
# Método de trabajo : ASK / OOK
# Sensibilidad : -100 dBm (50 ohms)
Algunas características son descritas a continuación:
# Frecuencia de transmisión : 433 MHz
# Consumo de corriente : < 40 mA
# Alcance : 100 m con una antena de 17 cm / 7 m sin antena
# Alimentación : 3 V a 12 V.
# Velocidad de transmisión : < 10 Kbps.
# Método de trabajo : ASK
# Poder de transmisión : 25 mW
# Modo de resonancia : SAW
XD - RF - 5V
Este receptor de bajo costo nos permite realizar una comunicación inalámbrica para recibir datos en un volumen moderado.
Algunas características son descritas a continuación:
# Frecuencia de transmisión : 433 MHz
# Consumo de corriente : < 5.5 mA
# Alcance : 100 m con una antena de 17 cm / 7 m sin antena
# Alimentación : 5 V
# Velocidad de transmisión : < 9.6 Kbps.
# Método de trabajo : ASK / OOK
# Sensibilidad : -100 dBm (50 ohms)
USO DE LA LIBRERÍA "VIRTUALWIRE"
Para este tipo de comunicaciones en la plataforma Arduino, se usa la librería "VirtualWire" que permite tanto administrar la red como configurarla. Para más información puedes ir al siguiente link: "http://www.airspayce.com/mikem/arduino/VirtualWire/". Algunas de las funciones se explican a continuación:
# vw_set_tx_pin(pin_de_transmisión) : Configura el pin de transmisión. El pin por defecto es el 12.
# vw_set_rx_pin(pin_de_recepción) : Configura el pin de recepción. El pin por defecto es el 11.
# vw_set_ptt_pin(pin_de_permiso_para_transmisión) : Configura el pin de permiso para transmitir, o "push to talk". El pin por defecto es el 10.
# vw_set_ptt_inverted(true) : Configura la polaridad del pin de permiso o "push to talk".
# vw_setup(numero) : Inicia todas las configuraciones de la librería. Todos los pines deben estar configurados antes de usar esta función. La velocidad de transmisión por defecto debe ser 2000, pero puede usarse otra.
# vw_send(mensaje, longitud) : Transmite un mensaje como un arreglo de bytes, con una longitud correspondiente al número de bytes que son guardados en el arreglo a mandar.
# vw_tx_active() : Retorna verdadero si el mensaje ha sido mandado, o falso si el transmisor no está activo. Se puede usar después de haber mandado el mensaje para comprobar cuando la transmisión ha sido concluida.
# vw_wait_tx() : Espera a que el mensaje sea totalmente transmitido. Esta función generalmente puede ser usada después de la función "vw_send()".
# vw_set_rx_pin(pin_de_recepción) : Configura el pin de recepción. El pin por defecto es el 11.
# vw_set_ptt_pin(pin_de_permiso_para_transmisión) : Configura el pin de permiso para transmitir, o "push to talk". El pin por defecto es el 10.
# vw_set_ptt_inverted(true) : Configura la polaridad del pin de permiso o "push to talk".
# vw_setup(numero) : Inicia todas las configuraciones de la librería. Todos los pines deben estar configurados antes de usar esta función. La velocidad de transmisión por defecto debe ser 2000, pero puede usarse otra.
# vw_send(mensaje, longitud) : Transmite un mensaje como un arreglo de bytes, con una longitud correspondiente al número de bytes que son guardados en el arreglo a mandar.
# vw_tx_active() : Retorna verdadero si el mensaje ha sido mandado, o falso si el transmisor no está activo. Se puede usar después de haber mandado el mensaje para comprobar cuando la transmisión ha sido concluida.
# vw_wait_tx() : Espera a que el mensaje sea totalmente transmitido. Esta función generalmente puede ser usada después de la función "vw_send()".
# vw_rx_start() : Activa el proceso de recepción de datos. Esta función debe ser llamada antes de comenzar cualquier comunicación. Al momento de iniciar el proceso se genera una interrupción que monitorea la recepción de los datos.
# vw_have_message() : Retorna verdadero si el mensaje ha sido recibido. Esto es similar a la función "available" de la mayoría de librerías.
# vw_wait_rx() : Espera a que el mensaje sea recibido. Sólo retornará cando el mensaje sea recibido, en otro caso, puede seguir para siempre.
# vw_wait_rx_max(timeout_ms) : Espera a un mensaje, pero se rinde después de un tiempo determinado "timeout_ms". Retorna verdadero si el mensaje ha sido recibido, o falso si el mensaje no llega dentro del periodo de espera.
# vw_get_message(buf, &buflen) : Lee el último mensaje recibido. Esta función sólo debe ser llamada cuando el mensaje se sabe que ha sido recibido usando alguna de las funciones mencionadas anteriormente. "buf" es un arreglo donde el mensaje es copiado. "buflen" debe tener el porte máximo de ingreso de datos, y retorna además la cantidad de bytes que han sido copiados. La función devuelve verdadero si el mensaje verificado es correcto, o falso si el mensaje recibido parece que ha sido corrompido.
# vw_rx_stop() : Deshabilita el proceso de recepción.
# vw_have_message() : Retorna verdadero si el mensaje ha sido recibido. Esto es similar a la función "available" de la mayoría de librerías.
# vw_wait_rx() : Espera a que el mensaje sea recibido. Sólo retornará cando el mensaje sea recibido, en otro caso, puede seguir para siempre.
# vw_wait_rx_max(timeout_ms) : Espera a un mensaje, pero se rinde después de un tiempo determinado "timeout_ms". Retorna verdadero si el mensaje ha sido recibido, o falso si el mensaje no llega dentro del periodo de espera.
# vw_get_message(buf, &buflen) : Lee el último mensaje recibido. Esta función sólo debe ser llamada cuando el mensaje se sabe que ha sido recibido usando alguna de las funciones mencionadas anteriormente. "buf" es un arreglo donde el mensaje es copiado. "buflen" debe tener el porte máximo de ingreso de datos, y retorna además la cantidad de bytes que han sido copiados. La función devuelve verdadero si el mensaje verificado es correcto, o falso si el mensaje recibido parece que ha sido corrompido.
# vw_rx_stop() : Deshabilita el proceso de recepción.
A partir de lo descrito antes, desarrollamos una aplicación simple de lectura entre un transmisor y un receptor de la palabra "hola" por medio del puerto serial.
La conexión del transmisor es la siguiente:
# PIN 12 : Arduino UNO => ATAD : XD - FST
# GND : Los dos GND deben estar conectados.
# 5V : Los dos 5V deben estar conectados
El programa usado para este nodo es el siguiente:
# PIN 12 : Arduino UNO => DATA : XD - RF - 5V
# GND : Los dos GND deben estar conectados.
# 5V : Los dos 5V deben estar conectados
El programa usado para este nodo es el siguiente:
Autor: La conexión del transmisor es la siguiente:
# PIN 12 : Arduino UNO => ATAD : XD - FST
# GND : Los dos GND deben estar conectados.
# 5V : Los dos 5V deben estar conectados
El programa usado para este nodo es el siguiente:
/* PROGRAMA EMISOR DE PRUEBA CONEXION: DATA(XD - FST): Arduino Pin 12 GND: Conectar los GND del Arduino y XD - FST VCC: Conectar los 5V del Arduino y VCC del XD - FST El siguiente programa nos ayuda a realizar una tranmision de la palabra "hola" a un receptor por medio de un modulo XD-RF-5V (receptor) y un XD-FST (emisor), para luego ser visualizado el mensaje en la pantalla del puerto serial. Autor: Renato H. http://beetlecraft.blogspot.pe/ El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor */ #include <VirtualWire.h> // Libreria de manejo de comunicacion inalambrica const int tx = 12; // Pin asignado para la transmision const int led_tr = 13; // Variable de declaracion del pin correspondiente al led void setup() { pinMode(led_tr, OUTPUT); // Configuracion del pin 13 como salida digital vw_set_tx_pin(tx); // Pin de transmision vw_setup(4000); // Inicio de comunicacion a 2000 bps } void loop() { const char *mensaje = "hola"; // Puntero del char 'mensaje' digitalWrite(led_tr, true); // Enciende el led mientras transmite vw_send((uint8_t *)mensaje, strlen(mensaje)); // Hace salto a el espacio que ocupa el char con * // y le dice que encontrará algo de 8 bits con uint8_t vw_wait_tx(); // Espera al enviar todo el mensaje digitalWrite(led_tr, false); // Apaga el led cuando termina de transmitir delay(500); // Espera de 500 ms }La conexión del receptor es la siguiente:
# PIN 12 : Arduino UNO => DATA : XD - RF - 5V
# GND : Los dos GND deben estar conectados.
# 5V : Los dos 5V deben estar conectados
El programa usado para este nodo es el siguiente:
/* PROGRAMA RECEPTOR DE PRUEBA CONEXION: DATA(XD - RF - 5V): Arduino Pin 12 GND: Conectar los GND del Arduino y XD - RF - 5V VCC: Conectar los 5V del Arduino y VCC del XD - RF - 5V El siguiente programa nos ayuda a realizar una tranmision de la palabra "hola" a un receptor por medio de un modulo XD-RF-5V (receptor) y un XD-FST (emisor), para luego ser visualizado el mensaje en la pantalla del puerto serial. Autor: Renato H. http://beetlecraft.blogspot.pe/ El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor */ #include <VirtualWire.h> // Libreria de manejo de comunicacion inalambrica const int rx = 12; // Pin asignado para la recepcion const int led_tr = 13; // Variable de declaracion del pin correspondiente al led void setup() { pinMode(led_tr, OUTPUT); // Configuracion del pin 13 como salida digital Serial.begin(9600); // Inicio de comunicacion serial a 9600 bps vw_set_rx_pin(rx); // Pin de recepcion vw_setup(4000); // Configuracion de la recepcion a 2000 bps vw_rx_start(); // Comienzo de la comunicacion } void loop() { uint8_t mensaje[VW_MAX_MESSAGE_LEN]; // Variable de almacenamiento de datos uint8_t mensajelen = VW_MAX_MESSAGE_LEN; // Maximo numero de bytes en el mensaje if (vw_get_message(mensaje, &mensajelen)){ // Si se ha recibido datos con el formato deseado digitalWrite(led_tr, true); // Enciende el led mientras recibe String mensaje_salida = ""; // Variable de almacenamiento para conversion de datos for (int i = 0; i < mensajelen; i++){ // Lectura de datos recibidos mensaje_salida += (char)mensaje[i]; // Llena el string generado con los datos recibidos } Serial.print("Mensaje: "); // Envio del dato convertido al puerto serial Serial.println(mensaje_salida); delay(200); // Espera de 200 ms digitalWrite(led_tr, false); // Apaga el led cuando termina de recibir } }El resultado en el puerto serial se muestra a continuación:
No hay comentarios:
Publicar un comentario