lunes, 10 de noviembre de 2014


Apagado y encendido de Leds mediante Transmisor y Receptor de radiofrecuencia a 433 MHZ


Introducción:

El término radiofrecuencia, también denominado espectro de radiofrecuencia o RF, se aplica a la porción menos energética del espectro electromagnético, Aunque se emplea la palabra radio, las transmisiones de televisión, radio, radar y telefonía móvil están incluidas en esta clase de emisiones de radiofrecuencia. Otros usos son audio, vídeo, radionavegación, servicios de emergencia y transmisión de datos por radio digital.

En esta ocasión emplearemos la radiofrecuencia durante la siguiente practica en la que involucraremos un emisor y un receptor para generar la conexión mediante 1 Emisor y un Receptor de 433 MHertz y obtener como resultado el encendido y apagado de los Leds.


Objetivo:

Diseñar un sistema que implemente un transmisor y receptor de radiofrecuencia a 433 MHZ el cual permita controlar el encendido y apagado de un conjunto de Leds entre 2 tarjetas de Arduino.

Marco Teórico:

Para el desarrollo de esta práctica emplearemos los siguientes componentes:
  • ·         2 tarjetas Arduino
  • ·         1kit Emisor y Receptor 433 MHZ
  • ·         Leds
  • ·         2 Protoboard
  • .         Resistencias 470 Ohms 


Arduino:

Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa.


Transmisor Y Receptor 433 MHZ:

Su uso es muy popular para el control remoto. Estos pequeños módulos de Radio Frecuencia suelen ser utilizados comúnmente, para controlar como Robots, enviar datos o para control de actuadores.

Especificaciones:

Transmisor:

·         Voltaje de Trabajo: 3v-12v
·         Consumo de corriente: Menos de 40mA
·         Modo de modulación: ASK
·         Frecuencia: 315MHz  Or  433MHz 
·         Poder de Transmisión: 25mW (315MHz at 12V)
·         Error de frecuencia: +150kHz (Max)
·         Velocidad: menor que 10Kps
·         Alcance: Este módulo transmite arriba de 90m en área abierta

Receptor:

·         Voltaje de Trabajo: 5 VDC +0.5V
·         Consumo de corriente: Menor que 5.5mA
·         Método de trabajo: OOK/ASK
·         Frecuencia: 315MHz  O  433MHz
·         Ancho de banda: 2Mhz
·         Sensibilidad: - 100dBm(50 Ω) 
·         Velocidad de transmisión: menor 9.6Kps (en 315Mhz y -95dBm)
·        Alcance: Puedes ocupar una antena opcional para incrementar la eficiencia de su                    comunicación inalámbrica, con un solo cable es más que suficiente.



Conexiones:

Para el Receptor: 


Vcc>>>>5V

Gnd>>>Gnd

Circuito Base "Receptor"

Circuito Final del Receptor


Para Transmisor:

Vcc >>>>5V 
Gnd >>> Gnd
Circuito Base "Transmisor"

Para el uso de estos modulos debemos implementar la librería de Arduino Virtual Wire
VirtualWire es una librería de Arduino que proporciona funciones para enviar mensajes cortos, sin retransmitir o enviar mensaje de acuse de recibo, es poco parecido al protocolo UDP a través de Wi-Fi, utilizando ASK (modulación por desplazamiento de amplitud). Es compatible con varios transmisores de radio de bajo costo y receptores.
Esta libreria le permite enviar y recibir datos "byte" y una cadena sencilla.
Código de la práctica:

 Parte A "TRANSMISOR"


#include <VirtualWire.h>//Se importa la librería

int pinRojo = 2;
int pinVerde = 3;
int pinTx = 4;

void setup(){

  pinMode(pinRojo,INPUT);
  pinMode(pinVerde,INPUT);

  vw_set_tx_pin(pinTx);

  vw_setup(2000);

  Serial.begin(9600);

}

void loop(){

  delay(500);

  int estadoRojo = digitalRead(pinRojo);

  int estadoVerde = digitalRead(pinVerde);

  char *mensaje = "VACIO";


  if ( (estadoRojo ==  HIGH ) && (estadoVerde == HIGH) ){

    mensaje = "A";
  }else if ( (estadoRojo == LOW) && (estadoVerde == LOW) ){
    mensaje = "N"; 
  }else if ( (estadoRojo == HIGH) && (estadoVerde == LOW) ){
    mensaje = "R"; 
  }else if ( (estadoRojo == LOW) && (estadoVerde == HIGH) ){
    mensaje = "V";      
  }
  
  Serial.print("Enviado ");
  Serial.println( mensaje );

  vw_send( (uint8_t *) mensaje , strlen(mensaje) );   

}


 Parte B "RECEPTOR"

#include <VirtualWire.h>//Se importa la libreria
int pinRojo = 2;
int pinVerde = 3;
int pinRx = 4;

void setup(){

  pinMode(pinRojo,OUTPUT);
  pinMode(pinVerde,OUTPUT);

  Serial.begin(9600);


  vw_set_rx_pin(pinRx);

  vw_setup(2000);
  vw_rx_start();
}

void loop(){


  uint8_t mensaje[VW_MAX_MESSAGE_LEN];

  uint8_t longitud = VW_MAX_MESSAGE_LEN;

  if (vw_get_message( mensaje , &longitud ) ){    

    Serial.print("Recibido ");
    Serial.println( mensaje[0] ); 
    
    if( mensaje[0] == 'A' ){
       digitalWrite( pinRojo , HIGH );
       digitalWrite( pinVerde , HIGH );       
    }else if( mensaje[0] == 'R' ){
       digitalWrite( pinRojo , HIGH );
       digitalWrite( pinVerde , LOW );             
    }else if( mensaje[0] == 'V' ){
       digitalWrite( pinRojo , LOW );
       digitalWrite( pinVerde , HIGH );             
    }else if( mensaje[0] == 'N' ){
       digitalWrite( pinRojo , LOW );
       digitalWrite( pinVerde , LOW );             
    }
  } 
}




4 comentarios:

  1. No sean mala onda pongan todo el código porque no funciona, únanse a la comunidad de Software Libre

    ResponderEliminar
  2. buenas, disculpa se podra hacer con solo una tarjeta arduino?

    ResponderEliminar