Вы находитесь на странице: 1из 8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

MODULORADIOFRECUENCIA
ARDUINO

Enestetutorialvamosavercmoutilizarunmduloderadiofrecuenciade433Mhz
Cmofuncionaelpardemdulos(TransmisoryReceptor)?
Eltransmisorseencargadeenviarunasealelectromagnticaaunafrecuenciadada
(433Mhz)yelreceptorqueseencargaderecibirlasealalamismafrecuenciaqueel
transmisor.
ParausarlosmdulosderadiofrecuenciautilizaremoslalibreraWire.hqueseencarga
degestionarlasfuncionesbsicasdecomunicacin,enviyrecepcindedatosentre
dispositivosderadiofrecuencia.
LacomunicacinentreambosmdulosfuncionadeformadecomunicacinSimplex,
estoquieredecirquelatransmisindedatosesenunsolosentido,adiferenciadela
comunicacinSerie,queporejemploesbidireccional.
Eltransmisoreselmodulopequeodeformacuadradamientrasqueelreceptoresel
msgrandeydeformarectangular.

http://www.omegageeks.com/moduloradiofrecuenciaarduino/

1/8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

Caractersticas.
Transmisor
Voltajedealimentacin

3v12v

CorrientedeOperacin

550mA

TasadeTransferencia

2.4KHz(Max9.6KHz)

Modulacin

AM

Frecuenciadeoperacin

433MHz

RangodeTransmisin

Segnelfabricantehasta1000m

Receptor
VoltajedeAlimentacin

5v

Modulacin

ASK

FrecuenciadeOperacin

433MHz

http://www.omegageeks.com/moduloradiofrecuenciaarduino/

2/8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

LibreraVirtualWire
Estosmdulossonmuydiversosytienemuchasventajas,unadeellasesquereciben
casicualquiersealdigital,siquisiramosusarlosenunPICoenunAVRpodramos
usarlosconcomunicacinUART.ArduinotieneunalibrerallamadaVirtualWireque
nosahorraproblemasconlacomunicacin.
FuncionesdelalibreraVirtualWire
FuncionesdeConfiguracin
vw_set_tx_pin(transmit_pin)
Defineelpindetransmisindedatos,denoindicaralgunolalibrerausaelpin12.
vw_set_rx_pin(receive_pin)
Defineelpinderecepcindedatos,denoindicaralgunolalibrerausaelpin11.
vw_setup(2000)
Inicialacomunicacinalavelocidadindicada.

FuncionesdeTransmisin
vw_send(message,length)
Funcinqueseencargadeenviardatosalojadosenlavariablemessageconlongitud
length.
vw_tx_active()
Funcinbooleanaquedevuelvetruesielmensajeseenvicorrectamente.
vw_wait_tx()
Generaeltiempodeesperanecesarioparapoderenviarotromensaje.

http://www.omegageeks.com/moduloradiofrecuenciaarduino/

3/8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

FuncionesdeRecepcin
vw_rx_start()
Funcinparacomenzarlarecepcindedatos.
vw_have_message()
Funcinbooleanaquedevuelvetruesielmensajeserecibicorrectamente.
vw_get_message(buf,&buflen))
Seencargadeleeryalmacenarenunbuffferelmensajerecibido,eltrminobuflen
esunamatrizdedatos
vw_rx_stop()
Detienelarecepcindedatos.

EjemploconArduino
Ahoraqueconocemoscomofuncionanlosmdulosderadiofrecuenciaylalibrera
VirtualWireexplicaremosunaaplicacinenArduinodondeenviaremosuncarcter
porelmonitorseriedichodatoserenviadoconnuestrotransmisoryalserrecibidopor
elotromodulo,podremoscontrolarelestadodeunasalidadigital,(Apagaryprenderun
Led).

http://www.omegageeks.com/moduloradiofrecuenciaarduino/

4/8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

Cdigoparaelcircuitotransmisor
/*
TransmisorModuloRadiofrecuencia
Programaquepermmiteenviardatospormedioderadiofrecuencia
paracontrolarsalidasdigitales
Creado2015
PorOMEGAGEEKS
modificado29deDiciembre2015
Esteejemploesdedominiopublico
Paramasinformacinvisitahttp://www.omegageeks.com/
*/
http://www.omegageeks.com/moduloradiofrecuenciaarduino/

5/8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

#include<VirtualWire.h>//incluimoslalibreriadeVirtualWire

char*msg="";//Punteroquenospermiteguardarelmensajeaenvia
charestado;//Variableparaescribirporelpuertoserie
voidsetup(){

vw_setup(2000);//Configuramoslavelocidaddetransimsiondedatos
Serial.begin(9600);//InicializamosvelocidadcomunicacinSerial
Serial.println("Transmisorencendidoyenespera");
}
voidloop(){
estado=Serial.read();//LeemostodoloqueescribamosenelpuertoSerie
if(estado=='A'){//Sienviamosuna"A"porelpuertoSerie
msg="A";//Lavariablemsgtomarelmismovalor
vw_send((uint8_t*)msg,strlen(msg));//

//Conelvw_send()enviamoselmensaje.El"uint8"eseltipodecarcteresque
//Elstrlen(msg)nospermitenospermiteenviar"msg"pormediodeunacadena
//seenviacarcterprocarcter.
}
if(estado=='B'){//Sienviamosuna"B"porelpuertoSerie
msg="B";//Lavariablemsgtomarelmismovalor
vw_send((uint8_t*)msg,strlen(msg));//Enviamosestemensaje
}
}//FindelPrograma

Cdigoparaelcircuitoreceptor
/*
ReceptorModuloRadiofrecuencia
Programaquepermmiterecibirdatospormedioderadiofrecuencia
http://www.omegageeks.com/moduloradiofrecuenciaarduino/

6/8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

paracontrolarsalidasdigitales
Creado2015
PorOMEGAGEEKS
modificado29deDiciembre2015
Esteejemploesdedominiopublico
Paramasinformacinvisitahttp://www.omegageeks.com/
*/
#include<VirtualWire.h>//incluimoslalibreriadeVirtualWire
intled=13;//Asigamoslavariable"led"alpin13
voidsetup(){
Serial.begin(9600);//InicializamosvelocidadcomunicacinSerial
Serial.println("Receptorencendidoyenespera");//MensajedeBienvenida
vw_setup(2000);//Inicializamoslavelocidaddetransmisiondedatos
vw_rx_start();//FuncinparaempezararecibirdatosporelPIN11
pinMode(led,OUTPUT);//Asignamoslavariableledcomosalida
}
voidloop(){
uint8_tmsg[VW_MAX_MESSAGE_LEN];//uint8_t=Byte
uint8_tlen=VW_MAX_MESSAGE_LEN;
if(vw_get_message(msg,&len)){//Sihayunmensaje

if(msg[0]=='A'){//Sielmensajerecibidoesuna"A"prendemos
digitalWrite(led,HIGH);
Serial.println("LedEncendido");
}

if(msg[0]=='B'){//Sielmensajerecibidoesuna"B"apagamos
digitalWrite(led,LOW);
Serial.println("LedApagado");
}
}
}//FindelPrograma

http://www.omegageeks.com/moduloradiofrecuenciaarduino/

7/8

10/16/2016

ModuloRadiofrecuenciaArduinoOmegageeks

Circuitosrealizados

http://www.omegageeks.com/moduloradiofrecuenciaarduino/

8/8

Вам также может понравиться