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

MaterialCantidades
Arduino UNO (o similar)2
Antena NRF24L012
Micrófono KY-0382
Puerto Jack 3.5mm (TRS)2
Diodo LED2
Resistencia 220 ohms2
Pulsador2
Protoboard2
Caja de Cartón 2
Pilas 9v2

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(){
}

Memoria Ejecutiva:

Explicación del Funcionamiento, Hardware y Código

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *