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.
Circuito Final del Receptor |
Para Transmisor:
Vcc >>>>5V
Gnd >>> Gnd
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) );
}
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 );
}
}
}
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 );
}
}
}
No sean mala onda pongan todo el código porque no funciona, únanse a la comunidad de Software Libre
ResponderEliminarLOL, ya esta corregido, Saludos!
Eliminarya esta todo en orden!!!!!!!!! :)
ResponderEliminarbuenas, disculpa se podra hacer con solo una tarjeta arduino?
ResponderEliminar