Академический Документы
Профессиональный Документы
Культура Документы
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