Está en la página 1de 5

Práctica 2

Universidad de San Carlos de Guatemala


Facultad de Ingeniería
Escuela de Ciencias y Sistemas
Arquitectura de computadores y ensambladores 1
Primer semestre 2023
Ing. Otto Rene Escobar Leiva
Tutor Académico Sección A. Ronald Marín
Tutor Académico Sección B. Mario Pineda

Objetivo General
Que el estudiante adquiera, aplique e interactúe con el microcontrolador Arduino de forma física.

Objetivos Específicos
Aplicar el conocimiento adquirido en simulación.
Aprender a comunicar dispositivos por medio de I²C - Maestro - Esclavo
Utilizar sensores físicos para la resolución de problemas.
Aplicar el lenguaje C++ para estructuras de control en Arduino.

Desarrollo
Descripción

Se necesita desarrollar una clasificadora automática de paquetes, de los cuales se requiere conocer sus
dimensiones, etiqueta de identificación además de enrutarlos adecuadamente.

Los datos obtenidos durante cada ciclo de funcionamiento deben ser almacenados para posteriormente
mostrarlos en una la interfaz LCD.

Especificaciones
Se debe implementar la solución haciendo uso de, al menos, dos dispositivos de tipo arduino comunicados por
medio de I²C.

Nota: Debido a que esta práctica está orientada hacia la comunicación I²C, esta debe implementarse
para tener derecho a calificarse.

Se debe implementar un sistema de encendido central, por medio de un switch, para la solución completa; no
importando si se usan distintas fuentes de alimentación.
Cada vez que se inicie la solución, se debe mostrar un mensaje de inicio en una pantalla LCD 16x2 con el
siguiente formato:

<símbolo>GRP <número de grupo>-<sección> ACE1<símbolo>


starting

Ejemplo:

⌛GRP 03 B ACE1⌛
starting

Mensaje que debe permanecer visible todo el tiempo que el equipo se encuentre en este proceso, el
desarrollador, debe asegurarse que todos los componentes están en sus posiciones iniciales y la comunicación
entre dispositivos sea exitosa; no puede ser menor a 5 segundos.

Una vez terminado el proceso de inicio debe mostrarse en pantalla un mensaje que indique que está listo el
equipo y se pedirá que presione un botón para mostrar el menú de trabajo.

<símbolo>ready to start<símbolo>
press x for menú

Ejemplo:

℧ready to start℧
press x for menú

Además de los mensajes informativos deben existir indicadores visuales que nos muestren el estado del
equipo, led(s) de distintos colores para identificar que el equipo está iniciando, listo, trabajando o pausa; todos
ellos claramente distinguibles entre sí.

Todos los paquetes llegan a la máquina previamente identificados con una etiqueta de color (rojo, azul y
amarillo), la misma es utilizada para conocer el tipo de producto, por lo que el equipo debe ser capaz de leer
esa etiqueta para decidir su enrutamiento final.

La etiqueta se encuentra únicamente en uno de los lados del paquete y en ocasiones quien alimenta la
máquina no tiene cuidado de colocar correctamente el paquete para que pueda ser leída la etiqueta, estos
paquetes deben ser descargados al final de la cadena de decisión para su posterior reproceso.

Para todos los paquetes correctamente identificados, por medio de la etiqueta, se desea conocer el volumen
que ocupa dicho paquete, ya que todos son ortoedros de distintas dimensiones, para esto, se debe identificar
al largo, ancho y altura; además se sabe que las dimensiones de los paquetes rondan entre 2x5x2 hasta 10x5x6
centímetros.

En el trayecto de la clasificadora deben existir salidas para los tres tipos de paquetes distintos dejando, como
se mencionó previamente, los paquetes no identificados para el final del trayecto.

Debido al volumen de envíos recibidos, el trayecto debe poder manejar, al menos, 2 paquetes en curso (luego
de la identificación) + 1 que se encuentre en proceso de identificación.

Se solicita que se integren dos dispositivos de arduino ya que se dividirán las funciones entre ellos, uno se
encargará de la detección de sensores y motores, mientras que el otro tendrá a su cargo la pantalla LCD y el
manejo de los datos.

El arduino que maneje los sensores no deberá guardar los datos finales de ninguna manera, únicamente se
encargará de enviar los mismo en el momento que son requeridos para su manejo documental.

La clasificación debe ser certera, por lo que se necesita implementar una detección fehaciente para saber que
un paquete ha llegado a cada una de las estaciones de clasificación, cada vez que se detecte un paquete en una
de estas estaciones debe ser indicado por medio de un led, hasta entonces enviará al arduino maestro los
datos que corresponden al paquete que fue depositado como identificado plenamente, los datos a enviar son
tipo de paquete, largo, ancho y altura.

Los paquetes rechazados únicamente deben enviar la cantidad de los mismos hacia el arduino maestro.

Con el objetivo de procesar todos los paquetes, se contará con una función que permita reprocesar los
paquetes rechazados, en esta etapa se buscará (aunque puede existir error aún) los paquetes que no fueron
identificados se reprocesen, por lo que el sistema deberá ir descontando cada paquete pendiente (que recibió
en la etapa anterior) luego de una nueva identificación exitosa; se podrá repetir este proceso hasta que no
quede ningún pendiente.

Se debe contar con una opción que permita indicarle al arduino maestro que la etapa actual ha terminado, y
mientras exista en su conteo paquetes pendientes (si los hay debe mostrar un mensaje y la cantidad de
paquetes) únicamente permitirá iniciar una nueva etapa de reproceso.

Se permite finalizar el proceso de detección hasta que se hayan identificado plenamente todos los paquetes.

Menú
No se dan detalles de las opciones del menú pero deben ser claras y explícitas para poder cubrir todas las
necesidades del actual desarrollo.

Despliegue de datos
Al final de un proceso completo de clasificación se deben mostrar los siguientes datos:

Número de etapas de reproceso de paquetes.

Media y mediana del volumen total de paquetes identificados.


Cantidad de paquetes identificados por tipo (color) para cada etapa; se debe poder seleccionar la etapa
a verificar (Lectura inicial, reproceso 1, ..., reproceso n).

Mostrar paquete por paquete los datos identificados para cada etapa, en orden de llegada; se debe
poder seleccionar la etapa a verificar.

Media y mediana del volumen de los paquetes identificados por color de etiqueta.

Componentes a utilizar
Dos dispositivos arduino con capacidad de comunicación I²C.
Switch
Pantalla LCD 16x2
Sensor ultrasónico HC-SR04 (1 obligatorio o más si el grupo lo considera necesario)
Sensor de color
Push button (los que el grupo considere necesarios)
Resistencias (las que el grupo considere necesarias)
Led infrarrojo - Emisor y receptor (los que el grupo considere necesarios).
Sensor fin de carrera (los que el grupo considere necesarios)
Motores (tipo y cantidad a discreción del grupo)

Entregables
Código funcional del proyecto (link al repositorio de gitlab)
Manual técnico (desarrollado en markdown)
Manual de usuario (desarrollado en markdown)

Entrega
La entrega, en UEDI, será el link al repositorio de gitlab
El nombre del repositorio responde a la siguiente estructura:
ACE1-
Año
Período
Código curso
Sección
"G" + Número de Grupo.
PRA2

ej. ACE1-231S0778BG13PRA2

Todos los miembros de grupo deben tener mínimo un commit como muestra de su participación.
Realizar el último commit y hacer su entrega en UEDI antes de 23:59 horas del 27 de febrero.
Se ejecutará un checkout hacia el último commit hecho antes de la fecha de entrega.
Se debe agregar al auxiliar de su sección como developer del repositorio
Sección A: @romasa000
Sección B: @pinedaMario

Observaciones y restricciones
La realización de la práctica es en grupos
La práctica debe ser desarrollada en físico, no puede ser simulada.
La práctica debe ser desarrollada conectando los arduinos por medio de I²C
El grupo debe preparar al menos 15 paquetes distintos para analizar al momento de la calificación y las
etiquetas de color deben de poderse intercambiar.
Si los resultados individuales no coinciden con la lectura en la calificación se asumirá que el grupo usó
datos quemados por lo que invalidará la práctica completa.
Las únicas librerías permitidas serán:
LiquidCrystal para el manejo de la pantalla LCD
https://www.arduino.cc/en/Reference/LiquidCrystal
Stepper.h en caso de haber elegido un motor de este tipo
https://www.arduino.cc/reference/en/libraries/stepper
Servo.h en caso de haber elegido un motor de ese tipo
https://www.arduino.cc/reference/en/libraries/servo/
Wire para el manejo de la red I²C
https://www.arduino.cc/en/reference/wire
Se calificará encapsulamiento
El día de la calificación se harán preguntas y/o se pedirá modificación de código sobre aspectos y
conceptos utilizados en la elaboración de la práctica, estas serán consideradas en la nota final de la
actividad.
Se debe realizar la entrega en UEDI antes de su vencimiento para tener derecho a calificación.
Copias parciales o totales tendrán una nota de 0 puntos y los involucrados serán reportados a la Escuela
de Ciencias y Sistemas.

También podría gustarte