Radioino(Transmisores de Audio)
Somos el grupo 12 de la asignatura Sistemas Empotrados del campus de Móstoles, como proyecto final hemos decidido realizar un dispositivo de transmisión y recepción de audio tipo Walkie-Talkie.
Autores del Proyecto:
- Jose Manuel Hernando Sánchez
- Álvaro Raso Pasero
- Sergio Santamaría Tejedor
Introducción
Nuestro proyecto, llamado Radioino, consistirá en dos dispositivos conectados entre sí por dos antenas de radiofrecuencia. Ambos tendrán las mismas funcionalidades, pero dependiendo de la configuración que se les asigne al principio uno hará de transmisor de audio y otro de receptor.
Las aplicaciones de Radioino son varias. Desde un uso didáctico para explicar cómo funcionan las ondas de radio a través de un dispositivo fácil de usar, hasta un instrumento para vigilar a bebés. Otro tipo de aplicación sería su uso para transmitir comunicados a través de un altavoz desde una sala alejada, como en un patio de un colegio o para emitir comunicados en una zona de trabajo.
Como Funciona:
Al encenderlos, empezará a parpadear un diodo LED de color verde. Esta secuencia durará 10 segundos exactos. Si mantenemos el botón del Radioino presionado, se configurará en modo transmisor y su luz dejará de parpadear para permanecer encendida, entonces podemos hablar por el micrófono para que transmita nuestra voz.
Por otra parte, si dejamos que pasen los 10 segundos sin realizar ninguna acción, nuestro Radioino pasará a ser receptor y el LED se apagará, entonces escucharemos lo que se diga por el micrófono del otro dispositivo por el altavoz que tenemos conectado en el receptor.
Materiales
Material | Cantidades |
Arduino UNO (o similar) | 2 |
Antena NRF24L01 | 2 |
Micrófono KY-038 | 2 |
Puerto Jack 3.5mm (TRS) | 2 |
Diodo LED | 2 |
Resistencia 220 ohms | 2 |
Pulsador | 2 |
Protoboard | 2 |
Caja de Cartón | 2 |
Pilas 9v | 2 |
Visión del Circuito
Código
//Librerias añadidas
#include <SPI.h>
#include <RF24Audio.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "printf.h"
//Variables enteras para no recordar los pines donde el boton y el LED están conectados
int boton = 6;
int led = 5;
//Inicializamos la antena y la librería de transmisión de audio con sus respectivos pines
RF24 radio(7,8);
RF24Audio rfAudio(radio,0);
void setup()
{
//Iniciamos el monitor serial e indicamos el modo entrada/salida de los pines
Serial.begin(115200);
pinMode(boton,INPUT);
pinMode(led,OUTPUT);
//Bucle que hace parpadear el LED indicando la secuencia de inicio
for(int ii=0;ii<10;ii++){
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
}
digitalWrite(led,LOW);
//Si el botón está pulsado iniciamos en modo transmisor
if(digitalRead(boton)){
transmit();
}else{//Si no pulsamos iniciamos en modo recepción
receive();
}
}
//Funcion receptor
void receive(){
//Iniciamos la libreria printf
printf_begin();
//Iniciamos la antena
radio.begin();
radio.setChannel(125);//Indicamos el canal
radio.setDataRate(RF24_2MBPS); //Indicamos la máxima velocidad de transmisión
radio.setPALevel(RF24_PA_MAX);//Indicamos la máxima potencia de la antena
radio.printDetails();//Imprimimos los detalles de la antena por el monitor serial
radio.powerUp();//Arrancamos la antena
radio.startListening();//Empezamos a escuchar (ya que estamos en modo receptor)
rfAudio.begin();//Iniciamos la librería de transmisión de audio
rfAudio.setVolume(7);//Fijamos el volumen de la salida de audio
rfAudio.receive();//Indicamos a la librería que debe recibir audio
}
void transmit(){
//Encendemos el LED que indica que estamos en modo transmisor
digitalWrite(led,HIGH);
//El resto del código es igual que el modo receptor
printf_begin();
radio.begin();
radio.setChannel(125);
radio.setDataRate(RF24_2MBPS);
radio.setPALevel(RF24_PA_MAX);
radio.printDetails();
radio.powerUp();
radio.stopListening();//Paramos de escuchar canales (estamos en modo transmisor)
rfAudio.begin();
rfAudio.setVolume(7);
rfAudio.transmit();//Indicamos a la libreria que debemos transmitir
}
void loop(){
}