2da Entrega Informe - USB-EC3883-III-2019/EC3883-G01 GitHub Wiki

Universidad Simón Bolívar
Departamento de Electrónica y Circuitos
Profesor: Novel Certad
Asignatura: Laboratorio de Proyectos III
Código: EC-3883
Trimestre: Septiembre – Diciembre 2019

2da ENTREGA INFORME: TORRES DE COMUNICACIÓN SOLINDAR

Integrantes del grupo:
Fulvio D’Adazzio Carnet: 07-40794
Harold Harting Carnet: 14-10477
Sección: 1 Grupo: 1

INTRODUCCIÓN

El proyecto consiste en el desarrollo de una red de comunicaciones entre torres. La finalidad es establecer la red de manera tal que sea posible la detección de la ubicación de la torre receptora por infrarrojo para enviar un mensaje escrito por el usuario. Se dividirá el rango de las torres en 6 zonas para facilitar este proceso de detección. La información será enviada a través del infrarrojo entre las torres y mediante comunicación serial entre la interfaz gráfica en la PC y el microcontrolador.

Recursos a utilizar:

  • DEMOQE128 con microcontrolador MC9S08QE128
  • Sensor Infrarrojo SHARP_GP2Y0A21YK
  • Sensor Ultrasónico SRF05
  • Receptor infrarrojo TSOP1136
  • Motor de pasos

DIAGRAMA DE BLOQUES GENERAL DEL PROYECTO:

Usando el proyecto anterior y la lógica de captar las mediciones de los sensores de distancia, logró la localización según la posición del motor de pasos de las torres correspondientes para efectuar la transmisión de datos entre ellas a través de sensores infrarrojos. Por otro lado se desarrolló una interfaz gráfica para visualización del envío y recibimiento de los datos.

ACONDICIONAMIENTO

Para la etapa de acondicionamiento se tenía previamente el siguiente esquema:

Esto se realizó de la siguiente forma:

IMAGEN CIRCUITO PROTOBOARD

MICROCONTROLADOR

Explicacion F

Para la etapa del microcontrolador se tiene:

Siguiendo la lógica previamente establecida se estructuró toda la codificación realizada en esta etapa. El esquema se muestra a continuación:

IMAGENES CODIGO CW y explicacion F

INTERFAZ

Del lado de la interfaz se tenía previsto el siguiente esquema:

El esquema propuesto contemplaba la siguiente metodología:

Se elaboró el siguiente display en appdesigner de MATLAB 2018b:

Con este, el usuario es capaz de elegir las zonas donde están ubicadas las torres que se desean comunicar. También introduce el mensaje que se desea enviar, además de recibir el mensaje cuando venga de alguna de las otras torres.

El protocolo de comunicación acordado a utilizar fue el siguiente:

Con esta codificación, se pueden realizar hasta 4 saltos para una ruta en específico y se puede enviar un mensaje de un byte, el cual se divide para poder cumplir con los requerimientos de tiempo del receptor infrarrojo. Dado el protocolo se implementaron las funciones de codificación y decodificación de la trama de datos que serían enviados por puerto serial desde el microcontrolador a la interfaz y viceversa.

Como se puede observar, en ellas se codifica el mensaje conforme el protocolo asignado y se envía al microcontrolador. La de recibido cumple la función de rearmar el mensaje a partir de la trama de bits recibido por el puerto.

El código implementado en appdesigner es detallado a continuación:

Primero se declaran las variables a utilizar y se inicializa el puerto serial como se muestra en la imagen:

Luego se implementa el caso para cerrar el puerto serial. Además, se realizan las asignaciones de los valores de las zonas introducidas a las variables Z1, Z2, Z3 y Z4 respectivamente.

Cuando se introducen tanto el mensaje como las zonas y se presiona el botón de envío, se procede a llamar a la función de codificación y enviar la trama por el puerto serial. Luego de que es enviada, se procede a entrar en un while(1) para quedar a la espera de un mensaje que se reciba eventualmente por el puerto. Cuando esto pasa, se llama a la función de decodificación y se procede a mostrar el mensaje en el campo de mensaje recibido en la interfaz.

A continuación se detallan los condicionales empleados para discernir si un mensaje es adecuado o no para ser enviado, ya que solo se cuenta con un solo byte disponible para el mismo. Se agregó un campo DEFAULT que sirve para inicializar los valores en los campos de introducción de información en la interfaz, así como también para borrar los datos en los mismos (enviar otro mensaje). Cuando se selecciona ASCII, se procede a tomar solo el primer caracter de la información introducida (letra, número o símbolo) y se verifica cuál fue introducido para asignarle su valor correspondiente de la tabla ASCII. Este valor será el que se envíe a traves del puerto serial. (Nota: no se incluyeron las letras mayúsculas, algunos símbolos especiales y letras con acentos).

Finalmente en el caso ASCII, si un caracter no se encuentra en los especificados se muestra un mensaje de error. Si por el contrario, se introduce cualquiera que esté dentro de los especificados, es tomado y el led de OK to Send se coloca de color verde. Para el caso decimal se verifica que los datos introducidos sean números y esten dentro de 0 a 127 (decimales posibles de representar con un byte). Si cumplen se envía sin problemas, si el decimal se pasa de 127 se envía 127 al ser el máximo valor posible.

Para el caso binario, se verifica que el número introducido sea de solo 0s o 1s. Si el número tiene más de 8 dígitos se limita a este tamaño para enviarlo. Si se introduce una letra o números distintos de 0 o 1 da un mensaje de error.

Luego de explicado el código se muestran los casos posibles de mensajes a enviar y sus respectivas notificaciones que se pueden observar en la interfaz:

Caso mensajes ASCII:

Casos mensajes binarios:

Casos mensajes decimales:

Luego finalmente, para cuando se recibe un mensaje, se muestra de la siguiente manera (esto es similar para cualquier tipo de mensaje que se reciba, es decir, se muestra el valor númerico del mismo):

⚠️ **GitHub.com Fallback** ⚠️