Sistema de Comunicacion Serial Entre Dos Arduino

July 8, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Sistema de Comunicacion Serial Entre Dos Arduino...

Description

 

1

SOFTWARE DE CODIFICACION DEL CODIGO DE LINEA MULTI-LEVEL (MLT-3) DE UNA SECUENCIA DE BITS Almeida Axel, Benavides Wilmer, Ichau Alexander Universidad Técnica del Norte Facultad de Ingeniería en Ciencias Aplicadas Ibarra-Ecuador {aealmeidav, webenaviesc, eaichaui }@utn.edu.ec  



R esumen

 —   En el presente documento se presentará el diseño e

Desarrollar el programa de codificación realizado en MatLab, creando algoritmos que cumplan las

implementación de un sistema de trasmisión a través de un generador de paridad y un receptor detector de paridad, todo esto dentro de los Softwares de Arduino y Matlab, realizando la codificación del código de línea Multi –  Level Transmit (MLT-3) de  – Level una secuencia de bits, los cuales serán ingresada por un usuario, mediante el teclado matricial del generador de paridad par e impar. 

especificaciones del código MLT-3.  



Realizar la transmisión dúplex entre el detector de  paridad y la interfaz gráfica del receptor. receptor.

 



Analizar los resultados que se obtiene al codificar la señal banda base, para verificar si los datos enviados son los correctos.

I. 

TITULO

 



Visualizar en un entorno amigable para el usuario tanto como el ingreso de caracteres como la

Software de codificación del código de línea Multi  –  – Level Level Transmit (MLT-3) de una secuencia de bits ingresada por un usuario, mediante el teclado matricial de un generador de paridad par e impar.

demostración de la codificación en las gráficas de resultados.

OBJETIVOS

II.  MARCO TEÓRICO

 A.  Objetivo General

Diseñar e implementar un sistema de transmisión con generador

Matlab

de paridad y un receptor detector de paridad, utilizando

MATLAB combina un entorno de escritorio perfeccionado para

comunicación simplex y codificación de línea MLT-3

el análisis iterativo y los procesos de diseño con un lenguaje de

visualizado en una interfaz gráfica realizada un software

 programación que expresa las matemáticas de matrices y arrays

matemático

directamente.

 B.  Objetivos Específicos 

 

El lenguaje de MATLAB, basado en matrices, es la forma más natural

del

mundo

para

expresar

las

matemáticas

Analizar los principios asociados y las técnicas

computacionales. Las gráficas integradas facilitan la

involucradas en la transmisión de información digital.

visualización de los datos y la obtención de información a partir de

ellos.

Una

vasta

biblioteca

de

 

2 herramientas (Toolboxes) integradas le permite empezar a

 periféricos. La información de estos periféricos que

trabajar inmediatamente con algoritmos esenciales para su

conectes se trasladará al microcontrolador, el cual se

dominio. El entorno de escritorio invita a experimentar,

encargará de procesar los datos que le lleguen a través

explorar y descubrir. [1]

de ellos. [2]

Qué es Arduino

BIT DE PARIDAD

Arduino es una plataforma de creación de electrónica de

El bit de paridad, a diferencia de los bits de inicio y de parada,

código abierto, la cual está basada en hardware y software libre, flexible y fácil de utilizar para los creadores y

es un parámetro opcional que se utiliza en las comunicaciones serie para determinar si el dispositivo remoto está recibiendo

desarrolladores. Esta plataforma permite crear diferentes tipos

correctamente el carácter de datos que se transmite.

de microordenadores de una sola placa a los que la comunidad de creadores puede darles diferentes tipos de uso.

Ilustración 2: Paridad

Cómo funciona Arduino

Ilustración 1: Placa de Arduino.



 

El

Arduino

es

una

placa

basada

en

un

microcontrolador ATMEL. Los microcontroladores son circuitos integrados en los que se pueden grabar instrucciones, las cuales las escribes con el lenguaje de  programación que puedes utilizar en el entorno Arduino IDE. Estas instrucciones permiten crear  programas que interactúan con los circuitos de la  placa. 

 

El microcontrolador de Arduino posee lo que se llama una interfaz de entrada, que es una conexión en la que podemos conectar en la placa diferentes tipos de

 

3 El bit de paridad puede tener una de las cinco especificaciones

carácter original.

siguientes: Item

Descripción

 

 por tanto, se añade un 0, y transmitiremos 00111001.

Especifica que el sistema local no debe crear un bit de paridad para los caracteres de datos que se están

 

Si usamos paridad impar, como hay un número par de

transmitiendo. También indica que el sistema local

unos, hemos de añadir otro 1 para conseguir un

no comprueba el bit de paridad de los datos recibidos

número impar, y transmitiremos 10111001.

de un sistema principal remoto.  par

Si usamos paridad par, ya hay un número par de unos,

Si se envía un dato y durante la transmisión se produce un único

Especifica la suma del número total de unos binarios

error, el destinatario puede detectarlo al comprobar la paridad

de un solo carácter es un valor par. En caso negativo,

en destino. Usando los ejemplos anteriores, y alterando un solo

el bit de paridad debe ser un 1 para asegurarse de que

 bit de la trama transmitida, nos quedaría. quedaría.

el número total de unos binarios sea par.  

Paridad par: se recibe 00110001 en vez de 00111001. Al comprobar el número de unos nos salen 3 (impar),

impar Funciona bajo las las mismas directrices que la paridad  par, con la excepción excepción de que el número total de unos  binarios debe ser un número número impar.

luego se ha producido un error.  

Paridad impar, se recibe 10110001 en vez de 10111001. Al comprobar el número de unos nos salen 4 (par), luego se ha producido un error.

espacio Especifica que el bit de paridad siempre siempre será un cero  binario. Otro término utilizado para la paridad de

Esto es útil si los errores no cambian un número par de bits a la

espacio es rellenado de bits, que se deriva de su

vez, ya que un número par de errores no afecta a la paridad final

utilización como rellenado de los datos de siete bits

de los datos. [4]

que se transmiten a un dispositivo que sólo acepte datos de ocho bits. Estos dispositivos interpretan el

Conexión entre Arduinos

 bit de paridad de espacio como un bit de datos adicional para el carácter transmitido. marca Funciona bajo las mismas directrices que la paridad de espacio, con la excepción de que el bit de paridad siempre es un 1 binario. El bit de paridad de marca sólo actúa como rellenador. [3]

BUS I2C  La conexión I2C está formada por un Maestro que es el que realiza

las

peticiones

a

los

Esclavos.

Y

uno

o

varios Esclavos que le envían información al Maestro cuando éste lo requiere. La conexión consta de tres cables: Serial Clock (SCL), Serial Data (SDA), Tensión positiva (Vcc) y masa

Código de paridad impar El bit de paridad será un 1 si el número total de 1 a transmitir es  par y un 0 si el número total de 1 es impar. impar.  Normalmente el bit de paridad se añade a la izquierda del

(GND). Se utiliza el ANALOG IN A4 como datos SDA y el ANALOG IN A5 como reloj SCL. Además, conectamos las masas GND. [5]

Conexiones

 

4  

 

En la siguiente imagen se utilizo tres cables de

Muchos productos de MATLAB, como Curve Fitting Toolbox,

conexión porque cada Arduino está conectado a un

Signal Processing Toolbox y Control System Toolbox, incluyen

cable USB.

apps con interfaces de usuario personalizadas. También es

Más adelante utilizaremos 4 cables de conexión y solo un USB para el Maestro.

 posible crear apps personalizadas propias, incluidas las interfaces de usuario correspondientes, para que otras personas las utilicen.

Creación de una GUI de MATLAB de forma interactiva GUIDE (entorno de desarrollo de GUI) proporciona herramientas para diseñar interfaces de usuario para Apps  personalizadas. Mediante el editor de diseño de GUIDE, es  posible diseñar gráficamente la interfaz de usuario. GUIDE Ilustración 3: Conexión de arduinos entre Maestro y Esclavo

En los arduinos UNO y más recientes podemos utilizar los pines SCL y SDA en vez de los A4 y A5. De esta manera dejamos libres estos últimos por si queremos utilizarlos como

genera entonces de manera automática el código de MATLAB  para construir la interfaz, el cual se puede modificar para  programar el comportamiento de la app.

Creación de una GUI de MATLAB de forma programática

ENTRADAS ANALÓGICAS. [5] A fin de ejercer un mayor control sobre el diseño y el desarrollo, también se puede crear código de MATLAB que defina las  propiedades y los comportamientos de todos los componentes. MATLAB contiene funcionalidad integrada que le ayudará a crear la GUI para su app de forma programática. Cabe la  posibilidad de agregar agregar cuadros de diálogo, controles de interfaz de usuario (como botones y controles deslizantes) y contenedores (como paneles y grupos de botones). [6] Ilustración 4: Entradas analógicas en nuevos arduinos

Código ASCII Es un código un código de caracteres basado caracteres basado en el alfabeto el alfabeto latino.  latino. 

GUI de MATLAB Las GUI (también conocidas como interfaces gráficas de usuario o interfaces de usuario) permiten un control sencillo (con uso de ratón) de las aplicaciones de software, lo cual elimina la necesidad de aprender un lenguaje y escribir comandos a fin de ejecutar una aplicación.

El código ASCII utiliza 7 bits para representar los caracteres, aunque inicialmente empleaba un bit adicional (bit de paridad) paridad)   que se usaba para detectar errores en la transmisión. A menudo se llama incorrectamente ASCII a varios códigos varios  códigos de caracteres de 8 bits que extienden el ASCII con caracteres propios de idiomas distintos al inglés, como el estándar  ISO/IEC  ISO/IEC 8859-1 8859-1.1 .1

Por lo general, la GUI incluye controles tales como menús,

En la actualidad define códigos para 32 caracteres no

 barras de herramientas, botones y controles deslizantes.

imprimibles, de los cuales la mayoría son  son  caracteres de

 

5 control que tienen efecto sobre cómo se procesa el texto, más otros 95 caracteres imprimibles que les siguen en la numeración (empezando por el carácter espacio). [7]

MLT-3  MLT-3 es la abreviatura de transmisión de niveles múltiples, y 3 de ellos significa que hay tres estados de esta codificación. MLT-3 se explica en varios documentos como

Ilustración 5: Comparación de MLT-3 con NRZ y NRZI

codificación de banda base de orden múltiple 3 o codificación de banda base de tercer orden. En el tercer orden, la señal generalmente se divide en tres estados potenciales: "potencial

III.  RECOLECCION DE INFORMACION Y RESULTADOS

 positivo", "potencial negativo" y "potencial "potencial cero".

DIAGRAMA DE PROCESO Reglas de codificación El MLT-3 funciona de la siguiente manera:



 

Usar el estado potencial no cambiante, es decir, mantener el estado potencial del bit anterior para representar el 0 binario;



 

Convertir el estado potencial mediante una secuencia  potencial (0, +, 0, -) de acuerdo con una onda sinusoidal para representar un 1 binario;

Las reglas de codificación son las siguientes:

1.  Si el siguiente bit es 0, el valor de salida es el mismo que el valor anterior; 2.  Si el siguiente bit es 1, el valor de salida tendrá una transición: si el valor de salida anterior es + V o -V, la siguiente salida es 0, si el valor de salida anterior es 0, entonces la siguiente salida el valor es opuesto al signo de valor anterior a cero. Ilustración 6: Diagrama del funcionamiento del programa pro grama

 

6  

Ilustración 9:Código de generación de señal de reloj

ELABORACION DEL TRANSMISOR

INTERFAZ MATLAB

 

Trama en binario

Se muestra toda la trama en binario para poder visualizar que sea la misma la que se está graficando.

Ilustración 10: bits a transmitir  

Obtención de datos

Ilustración 7: Interfaz en gui de Matlab A continuación, se muestra cómo se diseñó la interfaz mediante el software llamado GUII de Matlab, donde se puede trabajar ya que es una programación orientada a objetos y permite

Ilustración 11: Código de transformar de carácter a binario

visualizar las señales binarias a transmitir.  

Señal de reloj

Se usa una señal de reloj para ayudar a sincronicidad las tramas

 

Señal de datos

Se muestra se señal en pulsos de unos y ceros.

ya que por cada cambio de nivel se actualizará el reloj.

Ilustración 8: Señal de reloj

Ilustración 12: Señal de pulsos

 

7  

Código Señal Binaria  Cálculos de diferentes parámetros que se analiza en la transmisión de datos

Ilustración 13: Código para graficar la señal binaria 

 

Ingreso de caracteres

Ilustración 16: Cálculos

Se crea un edittext en donde se muestra e ingresa los caracteres a codificar.

 

Cálculos

Ilustración 14: Casilla de ingreso de caracteres

Ilustración 17: Código de cálculos e impresión de resultados  

Velocidad de transmisión

Se asigna una velocidad de transmisión la cual se despliega para

En Arduino

elegir.

INGRESO DE LIBRERIAS

Ilustración 18: Librerías Ilustración 15: velocidad de transmisión

 

8 Declaración de variables de filas y columnas para el teclado matricial, además creación del vector caracteres donde se guardarán los datos ingresados por el teclado matricial.  

Definir matriz de la tecla como co mo están distribuidas.

 

Inicialización del teclado Ilustración 21: Void setup

Comando void loop  

Código del teclado

Se realiza el código para el ingreso de los caracteres del teclado mediante un switch case el cual está realizado por caso para el ingreso de letras ya sea mayúsculas o minúsculas y el ingreso Ilustración 19: Configuración teclado

 

de números.

Ingreso de variables para control de teclas

Ilustración 22: Codificación del teclado Ilustración 20: Ingreso variables control teclado

Comando void setup

 

Se inicializa con los diferentes elementos a utilizar como es la

Tecla envió de mensaje:

lcd, la comunicación serial, las interrupciones que permiten

Al presionar la letra D en el teclado se procede a almacenar en

controlar el encendido y apagado del sistema.

el vector caracteres e imprime los datos ingresados por el teclado en la lcd. Además, convierte los caracteres ingresados por el teclado a código binario y esos son enviados a imprimir al serial del arduino.

 

9  

Ilustración 23: Código de envió almacenamiento en un vector y conversión de la palabra ingresada

Esquema general

Ilustración 25: Esquema general del sistema

Pulsador de control del sistema Se realiza una interrupción la cual controla el funcionamiento del sistema si este esté en encendido se habilitará el envío del mensaje mediante el teclado caso contrario el sistema del

 

Encendido del Sistema

transmisor estará apagado.

Ilustración 26: Sistema on Ilustración 24: Control de encendido apagado del sistema

 

Ingreso de datos

PRUEBAS Y FUNCIONAMIENTO Para verificar el correcto funcionamiento del transmisor se  procede a realizar una simulación en este caso en proteus para corroborar el código y su funcionamiento.

Ilustración 27: Ingreso de datos por teclado

 

10  

Envió de datos, impresión de datos en la lcd y en el monitor serial de Arduino convertido a código binario los datos ingresados.  

 

El código se basa en contar el número de unos que existen en la trama y con una división sobre dos, se  puede determinar determinar si es par o impar impar como se se muestra en la siguiente figura:

Ilustración 28: Envió de datos y conversión a binario de los datos ingresados.  

Simulación de conexión entre arduinos finalizado

Ilustración 31: Código de control de paridad

 

A continuación, se muestra los dos estados gráficamente:

Ilustración 29: Interfaz de conexiones entre arduinos finalizada

DESARROLLO

DE

CONTROL

DE

Ilustración 32: Representación de 15 bits en uno, por lo cual si se selecciona paridad impar se debe incrementar un cero al final de la trama

ERRORES

MEDIANTE BIT DE PARIDAD, YA SEA PAR O IMPAR  

Se uso un popup menú el cual sirve para seleccionar las opciones de paridad par e impar

Ilustración 33: Representación 15 bits en uno, por lo cual si se selecciona paridad par se debe incrementar un uno al final de la trama Ilustración 30: Botón de control

 

11

CODIFICACIÓN MLT-3 Se genera un conteo bit por bit y se compara si es un uno va cambiado de estado ya sea (1, 0 o -1) y se va guardando en la variable mlt, como se muestra en la siguiente figura:

confirmación lo cual viene representado por la palabra ACK que va del receptor al transmisor y como ultimo proceso del sistema esto pasa al interfaz de Matlab el cual se encarga la  paridad y la respectiva codificación codificación en MLT-3

Ilustración 36: Codificación de la palabra FICA

Ilustración 34: Código de codificación mlt-3

 

Gráficamente se obtiene de la siguiente forma y se la representa a continuación:

Ilustración 37: Interfaz de Matlab con todos los datos del sistema requeridos

Ilustración 35: Codificación mlt-3

 

IV.

V.  ANEXOS

ANALISIS DE RESULTADOS

Como resultado final se obtuvo una codificación exitosa, tomando en cuenta que cada letra del teclado tiene almacenado 3 letras en cada tecla, esto se guardara en un vector, lo cual hace  posible realizar la comunicación serial, proporcionando todas las letras del alfabeto, dando paso así a que el transmisor convierte un carácter de código ASCII a código en binario para así poder realizar el envío de dato bit a bit de una manera secuencial, logrando enviar y por ende recibir el mensaje de

Ilustración 38: Proyecto en funcionamiento

 

12 envían mediante un puerto I2C, incluye la información que se envía siempre existe una confirmación de recepción por parte del dispositivo y por otro lado su arquitectura permite tener una confirmación de los datos recibidos, dentro de la misma trama.  

Se logro determinar que el código MLT-3 da como característica importante que un bit en 0 se codifica con el mismo valor del valor precedente, por lo cual  para la realización del proyecto se suposo un estado

Ilustración 39: Sistema realizando la respectiva codificación

anterior de bit, es decir, mantener el estado potencial del bit anterior para representar el 0 binario. Wilmer Benavidez  

El uso de los puertos I2C que posee Arduino permite la trasmisión sincrónica de datos con ayuda de un clock para mejorar la sincronización y evitar errores de

Ilustración 40: Foto grupal de los integrantes

interferencia de intersímbolo.  

Al trabajar con el puerto COM del ordenador hay que tener en cuenta que se debe abrir la comunicación y cerrar al momento de capturar los datos con matlab, dado el caso de no cerrar causar problemas al querer usar la comunicación serial de dicho puerto COM.

 

Los puertos COM permite tomar los datos de la comunicación serial para posteriormente poder codificar y enviar al receptor

Ilustración 41: Integrantes del grupo en trabajo

Alexander Ichau  

VI.  CONCLUSIONES

transmisor convierte un carácter de código ASCII a código en binario para así poder realizar el envío de ese dato bit a bit de una manera secuencial como por

Axel Almeida  

 

Se concluyo que al realizar la comunicación serial el

Para una señal que carezca de componente continua

ejemplo la letra A que en el código ASCII es el 65 y

deberá depender de la eficiencia de transmisión ya que

en el binario 1000001 para el envío de estos caracteres

no hay una señal opuesta que la l a elimine, lo cual puede

se utiliza la comunicación serial la cual envía bit a bit

no llegar a identificar la componente que va a trasmitir.

el mensaje.

Para una óptima conexión serial entre arduinos el

 

Es necesario que en la comunicación entre el

 protocolo I2C es uno de los más utilizados y óptimos ópti mos

transmisor y el receptor exista una ACK para validar

 para comunicarse, en donde los mensajes que se

el envío del mismo y así dar mayor confiabilidad al

 

13 envió de los datos con una certeza de que estos llegaran a su destino.  

Matlab es una interfaz que brinda facilidad para interpretar los datos de una forma individual como lo son la señal de datos y su respectiva codificación MLT-3 además se puede apreciar el aumento de un bit de paridad en este caso será un 1 si la paridad es impar i mpar o será un 0 si la paridad es par. VII.  REFERENCIA

[1]

«MathWorks,» [En línea]. Available: https://es.mathworks.com/help/matlab/learn_matlab/product-description.html. https://es.mathworks.com/help/matlab/learn_matlab/product-description.html. [Último acceso: 10 07 2019]. [2] «Xataka Basics,» [En línea]. Available: https://www.xataka.com/basics/que-arduino-como-funciona-que-puedes-hac https://www.xataka.com/basics/que-arduino-como-funciona-que-puedes-hacer-uno. er-uno. [Último acceso: 09 07 2019]. [3] «IBM,» [En línea]. Available: https://www.ibm.com/support/knowledgecenter/es/ssw_aix_72/com https://www.ibm.com/support/knowle dgecenter/es/ssw_aix_72/com.ibm.aix.networkcomm/asynch_params .ibm.aix.networkcomm/asynch_params_parity.htm. _parity.htm. [Último acceso: 2019 07 2019]. [4] [5] [6] [7] [8]

[En línea]. Available: https://sites.google.com/site/smrmmeespenetas/memoria-ram/bit-paridad-par-e-impar-bit-dehttps://sites.google.com/site/smrmmeespenetas/memoria-ram/bit-paridad-par-e-impar-bit-deredundancia. [Último acceso: 09 07 2019]. [En línea]. Available: http://kio4.com/arduino/30conectardosarduinos.htm. http://kio4.com/arduino/30conectardosarduinos.htm. [Último acceso: 25 07 2019]. «GUI de MATLAB,» [En línea]. Available: https://es.mathworks.com/discovery/matlab-gui.html. https://es.mathworks.com/discovery/matlab-gui.html. [Último acceso: 09 07 2019]. «Universidad Nacional Autonoma de México,» [En línea]. Available: http://informatica.dgenp.unam.mx/recomendaciones/codigo-ascii. http://informatica.dgenp.unam.mx/recome ndaciones/codigo-ascii. [Último acceso: 09 07 2019]. M. D. WOLFRAM. [En línea]. Available: http://www.wolfram.com/mathematica/. [Último acceso: 09 07 2019].

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF