Universidad Nacional de Colombia. Agudelo, Pinilla, Sánchez. Introducción a la Plataforma LEGO.1 Introducción a la Plataforma LEGO Mindstroms Agudelo, Daniela., Pinilla, Andrés y Sánchez, Daniel. {sdagudelos, afpinillat, djsanchezm}@unal.edu.co Resumen— En el informe presentado a continuación, se encontrará de una manera precisa los lineamientos que se deben tomar a la hora de trabajar la plataforma de programación NXC, usada para controlar los conocidos robots programables Lego Mindstorms. También se utilizaron códigos simples que permitirán conocer de una mejor manera la lógica de procesamiento de dichos robots en tareas de desplazamiento y velocidad. I. INTRODUCCIÓN El presente documento, está enfocado a ser un primer acercamiento a la plataforma LEGO Mindstroms, en particular al lenguaje de programación NXC, con el fin de permitir a aquellos que buscan iniciarse en áreas básicas, pero prácticas de la disciplina de Control, una aproximación amable a algunas características de hardware y software que ella presenta. La manera en la que la práctica se desarrolló, consistió en primera medida de establecer algunas definiciones básicas de la plataforma, así mismo a las características principales de algunos de los sensores más comunes, también se buscó aproximarse a la programación del lenguaje y sus parámetros. Entre las dificultades encontradas se destacó la falta de conocimiento por parte del equipo elaborador, en la existencia y manejo de este tipo de tecnología. II. A. 1) PROCEDIMIENTO Introducción al Hardware Mecanismos de alimentación eléctrica La fuente de alimentación puede ser una batería recargable de litio o seis pilas AA. Éstas últimas deben ser, preferiblemente, no recargables, ya que la potencia que entregan puede variar y ocasionar fallas energéticos. El adaptador para realizar la conexión puede tiene una tensión nominal de 120VAC a 60Hz, aunque también está para otros países con 230VAC a 50Hz. El reemplazo de las baterías debe tomar un tiempo inferior a un minuto, de lo contrario la información almacenada se pierde. 2) Comunicación entre actuadores y el brick En la sección “connections” se puede ver los dispositivos a los que el NXT está conectado, incluyendo otros NXT. El número máximo de dispositivos conectados a la vez es 3, pero la comunicación del NXT con los periféricos sólo puede realizarse uno por uno. 3) Elementos internos a) Procesador principal y de respaldo Se cuenta un procesador principal ARM7 de 32-bits, con una FLASH de 256 Kbytes y una RAM de 64 Kbytes. Trabaja a 48MHz. El procesador de respaldo es un ATMEL AVR de o bits, con 4 kbytes de FLASH y 512 bytes de RAM. Trabaja a 8MHz. Estos dos procesadores se comunican mediante el protocolo I2C a 380kbytes/s, al actualizar dos registros de memoria cada 2ms. b) Puertos de entrada y salida Los cuatro puertos de entrada se comunican con el procesador AVR, el cual toma 333 muestras por segundo, convirtiendo los datos análogos a digitales, para ser enviados al procesador principal. Los tres puertos de salida permiten al NXT interactuar con los actuadores mediante señales PWM, las cuales son controladas por un motor (700mA, 1A pico). c) Puerto USB El bloque de NXT puede comunicarse con el computador mediante la interfaz de USB que posee, la cual ya viene en la versión 2.0. d) Bluetooth El dispositivo CSR BlueCore TM en su versión 2.0, cuenta con el sistema Enhanced Data Rate (EDR), el cual es compatible con los modos de modulación a 2Mbps y 3Mbps. Universidad Nacional de Colombia. Agudelo, Pinilla, Sánchez. Introducción a la Plataforma LEGO. 2 e) Matriz de puntos La pantalla se compone de una matriz de puntos, con dimensiones: 60 x 100 pixeles. f) Parlante El parlante es controlado por el procesador principal por medio de pulsos modulados según su ancho. El parlante funciona a 8KHz y tiene una impedancia de 6Ω. El consumo de potencia se da de acuerdo a la frecuencia. [1] B. Estructura de programación La estructura básica de programación bajo el lenguaje NXT en BricxCC puede describirse o definirse en dos partes. El lenguaje como tal, que permite conocer la sintaxis de nuestros programas y el API que se conoce así por sus siglas en inglés (Application Programming Interface) que se encarga de almacenar las funciones, constantes y macros de los programas que se desean compilar. En cuanto a las sentencias que se utilizar en BricxCC, se tienen las ya utilizadas en C: If, if else, while, do while, for, repeat, switch, goto y until [3]. En cuanto a los sensores que el brick puede utilizar, dos de los más importantes debido a sus múltiples aplicaciones son los de Luz y Ultrasonido. El sensor de Luz funciona a través de un LED emisor integrado [4], el cual posibilita medir y clasificar la intensidad de luz reflejada sobre los objetos de su entorno en una escala que va desde 0 hasta 100. Este dispositivo puede ser usado de dos maneras diferentes como lo son: la identificación de colores y la medición de luz ambiental. La programación en NXC tiene ciertas reglas de escritura. Por ejemplo: se entenderá que al colocar comandos como “while”, se deberán respetar las letras mayúsculas y minúsculas, ya que si se coloca “While” o “wHile”, el compilador no reconocerá el comando y las fallas empezarán a presentarse. De igual manera, la forma de presentar en el programa números o palabras deberá ser regulada, ya que BrixCC puede reconocer números tanto en decimal como hexadecimal y en el caso de las palabras, la plataforma reconocerá únicamente las palabras dentro de comillas, como una variable String. Antes de continuar y hablar de las estructuras básicas del lenguaje, es necesario nombrar las constantes soportadas por el compilador. A continuación se exponen los diferentes tipos de variables junto a un ejemplo [2]. Ilustración 1Sensor de Luz Por su parte el sensor de Ultra sonido envía ondas de alta frecuencia que rebotan sobre los objetos y vuelven al sensor [4], con lo cual le basta para establecer distancias y posibles geometrías de lo que enfrente de él se encuentra. El alcance de este dispositivo es de 100 pulgadas con una error no mayor a 3 pulgadas. TABLA I Tipos de Variables Variable Bool Byte Char Int Short Long Unsigned Float Mutex String Ejemplo True or False A 1, -23 Oxfff , -23 -88235 2.7182 "Hola" Arrays arreglo []; Ilustración 2 Sensor de Ultrasonido Los sensores anteriores a pesar de ser altamente confiables presentan dos limitaciones, donde una de ellas es respecto a su par de la versión EV3, la primera es que deben estar conectados al brick de manera alámbrica lo que puede restringir su uso y la segunda de ellas es que los sensores EV3 devuelven valores nuevos en 1000 veces/seg mientras que los sensores NXT solo devuelven valores nuevos 333 veces/seg. C. Introducción al Software Por el momento no es necesario. Universidad Nacional de Colombia. Agudelo, Pinilla, Sánchez. Introducción a la Plataforma LEGO. III. CONCLUSIONES Por el momento no son necesarias. REFERENCIAS [1] NXT User Guide. Lego Mindstorms Education. [En línea]. Consultado el 18 de Agosto de 2014 en: http://cache.lego.com/downloads/education/9797_LME_ UserGuide_US_low.pdf [2] Doxygen 1.6.2 NXC. Version 1.2.1.[En línea]. Consultado el 19 de agosto de 2014 en: http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_Guide.pd f [3] D. Benedettelli, Programming LEGO NXT Robots using NXC, vol. Version 2.2, J. Hansen, Ed., 2007. [4] J. Jerry Lee Ford, LEGO MINDSTORMS NXT for Teens, CENAGE Learning, 2010. 3