En el marco de la cursada de Informática II en la UTN, se desarrolló un vehículo autónomo denominado "Cucatesla", debido a que se mueve de forma autonoma buscando puntos oscuros.
El proyecto consistió en diseñar e implementar un sistema embebido sobre un microcontrolador NXP LPC845, capaz de operar en dos modos de funcionamiento (control remoto desde PC y autónomo), detectar obstáculos mediante sensores ultrasónicos, responder a variaciones de luminosidad y mantener comunicación bidireccional con una interfaz de usuario.
La arquitectura del sistema se organiza en torno a dos entidades: una estación base (PC con interfaz de usuario) y el nodo embebido (LPC845).
La lógica de control se estructuró en dos máquinas de estado principales: mde_mov (gestión del movimiento) y mde_com (análisis de tramas y configuración). El sistema admite comandos manuales (desplazamientos y giros) así como un modo autónomo que evalúa distancias para determinar maniobras de evasión.
Dado que no se empleó el SDK estándar de NXP, se implementaron drivers de bajo nivel para los siguientes periféricos:
El desarrollo cumplió con los requerimientos funcionales establecidos: Control remoto mediante comandos seriales (desplazamiento y giros). Modo autónomo con barrido del sensor delantero, detección de obstáculos y toma de decisiones (giro a derecha, izquierda o retroceso). Detección de cambios en la luminosidad ambiental, con notificación a la PC. Comunicación bidireccional estable y configuración dinámica de parámetros (velocidad, distancia mínima de obstáculo, frecuencia de giro). Se identificaron y resolvieron fallas durante la etapa de integración, tales como cortocircuitos en el PCB y saturaciones en el enlace de comunicación.
Este proyecto representó mi primera experiencia en el desarrollo de sistemas embebidos, lo cual implicó una curva de aprendizaje significativa. En particular enfrentamos dos dificultades técnicas.
Una dificultad fue que el auto respondia a todos nuestros comandos, hasta que al hacerlo moverse hacia adelante se cortaba la comunicacion por unos segundos. Luego de mucha prueba y error descubrimos que el pico de consumo de los motores superaba al de la alimentacion, provocando que el sistema se apague por un instante. Esto me enseño el abarque multidisiplinario que presentan errores en un sistema embebido, teniendo que contemplar problemas de software, mecánicos y electricos hasta encontrar la raiz del problema.
Otro problema vino de la implementacion del CTIMER propio del microcontrolador. Aun siguiendo los pocos codigos ejemplo en ingles o español que encontrabamos en la web y releyendo la seccion correspondiente al manual, se termino por hacerlo andar a prueba y error, llendo en contra de la configuracion recomendada. Recuerdo que a las pocas semanas de haber finalizado el proyecto se lanzo chatGPT, y otro compañero del equipo nos envio capturas en donde resolvia la configuracion del CTIMER de la misma manera que lo habiamos hecho nosotros, pero en unos segundos.
Este proyecto fue uno lleno de primeros, consolidando competencias en programación de microcontroladores, interpretación crítica de manuales técnicos, diseño de arquitecturas de firmware y resolución de problemas de integración hardware-software.
Acceso al repostorio con el codigo fuente puede encontrarse en el siguiente respositorio.