Está en la página 1de 18

UNIVERSIDAD INDUSTRIAL DE SANTANDER

PROGRAMA DE ELECTRONICA
LABORATORIO 1 – PROGRAMACIÓN DE SISTEMAS DE TIEMPO REAL

1. IDENTIFICACIÓN
FACULTAD E3T PROGRAMA: INGENIERIA ELECTRONICA
ASIGNATURA COMUNICACIONES II
UNIDAD TEMÁTICA GNU RADIO
TEMA PROGRAMACIÓN DE SISTEMAS DE TIEMPO REAL
DOCENTE JOHAN LEANDRO TÉLLEZ GARZÓN
ALUMNOS Jefferson Alfonso Estevez Ramirez-Omar Edgardo Rojas-Andrés Suarez
FECHA 13/04/2023
2. DESCRIPCIÓN Y OBJETIVOS
Mediante esta guía de enseñanza se hace un acercamiento inicial a la programación de bloques en GNU radio
mediante Python y se analizan los procesos que deben ser realizados para tratar un flujo de información en
formato stream.
• Practicar la programación de sistemas de tiempo real y los promedios de tiempo

3. REVISIÓN PRELIMINAR
Conozca el Manual de Manuales para que aprenda a encontrar las ayudas disponibles en temas de SDR en la
UIS. Familiarícese con las variables usadas en los flujogramas. El libro de la asignatura contiene además
cosas como:
• En el capítulo 6, del libro Vol I, se tiene una descripción de las variables y siglas que se usan en los
flujogramas para cualquier práctica de la asignatura.
• Enlaces a flujogramas usados en el libro. Debajo de cada gráfica con flujogramas hay una nota que dice:
“Flujograma usado”. Esos flujogramas usados en el libro están en la página del libro:
https://sites.google.com/saber.uis.edu.co/comdig/sw o directamente en github:
https://github.com/hortegab/comdig_su_software_libro3.8.git

1. Realización de tutoriales prácticos de la página oficial de GNU radio haciendo énfasis en la programación
del bloque denominado Python block y en el tratamiento de estructuras de datos tipo stream:
https://wiki.gnuradio.org/index.php?title=Tutorials
Defina que es una variable tipo stream, cuáles son sus ventajes y desventajas e identifique las
características esenciales del bloque Python block. Este punto es opcional.
2. Investigue e identifique las operaciones que deben ser realizadas para encontrar la media cuadrática, el
valor RMS, la potencia promedio y la desviación estándar de una señal. Use el libro de la E3T.

4. ACTIVIDADES Y PROCEDIMIENTOS

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
3. Genere tres señales diferentes (seno, ruido, vector repetitivo) y visualícelas en el dominio del tiempo.
Utilice los parámetros que crea convenientes.
4. Cree un bloque con programación Python, usando un Python Block que permita entregar al mismo tiempo
varios promedios de tiempo como: la media, la media cuadrática, el valor RMS, la potencia promedio, la
desviación estándar. Los siguientes son requerimientos:
El bloque tiene una entrada y 5 salidas, una para cada parámetro: la media, la media cuadrática, el valor
RMS, la potencia promedio, la desviación estándar
Todo el código se implementa dentro de un solo Python Block
Ten en cuenta que si hay 5 salidas, la variable output_items, puede verse como:
y0=output_items[0]
y1=output_items[1]
y2=output_items[2]
y3=output_items[3]
y4=output_items[4]

5. Demuestra el funcionamiento del bloque, mediante un flujograma que calcule los diferentes parámetros
para las tres señales implementadas en el punto 2. Analizar los parámetros de la señal y visualizarlos en
tiempo real.
6. Los valores obtenidos son los esperados?
7. Conectar el USRP, la antena y el cable Ethernet al computador con la finalidad de adquirir una señal en
la banda de operación de la antena, seleccione un canal o frecuencia de su elección y realice mediciones
de la potencia normalizada, valor RMS y desviación estándar con el bloque implementado en Python
considerando tres valores distintos de frecuencia de muestreo. Analizar los resultados obtenidos.
8. Elija un valor fijo de frecuencia de muestreo que permita escuchar la señal de referencia en su tortalidad
y cambie los valores del amplificador de RX (LNA) del USRP en cuatro valores distintos, documente los
resultados obtenidos en términos de potencia normalizada, valor RMS y desviación estándar. Analizar
los resultados obtenidos.

5. RECURSOS E INFORMACIÓN COMPLEMENTARIA


Los recursos e informaciones relacionadas al desarrollo de este laboratorio son los siguientes:
• Computador con mínimo 4 GB de RAM, 2GB de espacio en disco y processador Core i3 o superior.
• Documentación oficial del GNU RADIO.
• Libro E3T

6. EVIDENCIA, RESULTADOS Y CONCLUSIONES DEL LABORATORIO


Elaborado por: Johan Leandro Téllez Garzón
Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
1. ¿Qué es una variable tipo stream?

Una variable tipo stream es un tipo de variable utilizada en lenguajes de programación para manipular flujos de
datos, como entrada y salida de archivos. En general, un stream se refiere a una secuencia de datos que fluye de
una fuente, como un archivo, a un destino, como una pantalla o un dispositivo de almacenamiento.

En muchos lenguajes de programación, los streams se representan como objetos que proporcionan métodos para
leer o escribir datos en ellos. Por ejemplo, en C++, la biblioteca estándar proporciona clases como ifstream y
ofstream para manipular streams de entrada y salida de archivos, respectivamente.

Los streams pueden ser utilizados para leer y escribir datos de una variedad de fuentes y destinos, incluyendo
archivos, sockets, consolas, dispositivos de entrada/salida, y más. Además, los streams proporcionan una capa de
abstracción sobre los detalles de bajo nivel de la manipulación de archivos y dispositivos, lo que los hace más
fáciles de usar y más portables entre diferentes sistemas operativos y plataformas.

Ventaja:
En cuanto a las ventajas de las señales seriales en bloques, una de las más significativas es que permiten trabajar
con bloques de manera sencilla, sin preocuparse por el empaquetamiento de muestras ni por la definición de un
tamaño para los paquetes. En otras palabras, simplifican el proceso de trabajo con bloques.

Desventajas:
Entre las desventajas se encuentra la limitación de enviar datos seriados, lo que provoca una menor velocidad de
transmisión debido a que cada dato tiene un tiempo de envío asignado. Además, solo se pueden enviar datos tipo
bytes o float 32, lo que limita el tipo de datos que se pueden transmitir.

Las características fundamentales del bloque personalizado de Python son las siguientes:

• Posibilidad de crear bloques personalizados en Python sin tener conocimientos de OOT.


• Capacidad para trabajar con señales de tipo vector o stream.
• Permite programar y añadir nuevas funcionalidades a un bloque, tal como la capacidad de calcular
diferentes medidas y agregar o eliminar entradas y salidas según sea necesario.

2. Los promedios de tiempo son calculados teóricamente de la siguiente manera:


Elaborado por: Johan Leandro Téllez Garzón
Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
-Media de una señal:
Para el cálculo de la media de una señal 𝑥(𝑡) se emplea la siguiente expresión:

-Media cuadrática de una señal:


La media cuadrática de una señal x(t) corresponde a:

Valor RMS (“Root Mean Square”) de una señal:


El valor RMS de una señal x(t) corresponde a la raíz del valor medio cuadrático, de modo que es calculado de la
siguiente manera:

Potencia promedio de una señal:


La potencia promedio normalizada (estandarizada a 1 [Ω]) de una señal x(t) se calcula por medio de la siguiente
expresión:

Observando que es igual que calcular el valor de la media cuadrática, o que es lo mismo, el valor RMS elevado al
cuadrado.

Desviación estándar de una señal:


Por último, para la desviación estándar se sigue la fórmula que se muestra a continuación:

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
3. Se generaron tres señales diferentes: seno, ruido y vector repetitivo.

Ilustración 1. Tres señales seno, ruido y vector repetitivo.

Señal coseno: Entrada de una señal coseno, que tiene una frecuencia de f = 1 [kHz] y amplitud de A = 1.

Ilustración 2. Señal seno.

Ruido gaussiano: Entrada de una señal aleatoria con probabilidad gaussiana, utilizando el bloque de ruido
gaussiano con una amplitud de 1.

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Ilustración 3, Señal Ruido Gaussiano.

vector: Entada de vector [1, 1,1,1,1,1,1, 1,....,1]

Ilustración 4. Señal vector.

4.Cree un bloque con programación Python, usando un Python Block que permita entregar al mismo tiempo varios
promedios de tiempo como: la media, la media cuadrática, el valor RMS, la potencia promedio, la desviación
estándar.

seleccionamos el bloque correspondiente a “Python Block” y se procede a editar dicho bloque, ingresando la
programación que se requiere.

Ilustración 5. Bloque embedded Python

Primero, se hace la declaración del bloque llamado “cálculo de magnitudes”, el cual está compuesto por una
entrada y cinco salidas, para este caso, quedaría de la siguiente manera:

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Ilustración 6. Bloque cálculo de magnitudes

Ilustración 7. Declaración de la entrada y salidas.

Se define la señal de entrada x y las cinco señales de salida y, donde cada una de ellas arrojará el resultado de un
promedio de tiempo.

Ilustración 8. Definición de variables.

Se define la manera en que se generará el resultado en cada salida.

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Ilustración 9. Cálculos de promedios.

En el texto guía, se pueden ver cada uno de los procedimientos obtenidos en las respectivas salidas, teniendo en
cuenta que se trabaja con el valor acumulado en cada caso.

5. Se demostró el funcionamiento del bloque, mediante un flujograma que calculo los diferentes parámetros para
las tres señales implementadas que fueron una señal de tipo senoidal, una señal de ruido gaussiano y por último
una señal de tipo vector y se analizó los parámetros de la señal y visualizarlos en tiempo real.

Ilustración 10. Flujograma que muestra 5 parámetros de 3 señales

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Ya teninedo el flujograma, prosegimos a correr GNUradio con cada una de las señales para obtener los valores de
los parametros requeridos. En la Ilustracion 11 podemos ver los parametros de la señal de ruido Gaussiano

Ilustración 11. Visualización de la señal Ruido Gaussiano y sus parámetros propuestos

Ahora comparamos los valores teóricos y prácticos en una tabla, los valores teóricos los encontramos usando
MATLAB Ilustración 12
Parámetros Valor Practico Valor Teórico
Desviación Estándar 1.000105 1.0002
Media Cuadrática 1.000210 1.00001
RMS 1.000105 1.0002
Promedio (media) -0.000047 0.00038
Potencia Promedio 1.000210 1.00001
Tabla 1. Comparativa de los valores Reales y Teóricos de la señal Ruido Gaussiano.

Ilustración 12. Realización de los valores Teóricos de la señal Ruido Gaussiano.

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
En la Ilustracion 13 podemos ver los parametros de la señal Senoidal.

Ilustración 13. Visualización de la señal Senoidal y sus parámetros propuestos


Montamos la tabla con los valores prácticos tomados de MATLAB y los comparamos en la tabla 2, notamos q tienen muy
bajo porcentage de error.
Parámetros Valor practico Valor Teórico % Error
Desviación Estándar 0.707126 0.7071 0.003676 %
Potencia Promedio 0.500027 0.5 0.0054%
Valor RMS 0.707126 0.7071 0.003676 %
Media Cuadrática 0.500027 0.5 0.0054%
Promedio (media) 0 1.789e-17 ~ 0%
Tabla 2. Comparativa de los valores Reales y Teóricos de la señal Senoidal

Ilustración 14. Realización de los valores Teóricos de la señal Senoidal

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
En la Ilustracion 15 podemos ver los parametros de la señal vectorial, la cual en el timepo se ve com un valor
constante.

Ilustración 15. Visualización de la señal Vectorial y sus parámetros propuestos


Montamos la tabla con los valores prácticos tomados de MATLAB (Ilustración 16) y los comparamos en la tabla 3,
notamos que tienen muy bajo porcentaje de error.
Parámetros Valor Practico Valore Teórico % error
Desviación Estándar 0.003823 0 ~ 0%
Potencia Promedio 1.000274 1 0.0274%
Valore RMS 1.000137 1 0.0137%
Media Cuadrática 1.000274 1 0.0274%
Promedio 1.000274 1 0.0274%
Tabla 3. Comparativa de los valores Reales y Teóricos de la señal Vectorial de Unos

Ilustración 16. Realización de los valores Teóricos de la señal Vectorial.

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
7.Conectamos y verificamos que los leds indicadores estén encendidos. Conectamos la antena antes
de energizar el equipo para evitar daños en el equipo

Ilustración17. Foto de la USRP ya funcionando

Construimos el flujograma para lograr sintonizar en frecuencia FM de radioemisoras, para lograr


verificar el que se sintonice alguna señal, ya que la antena que usamos funciona en muy altas
frecuencia (frecuencias móviles o de sistemas wifi).

Ilustración18. Flujograma para demodulación FM.

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Realizamos el análisis de las siguientes frecuencias de muestreo 90K Ilustración 19, 192khz
Ilustración 20, 300khz Ilustración 21, una cosa que podemos observar en las tres tomas es la poca
variación de los primero cuatro parámetros, y que el promedio de la señal se siga manteniendo en
aproximadamente cero.

Ilustración19. Resultados de sintonizar con una frecuencia de muestreo de 90k.

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Ilustración20. Resultados de sintonizar con una frecuencia de muestreo de 192k.

Ilustración21. Resultados de sintonizar con una frecuencia de muestreo de 300k.

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
8.En las siguientes Ilustraciones mostraremos como sintonizamos una emisora de radio, con un valor
de frecuencia de muestreo establecido fijo y se variara el valor de Ganancia de la USRP

Ilustración22. Resultados de sintonizar con una ganancia de 10

Ilustración23. Resultados de sintonizar con una ganancia de 30

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Ilustración24. Resultados de sintonizar con una ganancia de 60

Conclusión del laboratorio:


1 - Podemos decir que al variar la frecuencia con que se muestrea cada toma de señales, se puede
verificar una afectación de la calidad de la demodulación y la fidelidad de la señal recuperadas, esto se
verifica por como suena el audio de las señales el cual tiene un efecto de lentitud o asunto de la
velocidad de reproducción del audio

2- la ganancia de entrada determina el nivel de amplificación o atenuación que se aplica a la señal


recibida por la USRP. Si la ganancia de entrada es demasiado baja, se puede perder la señal o quedar
por debajo del umbral de detección. Si la ganancia de entrada es demasiado alta, se puede saturar el
receptor o distorsionar la señal. Por lo tanto, se debe ajustar la ganancia de entrada para obtener una
buena relación señal a ruido y una calidad óptima de la señal demodulada

3- Es posible en GNU radio mediante programación en lenguaje Python la creación de bloques para la
construcción de flujogramas que permitan calcular los parámetros de una señal, tales como la media

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
aritmética, media cuadrática, valor RMS, potencia promedio y desviación estándar. Esto permite
aprovechar las ventajas de Python como lenguaje flexible, sencillo y potente, que facilita el manejo de
datos numéricos y el cálculo de operaciones matemáticas complejas.
4-Para cada tipo de señal, existe una manera particular de calcular los parámetros de esta. Por ejemplo,
para las señales analógicas se pueden usar métodos basados en integrales o sumatorias, mientras
que para las señales digitales se pueden usar métodos basados en vectores o matrices. Es importante
conocer el tipo y la forma de la señal para elegir el método adecuado y obtener resultados precisos y
confiables.
5-Es importante la creación de bloques de programación en lenguaje Python debido al alcance de estos,
pues permite más allá de calcular parámetros, la realización de cualquier otro tipo de operación o
modificación de las señales. Por ejemplo, se pueden crear bloques para filtrar, modular, demodular,
codificar, decodificar, comprimir, expandir, transformar o analizar las señales. Así se puede
implementar una gran variedad de sistemas y aplicaciones de comunicaciones usando GNU radio y
Python.
6-Se debe tener en cuenta que Python maneja el estilo de organización de la programación por medio
de funciones, debido a que deben estar dentro de su línea o una separación para que no genere errores.
Esto implica que se debe respetar la indentación del código y usar correctamente los paréntesis, los
dos puntos y las comillas. Además, se debe seguir las convenciones y buenas prácticas del lenguaje
para escribir código legible, ordenado y documentado.

Referencias
[1] Matlab, los cálculos teóricos se realizaron usando esta herramienta.
[2] DEMODULACIÓN FM – UCM, https://detri.epn.edu.ec/wp-
content/uploads/2019/05/Prac_5_FC_2019_A.pdf
[3] Sistema de radar de onda continua múltiple implementado mediante GNU Radio,
https://eprints.ucm.es/27968/26/FM_v1.1.pdf

7. REJILLA DE EVALUACION

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II
Método de calificación por lista de cotejo

N° Criterios EXCELENTE BUENO (4) REGULAR DEFIC


(5) (3) (2
1 Los Procedimientos son completos y permiten cumplir el objetivo
general y los objetivos específicos.
Caso se solicite responder preguntas al final, estas son respondidas
de forma adecuada y coherente.

2 Los Resultados cumplen los siguientes criterios:


• Coherencia con los objetivos
• Tienen Comentados de análisis pertinentes
• Están en su totalidad (tiempo, frecuencia u otros solicitados)

3 Calidad del informe:


• Es organizado de inicio a fin
• Etiqueta imágenes y las cita en el texto
• Tiene ortografía
• La escrita es clara y concisa
• No repite informaciones

4 Tiene al menos una conclusión que sea resultado directo de la


ejecución del laboratorio

Total

Elaborado por: Johan Leandro Téllez Garzón


Fecha actualización: 03/11/2022
Asignatura: Comunicaciones II

También podría gustarte