INGENIERÍA ELECTRÓNICA ASIGNATURA: COMUNICACIONES I Tema : GNU Radio - Fundamentos GUÍA DE LABORATORIO 1/12 Docente: MSc. Luis Lopez Fecha: 2024.00.00. 1. OBJETIVOS: • • Instalar el software de simulación de radiodifusión GNU Radio en un entorno de código libre Probar las herramientas básicas de manejo del software GNU Radio 2. MARCO TEÓRICO 2.1 GNU Radio o GNU Radio Companion (GRC). GNU Radio es un conjunto de herramientas de software libre y de código abierto basado en lenguaje Python pero que se presenta al usuario en forma de bloques y que está destinado al procesamiento de señales analógicas y digitales. GNU Radio se puede utilizar sin hardware en un entorno de simulación, pero, además, permite su uso con hardware de RF externo para la creación de prototipos de sistemas inalámbricos para su análisis practico y teórico. Mediante el hardware externo se puede trabajar con señales reales como son Wifi, LTE, Bluetooth, FM comercial, AM y demás mientras se encuentren dentro del rango de trabajo del hardware de RF. En un inicio, GNU Radio solo estaba disponible para la plataforma Linux, ya sea en sus distribuciones de Ubuntu, CentOS, Fedora, etc., lo cual hacía difícil su uso pues no todas las personas usan este sistema operativo, pero en la actualidad ya está disponible para Windows. GNU Radio permite el desarrollo de aplicaciones de sistemas inalámbricos con una interfaz amigable en base a la gestión de bloques semejante al software computacional Simulink de Matlab. 2.2 Bloques En GNU Radio se pueden agrupar los bloques de la siguiente manera: ▪ Fuentes: bibliotecas que poseen generadores de señales, con formas de onda senoidales, cuadradas y otras; señales de audio y también señales que provienen del hardware. Figura 2.1: Fuentes (Sources) ▪ Procesado de señal: en este grupo se encuentran todos los bloques que realizan el procesado de la señal. Por ejemplo: filtros, moduladores, operadores matemáticos, remuestreadores, etc. Figura 2.2: Procesadores de señal ▪ Sumideros: conocidos como Sinks, permiten la visualización de los resultados del procesado de las señales de manera gráfica y/o sonora. También se incluyen los bloques encargados de la conexión con el hardware externo. Osciloscopio Archivo en cualquier formato Analizador de espectros Salida de un SDR Diagramador de constelaciones Placa de sonido Figura 2.3: Sumideros o salidas (Sinks) ▪ Además de los tipos de bloques descritos, existen otros, los cuales permiten una mejor observación y manipulación de los parámetros en tiempo real como son: sliders, notebooks y cuadros de texto. Se puede crear nuevos bloques programando directamente en Python, sin embargo, resulta una tarea ardua, por lo que, utilizando la interfaz gráfica de GNU Radio se pueden crear con mayor facilidad. 2.3 Tipos de datos GNU Radio posee la capacidad de trabajar con distintos tipos de datos según los requerimientos de una determinada aplicación. Estos tipos vienen diferenciados por el color en los extremos de los bloques. En la siguiente figura se muestra el bloque Throttle y los tipos de datos más usados: a) b) c) d) Figura 2.4: Tipos de datos mostrados a través del bloque Throttle 2 e) Como indica la figura anterior, los distintos tipos de datos más usados con los que se puede trabajar con los siguientes: a) Complex: datos formados por 8 bytes. Tiene parte real y parte imaginaria. b) Float: datos formados por 4 bytes de punto flotante. c) Int: datos de tipo entero con signo formado por 4 bytes. d) Short: datos de tipo entero formado por 2 bytes. e) Byte: datos formados por 1 byte (8 bits). Sin embargo, estos no son los únicos tipos de datos que se pueden encontrar en GNU Radio, en la siguiente figura se muestra todos los tipos de datos y que se encuentran haciendo clic en el menú Ayuda en la sección Tipos: Figura 2.5: Tipos de datos completos en GNU Radio Se debe tener en cuenta que no se pueden unir bloques que tengan tipos de datos distintos. El programa muestra un error al hacerlo y el nombre de los bloques se muestran en color rojo. Sin embargo, existen bloques que permiten transformar un tipo de dato a otro. Por ejemplo, se puede transformar un dato complejo a flotante usando el bloque Complex to Float. En la siguiente figura se muestran los bloques ubicados en la biblioteca que pueden convertir los distintos tipos de datos. Figura 2.6: Convertidores de tipos de datos disponibles 2.4 Uso de variables en GNU Radio Los bloques de los diagramas poseen parámetros que se pueden modificar. A veces se debe cambiar estos parámetros uno a uno y para evitar esta tarea de reemplazar los valores uno a uno se puede usar variables que simplemente colocando su ID en el parámetro a configurar en el bloque, éste ya se encuentra con el valor que tenga dicha variable. En la siguiente figura se puede observar el bloque Variable, el cual contiene un ID cuyo valor se puede modificar. Figura 2.7: Bloque Variable 3 Todo bloque posee su cuadro de Propiedades al cual se puede acceder haciendo doble clic sobre él (también puede usar el botón derecho y elegir Propiedades). En la Figura 2.8 se muestra las propiedades de uno de los bloques de la librería de GNU Radio. Figura 2.8: Cuadro de propiedades del bloque Signal Source En la Figura 2.8 se muestra el bloque de un generador de señales (Signal Source) en el cual se ha reemplazado su parámetro Sample Rate por el ID de la variable samp_rate mostrada en la Figura 2.7. De este modo se está apuntando al valor que contiene dicha variable. 2.5 Visualización de Resultados En GNU Radio se podía observar los resultados mediante dos tipos de interfaces: QT GUI y WX GUI. Ambas se podían elegir en el bloque Options, el cual se encuentra presente en cada archivo nuevo que se ejecute. A partir de la versión 3.8 sólo se da soporte a la interfaz QT GUI. 3. MATERIALES Y EQUIPOS Computadoras con acceso a Internet y Linux Ubuntu instalado 4. ACTIVIDADES PARTE 1: FUNDAMENTOS DE GNU RADIO En el caso de trabajar en el entorno Linux es conveniente tener la distribución actualizada 4.1 Instalación de GNU Radio La instalación puede efectuarse a través del Terminal o la aplicación Ubuntu Software ( ). En este caso, se va a utilizar el Terminal porque se va a llevar a cabo tareas previas de actualización muy recomendadas: 4.1.1 Actualizar Ubuntu ▪ Primero, actualice el sistema para asegurarse de que todos los paquetes existentes estén actualizados para evitar conflictos. sudo apt update && sudo apt upgrade -y 4.1.2 Instalar GNU Radio ▪ El mejor método para utilizar el administrador de paquetes APT es instalar el PPA. Ejecute el siguiente comando para importar el PPA. sudo add-apt-repository ppa:gnuradio/gnuradio-releases -y ▪ Antes de continuar, ejecute una actualización de APT para reflejar el PPA recién importado: sudo apt update 4 ▪ Ahora instale GNU Radio: sudo apt install gnuradio -y 4.1.3 Ejecutar GNU Radio ▪ Puede efectuarse de dos formas: i. A través del Terminal, para ello, escriba el siguiente comando para iniciar de inmediato: gnuradio-companion ii. A través del ícono Aplicaciones ( ), ubique el ícono GNU Radio Companion 4.1.4 Actualizar GNU Radio ▪ Es recomendable tener actualizado el programa. El mejor método para asegurarse de que su GNU Radio esté actualizado es abrir el Terminal y ejecutar el siguiente comando: sudo apt upgrade && sudo apt upgrade ▪ El comando también garantizará que todos los demás paquetes que usan el administrador de paquetes APT, incluidos los paquetes de su sistema, estén actualizados. Se sugiere que los usuarios nuevos en Linux ejecuten este comando de vez en cuando, incluso si tiene habilitadas las actualizaciones o notificaciones automáticas de la GUI, para asegurarse de que su sistema funcione según lo previsto. 4.1.5 Desinstalar GNU Radio ▪ Puede que en algún momento quiera retirar GNU Radio. Para ello utilice el siguiente comando: sudo apt autoremove gnuradio -y ▪ A continuación, debe eliminar el PPA: sudo add-apt-repository --remove ppa:gnuradio/gnuradio-releases -y 4.2 Ejecución de GNU Radio Una vez ejecutado GNU Radio, el entorno de trabajo que se presenta se muestra en la siguiente figura: 5 (1) Barra de menús y Barra de Herramientas: En la barra de menús desplegable se encuentran todas las funcionalidades del programa (File, Edit, View, …). La barra de herramientas posee las funciones clásicas de una aplicación, pero además se encuentran varios botones que poseen distintas funciones para la programación en GNU Radio. La siguiente tabla muestra los más importantes: Nota: La forma del icono depende de la versión por lo que puede cambiar. No obstante, puede pasar el cursor por cualquiera de ellos y se mostrará su función (2) Espacio de Trabajo o área de diagramas de flujo: Es el área donde se arrastran los bloques para su agrupación con otros bloques para crear la aplicación, similar a la forma de trabajo de Simulink. (3) Bloques de Simulación: es el espacio donde se encuentran todos los bloques de simulación como fuentes, canales, osciloscopios, etc agrupados por funciones. Para encontrar un bloque en específico se lo puede hacer mediante la barra de búsqueda representada por una lupa en la barra de herramientas, escribiendo su nombre o parte de él y luego llevarlo al espacio de trabajo arrastrándolo o haciendo doble clic en él. (4) Área de Terminal: muestra los comandos ejecutados por GNU Radio al realizar las diferentes tareas. De ser el caso, también muestra los errores cometidos en la confección de los diagramas (5) Sección de variables: muestra una lista de las variables que están siendo utilizadas Una vez ejecutado GNU Radio, en el espacio de trabajo se muestran dos bloques predefinidos los cuales son: Options y Variable. ▪ ▪ El bloque Options permite configurar el título, el autor, la descripción de la aplicación, el tipo de interfaz que se usará en la aplicación, es decir parámetros informativos de la aplicación a realizarse. Esto se realiza haciendo doble clic sobre el bloque para modificar sus configuraciones. En el bloque Variable se puede variar la frecuencia de muestreo con la que se trabajará durante toda la aplicación. De la misma manera esta opción se configura haciendo doble clic. En forma resumida, para crear una aplicación en GNU Radio, se hace la búsqueda del bloque, se lo arrastra al espacio de trabajo y se lo enlaza a otros bloques mediante las flechas. Para iniciar la simulación o aplicación, se debe presionar el botón play ( ) ubicado en la barra de herramientas; si no hay un error, el programa iniciará, caso contrario, indicará de color rojo la flecha con un enlace incompatible, la variable inadecuada o el bloque donde se encuentra el error, como lo muestra la siguiente figura: 6 Nota: En la figura izquierda observe la cabeza de flecha de color rojo que indica error en el tipo de datos de los bloques enlazados. En la figura de la derecha, el error se denota en el texto de color rojo. 4.3 Primeros pasos Antes de empezar, debe configurar el bloque Options definiendo un título, el autor y la descripción de la aplicación. El tipo de interfaz por defecto se encuentra en QT GUI (aunque también existe la interfaz WX GUI en versiones anteriores a la 3.8). En el bloque Variable se define la frecuencia de muestreo con la que se trabajará durante toda la aplicación y que en este caso es 32000 muestras/s por defecto. 4.3.1 Señales en el dominio del tiempo Un primer acercamiento es utilizar un generador de señal y visualizar la señal especificada ▪ Hacer clic en la herramienta de búsqueda ( ▪ Haciendo doble clic sobre el elemento requerido, se mostrará en el área de trabajo su bloque representativo ▪ En dicho bloque se muestran sus principales características, aunque puede ver todas ellas haciendo doble clic sobre él para acceder a su bloque Propiedades: 7 ) y escribir: signal source ▪ ▪ ▪ Como se va a visualizar una onda seno de tipo float, haga los cambios del caso en Output Type y Waveform. Para ver por pantalla la señal en el dominio del tiempo (a modo de osciloscopio) se necesita el sumidero QT GUI Time Sink. Ubíquelo y colóquelo en el área de trabajo. Modifique también aquí el tipo de dato a float. Haga una inspección a las otras opciones que se pueden configurar. Enlace la salida de la fuente con la entrada del sumidero, esto es, arrastre la salida del generador de señal hacia la entrada del GUI Time (también puede hacer un clic en el origen y a continuación un clic en el destino) lo que debe quedar como se muestra en la siguiente figura: ▪ ▪ Antes de proceder a la ejecución y muestra del resultado, es recomendable grabar el archivo. Para mostrar el resultado del sistema presione el botón play ( ) ubicado en la barra de herramientas ▪ Note que al pasar el cursor por la señal se muestran sus valores puntuales en coordenadas. Observe además que la representación mostrada es muy básica y puede mejorarla accediendo a las propiedades del sumidero y en la pestaña Config habilitar el Panel de Control. Inspeccione otras modificaciones a las Propiedades del sumidero que permitan una mejor presentación de los resultados. 4.3.2 Señales en el dominio de la frecuencia ▪ Puede empezar un nuevo Diagrama de Flujo o Flow Diagram (así se les denomina a los esquemas en GNU Radio) sin afectar al primero. Para ello debe utilizar la barra de menús o el ícono New () en la barra de herramientas. Los programas se irán mostrando en forma de pestañas, como se muestra a continuación: 8 ▪ Para ver la señal en el dominio de la frecuencia (a modo de un analizador de espectros) se necesita el sumidero QT GUI Frequency Sink. En la misma área de trabajo, ubique y coloque otro generador de señal con su respectivo sumidero QT GUI Frequency Sink, como se muestra en la siguiente figura. No olvide que siempre debe verificar la compatibilidad de los datos, en este caso debe modificar el tipo de dato a float. ▪ Antes de mostrar los resultados, debe bloquear el esquema que no va a utilizar, en este caso el generador de señal con sus respectivo QT GUI Time, para lo cual vamos a “ocultarlo”. Para ello seleccione ambos bloques utilizando el mouse y presione la tecla D. El resultado debe ser similar al mostrado en la siguiente figura: Nota: Para retornar al estado inicial se utiliza la tecla E. Puede usar también el botón secundario y elegir Disable o Enable según lo crea conveniente ▪ Ahora muestre los resultados ejecutando el botón play. Explique el diagrama ▪ Inspeccione mejorar la presentación básica del QT GUI Frequency Sink ▪ Investigue todas las características del QT GUI Frequency Sink accediendo a la pestaña Documentation en Propiedades. Esto puede hacerse para cualquier bloque del programa. ▪ Si desea mostrar dos señales en el dominio de la frecuencia, coloque otro generador de señal, cambie la señal a seno, el tipo de dato a float y modifique la frecuencia a 5 kHz. Tenga cuidado de no colocar directamente ambas señales al QT GUI Frequency porque se detectará un error resaltado en color rojo en el sumidero como lo muestra la siguiente figura: 9 ▪ Para poder mostrar dos señales en el dominio de la frecuencia se utiliza un Sumador. Borre los enlaces (hay que seleccionarlos, clic secundario y elegir Delete o utilizar la tecla Suprimir) y coloque en el área de trabajo un Sumador (Add). Enlácelos como se muestra en la siguiente figura: ▪ ▪ Muestre y explique los resultados Pero si desea sumar las dos señales y mostrar el resultado, necesita un Multiplicador (Multiply) en vez de un Sumador como lo muestra la siguiente figura ▪ Muestre y explique los resultados Ejercicios (todos los ejercicios deben presentarse al final de los procedimientos, antes de las Tareas) i. ii. ¿Por qué se necesita utilizar un Multiplicador para sumar dos señales en el dominio de la frecuencia? Efectúe el procedimiento para mostrar dos señales en el dominio del tiempo 10 4.3.3 Señales en el dominio del tiempo y de la frecuencia ▪ Puede empezar un nuevo Diagrama de Flujo o flow diagram (así se les denomina a los esquemas en GNU Radio) haciendo clic al ícono New ( ) en la barra de herramientas. Los programas se irán mostrando en forma de pestañas, como se muestra a continuación: ▪ Para ver una señal en ambos dominios elabore el siguiente esquema ▪ Muestre y explique el resultado Ejercicios iii. iv. Investigue la funcionalidad y características del bloque Throttle Modifique el valor del muestreo en el bloque Variable a 100k. Note el efecto que se produce en los otros bloques y en el resultado. Explique 4.4 Modificaciones en tiempo real ▪ Hasta el momento se ha mostrado la señal sin posibilidad de modificarla en tiempo real ya que así está definida en el bloque Signal Source. Para modificar valores en tiempo real es posible usar el bloque QT GUI RANGE, para lo cual búsquelo y colóquelo en el área de trabajo. Una posibilidad de configuración se muestra a continuación: 11 ▪ Los valores más importantes configurados para este caso son: - ID: Es el identificador y sirve para enlazarlo con otros bloques - Label: Etiqueta con la que aparecerá en el resultado - Default Value: Es el valor inicial por defecto que aparecerá cuando se muestre el resultado - Start y Stop: Valores límites - Step: Número de pasos - Widget: Componentes del QT GUI RANGE que se mostrarán ▪ Ahora, hay que enlazar el bloque QT GUI RANGE con el generador de señales. Como lo que se va a variar es la frecuencia, se debe modificar en el generador de señales el valor constante de la frecuencia por el ID del bloque QT GUI RANGE: ▪ Muestre y explique el resultado Ejercicio v. Añada otro QT GUI RANGE para controlar la amplitud 5. TAREAS 5.1 Muestre y explique las variaciones en el dominio del tiempo y de la frecuencia si es que utiliza el tipo de dato complejo en vez de flotante 5.2 Por qué es importante trabajar con números complejos en el dominio de la frecuencia? 6. CONCLUSIONES 7. BIBLIOGRAFÍA 12
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )