Comunicação de dados RF entre dois computadores pessoais (Parte 22/23)

Comunicación de datos por RF entre dos computadoras personales (Parte 22/23)

Las computadoras personales generalmente están conectadas entre sí mediante cables de red en una red de oficina basada en LAN. Conectar dos computadoras mediante un cable USB o un cable RS – 232 para la comunicación de datos es una opción viable cuando los dos sistemas se colocan cerca uno del otro. Además, un único cable de red conecta una PC a otra PC. Si los sistemas informáticos de una oficina están diseñados para comunicar datos de forma inalámbrica, se puede ahorrar el coste de instalar un complicado cableado de red y toda la configuración parecerá más organizada y limpia. De esta manera, cualquier computadora se puede conectar a cualquier otra computadora sin ningún problema. Una sola computadora también se puede conectar fácilmente a cualquier cantidad de otras computadoras al mismo tiempo.

Este proyecto ilustró la comunicación de datos inalámbrica entre PC utilizando un módulo de RF de 434 MHz. El módulo de RF tiene un alcance de 50 a 60 metros y se puede extender a 300 a 350 metros usando una antena y aumentando la potencia de transmisión del módulo. Por lo tanto, la red de comunicación de datos inalámbrica basada en RF se puede instalar en cualquier oficina o lugar de trabajo pequeño. En el proyecto, como las PC no pueden interactuar directamente con el módulo de RF, están interconectadas mediante placas Arduino. La PC que funcionará como servidor de datos está conectada a un transmisor de RF a través de la placa Arduino, mientras que las PC que funcionarán como clientes de datos en la red de área local inalámbrica están conectadas a receptores de RF a través del Arduino. La comunicación de datos se ilustró utilizando el monitor serie en ambas PC.

Componentes necesarios

Sr. no. Componentes necesarios Cantidad
1 Módulo de recepción RF (434 Mhz) 1
dos Módulo de transmisión RF (434 Mhz) 1
3 Arduino para mini dos
4 Computadora de escritorio/portátil dos
5 Batería – 9V dos
6 tablero de prueba dos
7 Cables de conexión

Comunicação de dados RF entre dois computadores pessoais - diagrama de blocos

Fig. 1: Diagrama de bloques de una PC basada en Arduino para conexiones del circuito de comunicación de datos RF de PC

En el proyecto, un PC está configurado como servidor de datos y otro PC como cliente de datos. Muchas PC se pueden convertir en clientes de datos, pero solo una PC se convirtió en cliente en el proyecto con fines de demostración. El servidor fabricado en PC está conectado a una placa Arduino mediante un cable USB y un transmisor de RF interactúa con la placa Arduino para la transmisión de RF. Para interconectar el transmisor de RF con Arduino, su pin de entrada en serie (pin 2) se conecta al pin 12 de la placa Arduino y se conecta una antena al pin 4 del módulo transmisor de RF para ampliar el alcance.

En la PC cliente, la PC se conecta nuevamente al Arduino mediante el cable USB y la placa Arduino se conecta además a un receptor de RF para una operación similar a la del cliente. Para interconectar el receptor de RF con Arduino, el pin de salida en serie (pin 2) del módulo receptor se conecta al pin 11 de la placa Arduino del lado del cliente y se conecta una antena al pin 8 del receptor de RF para ampliar el alcance. VCC y tierra se proporcionan en los respectivos pines de los módulos Arduino y RF como se indica en sus hojas de datos.

Comunicação de dados RF entre dois computadores pessoais

Fig. 2: Prototipo de comunicaciones de datos RF de PC a PC basado en Arduino

¿Cómo funciona el circuito?

En el proyecto, los datos se transfieren desde el PC servidor al PC cliente. La PC servidor transfiere los datos a transmitir a la placa Arduino conectada mediante el cable USB. El programa de monitor serie se utiliza para transferir datos desde la PC a la placa Arduino. El Arduino tiene el código de programa para leer el carácter transferido a su buffer y transmitirlo en serie al módulo RF usando las funciones de la Biblioteca VirtualWire. Dado que el módulo de RF transmite solo un carácter a la vez, el búfer de caracteres recibido desde la PC debe almacenarse en una matriz en el código del programa Arduino del lado del servidor.

En la PC del lado del cliente, el receptor de RF detecta el búfer de caracteres transmitidos por RF y lo pasa en serie a la placa Arduino del lado del cliente. El código del programa en la placa Arduino del lado del cliente lee el búfer de caracteres y lo almacena en una matriz. A continuación, los elementos de la matriz se transfieren en serie mediante un cable USB al PC cliente. En la PC cliente, la matriz de caracteres recibida se muestra utilizando el programa Serial Monitor. También se puede desarrollar un programa basado en Java para transmitir y recibir datos desde puertos USB.

Comunicação de dados RF entre dois computadores pessoais

Fig. 3: Imagen que muestra las placas Arduino utilizadas para la transferencia de datos RF de PC a PC

guía de programación

En el Arduino del lado del servidor, primero se importa la biblioteca VirtualWire para facilitar la interfaz con el módulo de RF.

#incluir

Un LED está conectado al pin 13 para indicar que la transmisión en serie está en curso. Así, se declara una variable “ledpin” y se asigna al pin 13 del Arduino. La variable "MsgData" se declara para almacenar caracteres de lectura y la matriz "MsgcharAR" se declara para almacenar varios caracteres antes de la transmisión en serie. Se inicializan algunas variables globales: "longitud" para almacenar la longitud del mensaje, "datos_disponibles" para verificar la disponibilidad de datos y un contador "i".

Se llama a una función de configuración, donde ledpin se configura en modo de salida usando la función pinMode, la velocidad en baudios del sistema se establece en 9600 bits por segundo usando la función Serial.begin y la función vw_setup se usa para configurar la velocidad en baudios en serie RF. Transmisión de transmisión a 2.000 bits por segundo.

Se llama a una función de bucle, dentro de la cual la primera variable de longitud se inicializa en 0 y los datos en serie se verifican si están disponibles usando la función Serial.available. Si hay datos en serie disponibles, se leen usando la función Serial.read y se almacenan en la matriz MsgcharAR. El contador de longitud se incrementa y data_available se establece en 1 para lógica booleana. El bloque de código se repite en un bucle While hasta que los datos en serie estén disponibles.

Si hay datos disponibles, la variable del indicador data_available se deja con una configuración booleana de 1, luego el mensaje almacenado en la matriz MsgcharAR se envía en serie al búfer usando la función Serial.print.

El mensaje almacenado en el buffer debe enviarse en serie en RF. El led que indica transmisión en curso se enciende enviando una lógica ALTA al ledpin. El mensaje se envía en serie en RF utilizando la función vw_send, donde los caracteres del mensaje se convierten primero al formato de caracteres sin firmar. vw_wait_tx se utiliza para esperar hasta que se transmita el mensaje completo. Cuando finaliza la transmisión, el ledpin recibe una lógica BAJA para apagar el LED de la transmisión en curso.

data_available se establece en 0 y cada elemento de la matriz MsgcharAR se establece en 0 como valor predeterminado.

datos_disponibles = 0;

Esto finaliza el código Arduino del lado del servidor.

En Arduino del lado del cliente, el código del programa primero importa las bibliotecas estándar requeridas. La biblioteca VirtualWire se importa para permitir la recepción de datos en serie desde el módulo de RF.

El pin 13 donde está conectado el LED indicador de progreso de transmisión se asigna a la variable ledpin y se declaran dos variables: “Sensor1Data” para capturar el mensaje en su forma completa y “Sensor1CharMsg” para almacenar la representación de caracteres del mensaje que se mostrará.

Se llama a una función de configuración donde la velocidad en baudios de Arduino se establece en 9600 bits por segundo usando la función Serial.begin. El ledpin está configurado para emitir usando la función pinMode.

El módulo transmisor y receptor de RF no tiene un pin Push To Talk. Están inactivos cuando no hay datos presentes para transmitir o recibir respectivamente. Por lo tanto, vw_set_ptt_inverted(true) se utiliza para configurar la polaridad de pulsar para hablar y solicitar al receptor que continúe recibiendo datos después de recuperar el primer carácter. La velocidad en baudios para la entrada en serie se establece en 2000 bits por segundo mediante la función vw_setup. La recepción de datos se inicia utilizando vw_rx_start.

Se llama a una función de bucle dentro de la cual se declaran la matriz "buf" para leer el búfer en serie y la variable "buflen" para almacenar la longitud del búfer.

El búfer de caracteres se detecta usando la función vw_get_message; si está presente, se inicializa un contador "i" y el LED conectado al pin 13 se enciende enviando un ALTO en el pin 13 para indicar una detección exitosa del búfer de caracteres.

El búfer de caracteres se almacena en la matriz Sensor1CharMsg utilizando el bucle for con el contador inicializado.

data_available se establece en 0 y cada elemento de la matriz MsgcharAR se establece en 0 como valor predeterminado.

Esto finaliza el código Arduino del lado del cliente.

Código fuente del proyecto

###


 #incluir

 // LED

 constante int ledPin = 13;

 int DatosMensaje;

 //int Sensor2Datos;

 char MsgcharAR(40);

 longitud int, datos_disponibles;

 ent i;
 configuración nula {

 // Modos Pin

 // CONDUJO

 pinMode(ledPin,SALIDA);

 // para depurar

 Serie.begin(9600);

 // configuración de VirtualWire

 vw_setup(2000); // Bits por segundo

 }
 bucle vacío {

 longitud = 0;

 mientras (Serie.disponible)

 {



 MsgcharAR(longitud) = Serial.read;

 longitud++;

 retraso(100);

 datos_disponibles = 1;

 }
 // Convierte datos enteros a una matriz Char directamente

 // itoa(datos,Sensor1CharMsg,10);

 si(datos_disponibles == 1)

 {

 // DEPURAR

 Serial.print("Enviando datos: ");

 Serial.println(MsgcharAR);

 //Serial.println(" ");

 retraso(1000);

 // FINALIZAR LA DEPURACIÓN
 escritura digital (13, verdadero); // Enciende una luz para mostrar la transmisión
 
vw_send((uint8_t *) MsgcharAR, longitud);

 vw_wait_tx; // Espera hasta que desaparezca todo el mensaje

 escritura digital (13, falso); // Apaga una luz después de la transmisión

 retraso(200);

 para(yo = 0; yo < 40; yo++)

 {

 MsgcharAR (i) = 0;

 }
 }

 } // FINALIZAR bucle vacío...

 #incluir // LED

 intledPin = 13;

 // Sensores

 int Sensor1Datos;

 // Contenedor de transmisión RF

 char Sensor1CharMsg(4);

 configuración nula {

 Serie.begin(9600);

 // establece el pin digital como salida

 pinMode(ledPin, SALIDA);
 //Cable virtual

 // Inicializa IO e ISR

 // Requerido para DR3100

 vw_set_ptt_inverted(verdadero);

 // Bits por segundo

 vw_setup(2000);

 // Inicia la ejecución del PLL del receptor

 vw_rx_start;

 } // FINALIZAR la configuración nula
 bucle vacío {

 uint8_t buf(VW_MAX_MESSAGE_LEN);

 uint8_t buflen = VW_MAX_MESSAGE_LEN;

 bucle vacío {

 uint8_t buf(VW_MAX_MESSAGE_LEN);

 uint8_t buflen = VW_MAX_MESSAGE_LEN;

 // Sin bloqueo

 si (vw_get_message(buf, &buflen))

 {
 ent i;

 // Enciende una luz para mostrar el buen mensaje recibido.

 escritura digital (13, verdadero);


 
// Mensaje con una buena suma de comprobación recibida, descárgalo.

 para (i = 0; i < buflen; i++)

 {

 // Rellena la matriz Sensor1CharMsg Char con el correspondiente

 // caracteres del buffer.

 Sensor1CharMsg(i) = char(buf(i));

 }
 datos_disponibles = 0;

 para(yo = 0; yo < 40; yo++)

 {

 MsgcharAR (i) = 0;

 }

 }

 } // FINALIZAR bucle vacío... 

###

Diagramas de circuito

RF22_0

Vídeo del proyecto

Conteúdo Relacionado

En cada vehículo hay una red de sensores integrada...
El controlador del motor es uno de los componentes...
ESP32-CAM es un módulo de cámara compacto que combina...
La evolución de los estándares USB ha sido fundamental...
SCHURTER anuncia una mejora de su popular serie SWZ...
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Probablemente se haya encontrado con el término " resistencia...
Probablemente tenga un aislante de soporte si ha notado...
Probablemente haya visto un aislante colocado en postes de...
Probablemente hayas visto aisladores de grillete entronizados en postes...
Probablemente hayas experimentado situaciones en las que controlar un...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.