Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROYECTO
GRUPO: 1101
Objetivo: Elaborar un algoritmo para realizar una comunicación inalámbrica entre dos Arduinos
usando módulos de radiofrecuencia de bajo costo.
Marco teórico:
Los módulos RF de 433Mhz son muy populares por su bajo costo y fácil uso. Vienen en pareja,
emisor (FS1000A) y receptor (XY-MK-5V), el tipo de comunicación es simplex, es decir en un solo
canal y unidireccional, son de baja velocidad de transmisión pero para aplicaciones básicas son muy
útiles.
La frecuencia de trabajo es de 433MHz, debido a que es una banda de libre uso. Para utilizar estos
módulos basta con alimentarlos y conectar el pin de datos por un lado del Transmisor (TX) y en otro
el Receptor (RX). Para la programación no es necesario agregar ningún tipo de librería, ya que es un
proceso "transparente", por lo que el programa sería igual a usar una comunicación serial (UART)
entre 2 MCUs , sin embargo existen algunas librerías que nos ofrecen ciertas ventajas como:
verificación de errores, mejor transmisión, Direccionamiento, Enrutamiento, mallas, etc.
Material:
módulos RF de 433Mhz
2 arduinos mega
Jumpers
2 lap tops
Desarrollo:
El módulo empleado es un emisor y receptor RF Link que trabaja a 433Mhz, es un módulo muy
económico y tiene una cobertura bastante aceptable para la realización del proyecto.
El voltaje en el que trabaja es entre 2 y 12 voltios, por tanto ideal para utilizar con nuestro Arduino.
Para este tipo de comunicación solo basta con conectar el módulo RF al Pin RX o TX del Arduino
dependiendo si es transmisor y receptor.
Primero, usaremos un Arduino el cual transmitirá información a través del RF transmisor, el módulo
receptor está conectado a un conversor USB serial y visualizaremos los datos des de la pc.
La conexión es la siguiente:
Pegar figura
Fig. 2.1 Conexiones del emisor
Pegar figura
Para lograr una mejor transferencia se recomienda usar velocidades de 1200 o 2400 baudios o
inferiores.
A continuación se muestran los códigos tanto del emisor como del receptor.
#include <VirtualWire.h>
void setup()
{
Serial.begin(9600);
Serial.println("Emisor: Setup");
// Se inicializa el RF
vw_setup(2000); // velocidad: Bits per segundo
vw_set_tx_pin(2); //Pin 2 como salida para el RF
}
void loop()
{
const char *msg = "Hola mundo";
void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("Emisor: Setup");
// Se inicializa el RF
vw_setup(2000); // velocidad: Bits per segundo
vw_set_rx_pin(2); //Pin 2 como entrada del RF
vw_rx_start(); // Se inicia como receptor
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
//verificamos si hay un dato valido en el RF
if (vw_get_message(buf, &buflen))
{
int i;
Para visualizar los datos es necesario abrir el monitor serial del receptor.
Pegar figura
Existen varios métodos para validar información, una de las más fácil de implementar es en enviar el
mismo dato varias veces, por ejemplo 3 veces y en el receptor se debe validar verificando que se
reciba 3 veces el mismo dato. Otros métodos son la paridad, agregar tramas de validación, sumar los
bytes trasmitidos, etc.
Conclusiones:
Se podría concluir que sin antena el alcance es muy limitado aunque para aplicaciones simples, es de gran utilidad.
Con emisor y receptor con antena de cable rígido conseguimos el mayor alcance y una diferencia de 10 veces más.
Las antenas comerciales no brindan mejor rendimiento, al menos no para los módulos de 433Mhz
BIBLIOGRAFIA