Saltar a contenido

8. Versión 5: funcionalidades de libre elección

En las últimas sesiones puedes poner a punto la versión final del sistema e incluir diversas funcionalidades a tu elección. Con ello podrás alcanzar la máxima nota. Recuerda que (i) el proyecto es el \(70\%\) de la nota total, y (ii) que el proyecto propuesto con especificaciones mínimas obligatorias tiene un máximo de 8 puntos. Estas funcionalidades de libre elección son un \(20\%\) de la nota final, ¡no las dejes!

8.1 Posibles funcionalidades

Las sugerencias que se muestran son orientativas. La valoración de la dificultad (de diseño y de implementación) también. No obstante, se valorarán especialmente aquellas funcionalidades que conlleven algún tipo de esfuerzo por parte del alumno a un mayor número de niveles. Así, se tendrán en cuenta los 3 niveles de la arquitectura típica de cualquier sistema embebido: (i) nivel SW o de aplicación (nivel superior en verde de la pila presentada en la ), nivel HW (nivel inferior en rojo), y nivel de SW de sistema o nivel dedicado a la integración HW-SW (nivel intermedio en naranja), mediante el uso de drivers (i.e. controladores o librerías) SW para el manejo de dispositivos.

Niveles de valoración de las posibles funcionalidades a implementar.

Así, el impacto de la funcionalidad se valorará según las escalas de la figura de niveles , y podría puntuar, orientativamente, como se indica:

  • Solo el primer nivel: BAJA valoración, por tratarse de una funcionalidad que solo requiere modificar código. Hasta \(0.5\) puntos.

  • Solo los dos primeros niveles: valoración MEDIA, por tratarse de una funcionalidad que, además de modificar el código, requiere del uso de algún nuevo recurso del STM32F446RE o la placa (como por ejemplo otro temporizador, PWM, uso de ADC, FSM) o de una configuración alternativa de los ya usados (bien sean HW o SW). Entre \(0.5\) y \(1.0\) puntos.

  • Los tres niveles: valoración ALTA, por afectar a todos los niveles de diseño del sistema, por lo que es fundamental que se incluya nuevo HW al sistema. Entre \(1.0\) y \(1.5\) puntos.

En cualquier caso, las funcionalidades aquí propuestas o las que tú sugieras, pueden implementarse de distintas formas más o menos complejas y con distintos grados de perfección (calidad), por lo que la calificación final dependerá de ambos aspectos. Igualmente, la originalidad o la novedad de tus propuestas, será tenida en cuenta para la evaluación. Hacer una funcionalidad no implica necesariamente conseguir toda la puntuación. Del mismo modo, podrían conseguirse más puntos de los previstos, si se merece.

ATENCIÓN

Es obligatoria para todas las funcionalidades meter su documentación Doxygen incluyendo, si es necesario, diagramas o imágenes que expliquen el funcionamiento de la nueva funcionalidad. Se ha de hacer un vídeo demostrativo corto, 2-3 minutos con lo más relevante de tus propuestas. Incluye un enlace público al vídeo en el README.md.

Recuerda que tienes el vídeo de ayuda "[MatrixMCU] Documentación de código con Doxygen”.

Podrías hacer uso de HW disponible en el laboratorio como teclados matriciales de 16 botones y pantallas LCD. También puedes añadir el tuyo. A continuación se muestran algunas posibles ideas para añadir al sistema o convertirlo en parte de otro proyecto mayor. Pero recuerda que ¡las más interesantes son las que a ti se te puedan ocurrir!

Si tienes dudas sobre la implementación o valoración de estas u otras funcionalidades, no dudes en ponerte en contacto con cualquiera de los profesores de la asignatura.

Guarda una copia de tu proyecto como simone_v5 separada de la que contiene los requisitos básicos V1-V4, y súbelo a Moodle en el buzón preparado para V5. No olvides incluir el vídeo demostrativo en el README.md.

Descripción Dificultad
Añadir un modo inverso para que el jugador tenga que repetir la secuencia empezando por el último color mostrado hasta el primero. 🟢 BAJA
Tecla wildcard para permitir repetir la última secuencia. 🟢 BAJA
Sistema de vidas para permitir un margen de error antes del Game Over, indicando los fallos restantes con parpadeos o colores específicos. 🟢 BAJA
Añadir estadísticas de partida para medir y mostrar por consola el tiempo medio de reacción del jugador entre colores o la ronda máxima alcanzada. 🟢 BAJA
Meter el tiempo de anti-rebote como característica HW del botón y que no se le pase a la FSM del botón, sino que se le pida al PORT. 🟢 BAJA
Que haya un indicador LED para mostrar las distintas situaciones del sistema (cuando se ha encendido, apagado, etc.). 🟢 BAJA
Añadir un nuevo botón para gestionar algún aspecto de la gestión del juego, o añadir estadísticas de uso en un campo de la FSM. 🟡 BAJA-MEDIA
Que el botón mida el tiempo de pulsación con input capture (en lugar de con ticks) en proporción al tiempo que ha estado encendido el LED. 🟡 BAJA-MEDIA
Implementar alguna funcionalidad que tenga en cuenta que el botón de usuario está pulsado más de un tiempo determinado. 🟡 BAJA-MEDIA
Añadir un zumbador (Buzzer) para generar tonos musicales distintos mediante PWM asociados a cada color sincronizados con la luz. 🟠 MEDIA-ALTA
Diseñar o adaptar diseños de impresiones 3D para Nucleo y hacer el sistema más robusto (ver diseños en Thingiverse o Tinkercad). 🟠 MEDIA
Multijugador local integrando un segundo teclado matricial y modificando la FSM para permitir un modo versus (uno propone secuencia, otro repite). 🟠 MEDIA-ALTA
Desarrollo de test unitarios y ejemplos exhaustivos de todo el proyecto (cobertura de código superior al habitual). 🟠 MEDIA-ALTA
Multijugador remoto conectando dos placas STM32 mediante UART, I2C o transceptores inalámbricos para jugar una partida sincronizada a distancia. 🔴 ALTA
Crear una interfaz gráfica de PC que se comunique por puerto serie y muestre el tablero de colores y puntuaciones en la pantalla del ordenador en tiempo real. 🔴 ALTA
Integrar un lector de tarjetas RFID o cualquier otra forma de comunicación inalámbrica que permita interactuar con el sistema. 🔴 ALTA
Nuevos esquemas y montajes PCB. 🔴 ALTA
Integrar interfaces de visualización alternativa (display LCD, web, móvil), comunicación con la nube... 🔴 ALTA