SENSOR IRLink:

11 Motores y 1 NXT

Tutorial Sensor IRLink para LEGO Mindstorm NXT


down-amarillo-flecha

¿QUE ES?


El Sensor IRLink de HiTechnic sirve para emitir señales infrarrojas (IR) desde el NXT al receptor PF estándar de LEGO. O sea, con 4 cajas de baterías, 4 receptores PF de LEGO, 1 sensor IRLink y 1 único NXT, podrás controlar hasta 8 motores de PF. Suma los 3 servos del NXT y tendrás 11 motores controlados por 1 solo NXT.


Sensor IRLink de LEGO Mindstorms NXT

Los motores se conectan directamente al receptor PF estándar de LEGO, por lo que ahí podrás conectar motores medianos, grandes o de tren. El sensor IRLink está certificado por LEGO por tanto, puedes comprar directamente el IRLink en la página oficial de LEGO.


Sensor IRLink de LEGO Mindstorms NXT

El talón de Aquiles de este sensor es sin duda el limitado alcance de la señal, quiero decir, que no tiene la misma potencia de emisión que los mandos tradicionales de PF.


NO TE CONFUNDAS...


Existen varios sensores que trabajan con IR y es fácil confundirse. A ello se suma, en mi opinión, una información no demasiado clara en la página de HiTechnic y una información muy escueta en la de LEGO. Vamos a hacer un pequeño repaso de alguno de ellos. El IRLink lo veremos en detalle después.


  • NXT IR Receiver Sensor


  • Siguiendo las explicaciones del IR Receiver en la página de LEGO (que NO hemos probado) podrás recibir señales desde los mandos PF para que el NXT actúe en consecuencia. Por tanto, podrás controlar los habituales 3 servomotores de forma remota de vehículos u otros robots con el mando de PF. El IR Receiver también lo puedes encontrar en la página de HiTechnic.


    Por tanto, este sensor recibe las señales de los mandos PF.


    Sensor IRLink de LEGO Mindstorms NXT

    Es decir, el IR Receiver Sensor realiza la misma función que el Receptor PF de LEGO (el de siempre):


    Sensor IRLink de LEGO Mindstorms NXT

    La diferencia es que el Receptor PF de LEGO (Power Functions IR Receiver) no se puede conectar al NXT y el IR Receiver Sensor si, con todo lo que eso implica.


  • IR Seeker


  • Otro sensor IR. Puedes consultar los datos técnicos del IR Seeker en la página de HiTechnic. Como también es un sensor certificado, lo puedes comprar en la página oficial de LEGO.


    Este sensor tampoco lo he probado. Sirve fundamentalmente para jugar al futbol, aunque también se anuncia que detecta fuentes de IR como las procedentes del IRLink, los mandos de la TV, los propios mandos PF, etc. Entiendo, y esto es una suposición, que simplemente detecta la dirección desde donde se emite la señal IR (a modo de faro) sin más y no puede recibir instrucciones concretas. Es el sensor con visera.


    Sensor IRLink de LEGO Mindstorms NXT
  • NXT EOPD


  • Este sensor de la misma firma no trabaja con infrarrojos (IR), sino con luz visible pero en su momento también me confundió, así que lo incluyo. A día de hoy (diciembre 2011), el EOPD solo está disponible a través de HiTchnic. Este tampoco lo hemos probado.


    Sensor IRLink de LEGO Mindstorms NXT

    Explicado de forma sencilla, es igual al sensor de luz de LEGO con algunas peculiaridades:


    1. Trabaja solo en distancias cortas, por debajo de 20 cm.

    2. Trabaja con pulsos de luz visible. Esto hace que sea (teóricamente) inmune a luces externas.

    3. Tiene 2 modos de trabajo: más sensible o menos.


    Por tanto tiene 2 usos: detectar objetos en su campo de acción (20 cm) y medir distancias cortas.


    EL "SENSOR" IR LINK


    Vamos por fin a por el sensor que nos interesa, el IR Link. Los enlaces técnicos están al inicio de esta página. Recuerda, este sensor emite señales desde el NXT hacia los motores de PF. Por tanto este "sensor" no detecta nada y no podríamos hablar con propiedad de sensor.





    Es, a todos los efectos, un "emisor". En la imagen de configuración de los iconos un poco más abajo, verás que solo hay posibilidad de cables de entrada. No hay ninguna salida "desde" el "sensor" y por tanto no puede transmitir información al respecto. De todas formas, por no crear (más) confusión, no le cambiaremos el nombre.


    Sensor IRLink de LEGO Mindstorms NXT

    En un receptor estándar de PF de LEGO se pueden conectar 2 motores. Por tanto, y como máximo, para conectar 8 motores necesitarás:


    Sensor IRLink de LEGO Mindstorms NXT

    El motor grande de PF, obviamente, también se puede conectar. Podrías poner también 4 motores normales y 4 motores de tren usando 6 cajas de baterías y 6 receptores IR o cualquier otra combinación que se te ocurra.


    SOFTWARE


    Lo primero, recuerda que tienes un tutorial sobre cómo instalar nuevos iconos. Los iconos de control los puedes descargar gratuitamente (normal, ya te han cobrado el sensor...) de la página de HiTechnic. Una vez hayas accedido a la página, desciende lo suficiente hasta encontrar el listado de iconos descargables ("downloads").


    Sensor IRLink de LEGO Mindstorms NXT

    Cuando pinches a la derecha a descargar, accederás a una página en la que te pedirá tu nombre y correo electrónico y justo debajo está el botón de descargar. No es necesario si no quieres dejar tus datos. Pasamos a ver en detalle los iconos que vamos a explicar y que son estos:


    Sensor IRLink de LEGO Mindstorms NXT

    Existen 2 iconos más que no comentaremos y que también te puedes descargar del mismo sitio: un icono para controlar hasta 3 trenes (¿?) y uno de comunicación con RCX. Con los iconos siguientes, puedes controlar trenes PF sin ningún problema.


  • HiTechnic IRLink IRBeacon Block


  • Con estos títulos ¿quién se puede aclarar?. Y eso que he recortado un poco del final... Bueno, vamos al tema.


    El sensor IRLink emite luz infrarroja hacia los motores (bueno, hacia el receptor). Si lo dejas encendido puedes convertirlo en un faro para que el sensor "IR Seeker" que hemos visto más arriba lo detecte. Este icono solo resulta interesante si dispones de ese sensor y de un segundo NXT.


  • HiTechnic Power Functions IRLink Sensor Block


  • Este es el siguiente icono en la lista que te puedes descargar. Este ya resulta algo más interesante.


    Sensor IRLink de LEGO Mindstorms NXT

    Este icono es como si dispusieras de un mando pequeño de PF pero controlado por el NXT. El sensor por tanto sería equivalente a tener 4 de estos mandos, ya que cada mando controla 2 motores. Estos mandos pueden seleccionar el canal y la dirección del motor. Solo dispone de paro o marcha (todo/nada).


    Sensor IRLink de LEGO Mindstorms NXT

    Este icono envía una señal (siempre a través del receptor PF de LEGO) que mantiene el motor encendido un breve tiempo (1 segundo aprox.) y luego se para. Para que el motor gire de forma constante, hay que encerrarlo en un bucle infinito. Puedes activar los 2 motores A y B a la vez.


  • HiTechnic Power Functions Extended IRLink Sensor Block


  • Este aun es mejor que el anterior, tiene más opciones. Tal como está configurado, el motor A retrocederá a velocidad 3 y el motor B avanzará a velocidad 5. Es decir, puedes activar 1 o los 2 motores conectados al receptor de turno.


    Sensor IRLink de LEGO Mindstorms NXT

    Es decir, este icono es como si dispusieras de un mando de trenes de PF pero controlado por el NXT. Estos mandos pueden seleccionar el canal, la dirección y la velocidad del motor. El icono, como el mando, dispone de paro (brake). El sensor por tanto sería casi equivalente a tener 4 mandos de estos, ya que cada mando acciona 2 motores.


    Sensor IRLink de LEGO Mindstorms NXT

    De la misma forma que con el mando "tradicional", las variaciones de velocidad aquí también son escalonadas y no son suaves como en el caso de los servomotores del NXT. El uso del Brake equivale al botón naranja del mando de PF.


    Hay una diferencia con el mando de PF: una vez enviada la orden de mover, mueve el motor y al poco para. Como en el caso anterior, si quieres mantener el movimiento con este icono deberás ponerlo dentro de un bucle infinito. Esto no ocurre en el mando PF de LEGO, en el que se mantiene la señal y el motor no deja de mover.


  • HiTechnic Power Functions Single IRLink Sensor Block


  • Este posiblemente sea el icono más útil, aunque yo tengo instalados los 3. Si tuviera que buscar un equivalente de este bloque, tendría alguna dificultad. Quizás podría ser como tener medios mandos, ya que cada icono controla solo 1 motor. El sensor sería equivalente a tener 8 medios mandos:


    Sensor IRLink de LEGO Mindstorms NXT

    Su gran ventaja es que el motor no se para incluso aunque el programa del NXT se acabe. El NXT, a través del sensor, envía una orden de movimiento al motor y éste se mantiene en ese estado hasta que recibe una nueva orden. En el siguiente ejemplo, el motor avanzaría a velocidad 3... hasta nueva orden.


    Sensor IRLink de LEGO Mindstorms NXT

    Con la barra deslizadora, dispones de control de velocidad y dirección, según situes el deslizador en valores positivos o negativos. También tiene freno y la habitual selección de los 4 canales. Solo puede accionar un motor cada vez, según selecciones motor A o B.


    8 TRENES

    Es perfectamente posible controlar hasta 8 trenes con este sensor, lo que lo hace muy interesante para grandes dioramas o exposiciones. El único detalle es que para controlar 8 trenes PF de forma automática con el NXT necesitarás 8 Receptores PF de LEGO y 8 cajas de baterías, uno por cada tren. La limitación es económica, no técnica.


    No he experimentado con todo esto pero, viendo el video, no parece que esto sea complicado.


    La forma de llevarlo a cabo es conectando 1 motor a la Base A de un receptor PF de LEGO (dejando el B libre) y seleccionar el canal 1; un segundo motor se conecta a la Base B del receptor de LEGO (dejando el A libre) y eligiendo también el canal 1. Así, cada canal de los 4 existentes en los mandos PF controlará 2 trenes. Sería así:


    Sensor IRLink de LEGO Mindstorms NXT

    El mismo sistema podría usarse para accionar 4 motores y 4 desvíos accionados por motores PF. Dado el corto alcance del sensor, la única opción para accionar trenes en movimiento es concentrar la zona de desvíos y aprovechar ahí para enviar las señales de paro/marcha a los trenes, todo en la misma zona.


    Una última cuestión de trenes: el punto más flojo del sensor es su corto alcance, pero esto puede ser una ventaja para accionar desvíos y/o trenes. Si se separan suficientemente y compras un segundo sensor IRLink, podrías ubicar una segunda zona de envío de señales a los trenes suficientemente alejada de la primera.


    Supongo que bien coordinado se podrían accionar 4 desvíos y 4 trenes en una zona y otro tanto en otra. No más ya que solo hay 4 canales en los mandos. Esta opción tampoco la he probado, pero ahí queda la idea.


    ALCANCE

    UN RECEPTOR PF O VARIOS AGRUPADOS


    Vamos a intentar analizar el punto flojo del sensor. En caso de que solo te quieras comunicar con un receptor PF de LEGO no tendrás demasiado problema siempre que ambos estén a menos de unos 60-65 cm y correctamente orientados uno y otro. Si quieres comunicarte con 2, 3 o 4 de ellos, lo mejor es que estén suficientemente juntos. Si es así, tampoco tendrás problema de comunicación.


    Lo ideal es poner emisor y receptor/es a distancias inferiores a los 60cm. No hay problema en acercar el sensor a los receptores cuanto quieras. Esta distancia se refiere a línea recta sobre la vertical del receptor.


    Si emisor y recptor están ambos sobre un mismo plano, la distancia se reduce mucho. Tienes algún dato más al respecto en el siguiente apartado.


    Sensor IRLink de LEGO Mindstorms NXT


    Esa configuración sería posible en el caso de un GBC por ejemplo, en el que sensor y receptores estarían en posiciones fijas y con receptores agrupados. Pero ¿qué pasa si no tienes opción de reunir los receptores y tienen que estar dispersos?. Un ejemplo de esto serían los trenes, en el que cada tren lleva su propio receptor.



    VARIOS RECEPTORES PF DISPERSOS


    Recuerda que esta opción es para el caso de que tengas más de un receptor PF y que además no los puedas agrupar.


    He hecho bastantes pruebas aunque esto no pretende ser un estudio exhaustivo. Simplemente pretendo dar idea de lo que puedes esperar. Para datos adicionales de las pruebas, baja a anexo. Los datos estarán referidos al sensor - receptor en la misma vertical, enfrentados cara a cara.


  • Distancia óptima del sensor: 38-45cm de altura.


  • Situando el sensor encima del receptor (en la vertical), las opciones que cubren una mayor área o longitud las he encontrado a esas distancias. Concretamente a unos 45cm de altura podrás separar los receptores a lo largo de unos 42cm si están alineados en algún momento. Hasta los 38-35cm sigue siendo buena opción.


    Pero si no tienes ocasión de poner tan alto el sensor, ahí van algunos datos de la zona de influencia del sensor para que sepas qué te puedes encontrar... al menos con mi sensor.


    Sensor IRLink de LEGO Mindstorms NXT


    Sensor IRLink de LEGO Mindstorms NXT
    Sensor IRLink de LEGO Mindstorms NXT

    Es decir, a 38 cm de altura (h) del sensor, este envía correctamente señales dentro de un área aproximada de 43cm de largo por 10cm de ancho. En esa zona, podrás situar tus 4 receptores (como máximo) o, si se trata de trenes, que pasen por dentro de esa zona en algún momento.


  • Geometria de la zona de influencia.


  • La zona de influencia del sensor NO es un cono regular y da comportamientos extraños. La siguiente imagen es solo una aproximación, y ni de lejos tiene un comportamiento tan regular, pero tenla en cuenta para poner tu sensor.


    El motivo aquí parece sencillo: la protección externa del sensor de color blanco apantalla la señal e impide que emita correctamente en esa dirección.


    Sensor IRLink de LEGO Mindstorms NXT
  • Posición relativa emisor-receptor.


  • Imagina que en la imagen anterior empiezas a girar el emisor como si desenroscaras una bombilla: la zona "iluminada" por el foco iría girando. O sea, no es lo mismo orientar emisor-receptor en paralelo que girando uno de ellos 90º con respecto al otro.


    Y también lo evidente, no es lo mismo apuntar con el sensor al receptor que apuntar al techo. La mejor orientación que he encontrado es apuntarlo desde arriba a 90º, sin inclinación.


    Si no te queda más remedio y tienes que poner emisor y receptor en el mismo plano en lugar de en la vertical, intenta al menos elevarlo un poco y darle inclinación hacia abajo. Intenta también que la señal llegue por delante del receptor (flecha roja) preferentemente a la dirección lateral (flecha azul).


    Sensor IRLink de LEGO Mindstorms NXT

    Al final, esto son solo orientaciones. Lo que sin duda DEBES hacer es... experimentar hasta obtener comunicación entre ellos. Y siempre tienes el foro para aclarar dudas, aportar datos adicionales o mejoras o detectar errores, que seguro que hay alguno. Tienes otro ejemplo de proyecto con el IRLink, incluyendo video en Proyectos/Nunchuk/Tanque.


    ANEXO

    Para las pruebas, he usado como emisor el siguiente montaje, aquí con el sensor en posición recta:


    Sensor IRLink de LEGO Mindstorms NXT

    En otras pruebas he puesto el sensor inclinado:


    Sensor IRLink de LEGO Mindstorms NXT

    El motor, receptor PF de LEGO y la caja de baterías sobre el que he hecho las pruebas tenían el siguiente aspecto. La flecha amarilla indica el punto desde el que he medido TODAS las distancias descritas.


    Sensor IRLink de LEGO Mindstorms NXT

    El programa utilizado emite la señal de puesta en marcha del motor de forma permanente, hasta que se pulsa el botón naranja. En ese momento se para hasta que vuelves a pulsar.


    Sensor IRLink de LEGO Mindstorms NXT

    En TODAS las pruebas realizadas, el NXT estaba en posición horizontal (sobre una mesa por ejemplo). Todas las distancias se han medido entre el sensor y la cabeza del receptor (ver flecha amarilla en la foto anterior). El sensor podía estar en 3 ángulos: recto, inclinado y a 90º como en la foto siguiente.


    De esta forma, es fácil medir las zonas de influencia de sensor, es decir, donde llega y donde no llega la señal. Para ello, he desplazado el receptor + motor a lo largo de las flechas blancas (el ancho) en la imagen, primero. Y luego a lo largo de las flechas rojas (el largo). Y todo esto variando progresivamente la distancia receptor-sensor (la altura) y cambiando la orientación del sensor respecto al emisor 90º.


    Sensor IRLink de LEGO Mindstorms NXT

    La cantidad de datos que he recogido en una tabla ha sido importante y (tristemente) he llegado a la conclusión de que no puedo sacar la geometría de emisión-recepción del IRLink, ya que depende de 2 ángulos. Para maximizar las señales y obtener las posiciones en las que el sensor cubre más campo cuando lo emparejas al receptor PF de LEGO sería necesario un medidor de la intensidad de la señal del que carezco.


    Brevemente, esto se debe a dos cosas: ni emisor ni receptor trabajan de forma uniforme. En ambos casos influye el ángulo. Por decirlo fácil, 1 ecuación y 2 incógnitas. Esto se traduce en comportamientos "extraños". Por ejemplo, en la foto anterior, al moverme a lo largo de la flecha roja no se obtenía la misma señal al moverme hacia abajo que hacia arriba.


    Bueno, en realidad el receptor del suelo estaba girado 90 grados respecto a la posición de la foto, pero lo mismo da. La distancia recorrida a la que el motor se ponía en marcha era el doble en un caso y en otro. Y no siempre sucedía esto, dependía de la altura. Inexplicable.


    Otro ejemplo, a una altura de 24cm, la zona en la que el motor funciona es (aprox.), el rectángulo de la izquierda. Al subir la altura a 38cm sobre la misma vertical, la zona de cobertura del sensor (el rectángulo) cambia de orientación. Las líneas pintadas simplemente representan el lado largo del rectángulo a esas alturas:


    Sensor IRLink de LEGO Mindstorms NXT

    Así que, con este panorama, solo podré dar orientaciones que podrían ser mejoradas, pero que en cualquier caso, están basadas en datos experimentales. De entrada, fíjate bien que la zona de influencia del sensor NO es un cono regular. Desconozco la forma real, pero la siguiente puede ser una buena aproximación si tienes que hacer pasar trenes por debajo. Y teniéndola en cuenta, la mejor opción que he encontrado es esta:


    Sensor IRLink de LEGO Mindstorms NXT

    La mejor altura se situa en torno a los 45cm. Con esto se consigue una zona de influencia del sensor de unos 44 cm de largo. Si por debajo tuvieran que pasar trenes, esta sería una buena opción. Con el sensor a una altura de 38cm, la distancia cubierta de extremo a extremo baja a unos 40cm.


    Dado que la zona de influencia depende de la posición relativa de emisor y receptor, DEBES poner mucha atención en cómo ponerlo si lo que quieres es que la señal le llegue a varios trenes. Con el sensor de lado, los trenes deberían llegar de cara:


    Sensor IRLink de LEGO Mindstorms NXT

    Señalar también que la opción del montaje del sensor inclinado da peores resultados que la opción a 90º que hemos comentado. En el caso de enviar la señal recta (paralela al suelo), no es lo mismo que ésta le llegue al receptor de frente (flecha roja) que por un lado (flecha azul).


    Sensor IRLink de LEGO Mindstorms NXT

    Por un lateral y siempre que sensor y receptor estén a la misma altura, NO llega ninguna señal. Sin embargo, de frente sí llega. No pueden estar muy separados (unos pocos cm) pero llega señal.


    Quizás en algún momento haga alguna prueba con un par de trenes en funcionamiento y complete este análisis, pero de momento parece que es una información más que suficiente.


    .