You are on page 1of 10

Control a Distancia de un Reproductor de Msica utilizando FPGA y

Mdulos RF
Alumnos:

Acosta, Mariano Leonel


Silva, Agustin

Ao: 2015
Materia: Comunicaciones Digitales
Carrera: Ingeniera Electrnica
Profesor: Dr. Jorge Castieira Moreira

Introduccin
En el presente trabajo se detalla el funcionamiento de un sistema de transmision de datos
cuyo objetivo es controlar un reproductor de msica a distancia por medio de un enlace de
radiofrecuencia. Para ello se cuenta una placa de desarrollo Altera DE2 (FPGA), mdulos RF
transmisores y receptores, placas Arduinos Uno y una PC portatil que recibe los comandos.
Las FPGA (Field Programable Gate Array) son dispositivos que contienen celdas logicas
reconfigurables que permiten interconectarse segn la necesidad del diseador, adoptando as
distintas funcionalidades (desde sencillos circuitos combinacionales hasta complejos sistemas de
procesamientos de datos)

Ejemplo de Celda Lgica programable.


Unos de los lenguajes utilizados para programar estos dispositivos y el utilizado en esta experiencia
es VHLD (Very High Speed Integrated Circuit Hardware Description Language).
El entorno Arduino consiste en una plataforma de hardware libre diseada especificamente
para simplicidad de uso y ser aplicada en proyectos de todo tipo. Generalmente poseen un
microcontrolador Atmel AVR y puertos de entrada/salida. Su lenguaje de programacin esta basado
en C/C++.

Placa Arduino Uno, conexiones.

Los modulos de radiofrecuencia utilizados en exta experiencia son los Cytron RF Tx y Rx con
portadora de 433MHZ. Se tratan de dispositivos de reducidas dimensiones y de muy sencillo uso.
Trabajan con modulacion ASK y son capaces de comunicarse con un enlace de hasta 100 metros.

Arreglo Experimental

En el esquema se muestra el sistema que se desea implementar. Al presionar una tecla del
pad numrico, la FPGA decodifica un valor de 1 byte de longitud y lo envia por puerto serie RS232,
usando el protocolo 8N1 (8 bits de datos, ningun bit de paridad y un bit de stop). Luego los datos
ingresan por el pin RX del Arduino Uno, el cual se encarga de armar un paquete de datos y enviar la
informacion por medio transmisor de radiofrecuencia. Del lado receptor se encuentra otro Arduino
Uno que recibe el paquete y lo envia por coneccin USB hacia la computadora. En funcin del dato
que ingresa en la computadora, el reproducctor de msica responde con una accin (ejemplo:
Subir/Bajar Volumen, Play/Pausa, Anterior/Siguiente). Como el estandar RS232 trabaja con niveles
lgicos de +/-15 volts, fue necesario implementar un circuito de adaptacin de niveles, ya que la
placa arduino trabaja con niveles TTL (de 0V a 5v) El esquemtico se detalla a continuacin:

Las placas Arduino fueron necesarias para setear los mdulos de radiofrecuencia y mantener
una comunicacin constante, ya que estos dispositivos requieren que se est mandando
continuamente datos, y para nuestro caso en particular eso no nos era til. El problema fue
solucionado automticamente por una librera, la cual se encargaba de mandar cierta secuencia de
datos hasta que nosotros mandemos la informacin til desde la FPGA.

Desarrollo

Se comenz desarrollando el reproductor de msica. Un programa sencillo con 6 botones


(play, pausa, anterior, siguiente, bajar volumen, subir volumen) al que le se agreg el manejo por
puerto serie. Para ello se utiliz el programa Visual Studio 2010. Elegimos este entorno de desarrollo
porque pudimos trabajar usando un lenguaje de programacin dirigido por eventos, y esto es til
para manejar el software mediante comandos por el puerto serie.

Captura de pantalla del reproductor de msica desarrollado.

Se designo arbitrariamente los siguientes valores de un byte de longitud para controlar el


reproductor:
Comando

Palabra de 1 Byte

Equivalente Decimal

Play

00000111

07

Equivalente
Hexadecimal
07

Pausa/Stop

00001110

14

0E

Anterior

00011100

28

1C

Siguiente

00111000

56

38

Subir

11100000

224

E0

Bajar

11111111

255

FF

A continuacion se muestra el procedimiento que realiza el reproductor en funcion del byte


que ingresa por el puerto serie de la computadora.
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim buffer As String
buffer = SerialPort1.ReadByte
txtrecibe.Text = buffer & vbCrLf
Select Case buffer
Case "07"
If Button1.Text = "Play" Then
Button1.Text = "Pause"
Play()
ElseIf Button1.Text = "Pause" Then
Button1.Text = "Play"
AxWindowsMediaPlayer1.URL = ListBox1.SelectedItem
End If
Case "14"
AxWindowsMediaPlayer1.URL = ""
Case "28"
PrevisouTrack()
Case "56"
NextTrack()
Case "224"
TrackBar1.Value = TrackBar1.Value + 20
AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
Case "255"
TrackBar1.Value = TrackBar1.Value - 20
AxWindowsMediaPlayer1.settings.volume = TrackBar1.Value
End Select
End Su

Luego se program en el entorno Arduino los mdulos RF, utilizando la librera VirtualWire.h
designada especialmente para la utilizacin de estos dispositivos de comunicacin.

Programa fuente placa Arduino transmisora.

Programa fuente placa Arduino receptora.

El siguiente paso fue, utilizando una FPGA, tomar los valores desde un teclado numrico y
enviar el correspondiente byte por el puerto RS232 de la placa de desarrollo, usando el formato 8N1
e ingresandolo por el pin Rx de la placa Arduino transmisora.

Subir, 11100000
Siguiente, 00111000
Play, 00000111
Anterior, 00011100
Bajar, 11111111

Formato 8N1 de transmision de datos serie.

Ejemplo del funcionamiento del transmisor serie desarrollado en VHDL.


Nota: el dato ingresado debia ser enviado dos veces porque asi lo demandaba el
codigo realizado para Arduino. El sistema completo se comunic siempre con una
velocidad de transmisin de 9600 bauds.

Conexiones para el puerto de salida RS232 de la placa Altera DE2

Comparacin entre los niveles lgicos TTL y RS232

Fotografa del arreglo experimental final

Resultados
Se procedio a probar el sistema primero enviando comandos de PC a PC conectando la placa
transmisora a una computadora de escritorio y enviando los comandos utilizando el software de
prueba Dockligth. El sistema funcion perfectamente y respondio correctamente a cada comando
recibido.

Captura de pantalla del software Docklight utilizado para probar la comunicacin

Sin embargo, cuando probamos el teclado nmerico, el sistema no funcion con lo


esperado. Debido a un error en la programacin de la FPGA, la secuencia enviada a la salida de esta
era siempre la misma, sin importar cul de los botones apretemos. Debido a la falta de tiempo no
llegamos a corregirlo. Aunque, despus de salir de la FPGA, todas las etapas siguientes funcionaban
sin ningn problema. El sistema de transmision en serie diseado en VHDL funcionaba
perfectamente y recibiamos correctamente el comando en la PC portatil. Pudimos corroborar que el
reproductor comenzaba a funcionar luego de presionar una tecla del pad numrico.

Conclusiones
Luego de conceptualizar el sistema que queramos implementar y teniendo encuenta las
caracteristicas tcnicas de la comunicacin entre dispositivos, pudimos llevarlo a la prctica y la
experiencia resulto exitosa. A pesar de la falla que ocurri en el FPGA (siempre enviaba el mismo
comando) todas las etapas siguientes funcionaron a la perfeccin, cosa que pudimos verificar
reemplazando la FPGA por una PC de escritorio. En este ltimo caso todos los comandos fueron
recibidos correctamente y el reproductor funcionaba sin ningn problema. Cabe destacar que este
sistema fue totalmente experimental y sirvi para implementar los conocimientos aprendidos en
cursos de electrnica digital en un caso prctico.