Sistema de Comunicacion Serial Entre Dos Arduino
July 8, 2022 | Author: Anonymous | Category: N/A
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