http://lrobotikas.net/eu/como-empezar/59-lego-mindstorms/109-retos-mando-a-distancia
Comandament a distància
Proposta: NXT mestre amb dos sensors de contacte
si botó dret: gira dreta
si botó esquerre: gira esquerre
si els dos botons a l'hora: avança recte
si cap botó: atura't
si us animeu, amb un altre botó: retrocés (o amb un botó del NXT podem establir la direcció: endavant-enrrere)
El comandament
Encara que el comandament es podria fer amb els botons del NXT, si voleu podeu muntar-ne un com el de l'exemple, amb dos sensors de contacte i dues palanques per facilitar la seva activació.
Connexió dels sensors: l'esquerre al port 1, el dret al port 4.
L'algoritme del comandament (mestre)
Podem associar el sensor 1 al motor B de l'esclau i el sensor 2 al motor C.
Cal un bucle infinit
Si presionat sensor 1, envia missatge motorB per una bustia
si pressionat sensor 4, envia missatge motorC per una altra bustia
si pressionat sensor 1 i sensor 4, envia missatge motor BC (cal aixó si enviem els missatges per 2 busties diferents?)
El mando utiliza para controlar el vehículo dos sensores de contacto, el izquierdo conectado al puerto 1 y el derecho al puerto 4. Pulsando el izquierdo girará a la izquierda hasta que deje de pulsarse mientras que el derecho hará lo mismo hacia la derecha.
El algoritmo del mando será el siguiente:
1. Repetir los siguientes pasos
a. Si presionado Sensor4
i. Enviar mensaje texto “Derecha”
ii. Esperar hasta soltar el Sensor4
iii. Enviar mensaje texto “Recto”
b. Si presionado Sensor1
i. Enviar mensaje texto “Izquierda”
ii. Esperar hasta soltar el Sensor1
iii. Enviar mensaje texto “Recto”
El programa será el siguiente:
Comunicaciones con Bluetooth
El NXT dispone de un sistema de comunicaciones inalámbricas vía Bluetooth. El NXT puede enviar y recibir mensajes de texto, numéricos o lógicos y mostrar diferentes comportamientos en función del mensaje recibido.
Se pueden conectar hasta 4 NXT a la vez, de tal modo que puedan desarrollar sus tareas de modo coordinado. Pero esto no quiere decir que se puedan comunicar de modo libre entre los cuatro, siempre deberá haber uno que denominaremos máster que será el que lleve la batuta mientras que el resto, los esclavos, solo podrán comunicarse entre ellos por medio del máster.
A partir de este momento los dos NXT ya se pueden comunicar entre sí. La versión 2 de NXT-G permite que sea el mismo NXT el que realice estas tareas de activación del Bluetooth y de la conexión.
Un reto interesante es montar y programar un mando a distancia que permita controlar un robot móvil de modo remoto del mismo modo que se hace con un coche teledirigido, es decir, que ofrezca las siguientes opciones:
Giros a izquierda o derecha
Desplazamiento adelante o atrás
Regulación de la velocidad
A continuación vamos a ver cómo hacer un mando que sea capaz de controlar los giros de un robot móvil de modo remoto, el resto queda como una opción para quien se anime a hacerlo.
Antes de comenzar con un proyecto real en el que se utilicen comunicaciones vía Bluetooth, conviene experimentar un poco. Para ello no hace falta montar nada, es suficiente con dos NXT utilizando como elementos de entrada sus propios botones y como salidas el sonido y la pantalla. A continuación se proponen algunos ejercicios, dos de los cuales van a ser resueltos en este artículo.
Desarrollar un programa que envíe un valor aleatorio comprendido entre 200 y 400 de tal manera que el segundo NXT reproduzca un sonido de esa frecuencia
Veamos primero el programa necesario para enviar el mensaje (NXT máster).
El algoritmo será el siguiente:
Elige un número entre 200 y 400 de modo aleatorio
Envía un mensaje que contenga el resultado del paso anterior
El programa correspondiente será el siguiente:
Primeros pasos Para que dos NXT puedan comunicarse primero hay que conectarlos. Para ello deberemos empezar activando el Bluetooth. ¿Cómo sabemos si lo tiene activado? Basta con observar en la parte superior izquierda de su pantalla, si vemos el símbolo de la siguiente figura sabremos que lo tiene activado.En caso contrario lo haremos utilizando las flechas grises y el botón naranja del NXT.
Una vez que hayamos decidido cuál será el máster, conectaremos los dos NXT. Para ello, buscaremos desde el NXT máster el NXT esclavo y lo conectaremos seleccionando una de las tres conexiones disponibles, la 1, la 2 ó la 3. Una vez conectado el símbolo anterior se habrá convertido en el de la figura siguiente.
Tras obtener un número aleatorio entre 200 y 400 utilizaremos el bloque Enviar mensaje del menú Acción. Hay que modificar la opción mensaje para decirle que queremos enviar un valor numérico. El resto lo dejaremos como está. El número de conexión tiene que ser el mismo que al conectar los dos NXT se asigne al robot esclavo, es el modo de identificar el receptor. En caso que el esclavo tenga que enviar un mensaje al máster, lo deberá enviar a la Conexión 0.
Y ahora el que recibirá el mensaje (NXT esclavo).
El receptor del mensaje ha de estar a la escucha por si llega un mensaje. Vamos a ver cuál es el algoritmo:
Leer el buzón de entrada 1
Reproducir un sonido con la frecuencia contenida en el mensaje
Repetir lo mismo de modo indefinido
Una vez que los programas estén creados sólo queda conectar los NXT vía Bluetooth, descargar los programas y ejecutarlos (para este ejercicio primero hay que poner en marcha el programa esclavo y a continuación el máster).
Si se dispone de la versión 2 del NXT-G es posible integrar en el programa la conexión entre los NXT. El siguiente programa incorpora al anterior máster dos nuevos bloques que se encuentran en el menú Avanzado: el bloque Conexión Bluetooth configurado de dos diferentes maneras. El primero enciende el Bluetooth (este bloque también debería ser incorporado en el programa del esclavo), mientras que el segundo establece la conexión.
Para configurar esta conexión es necesario que se cumplan dos condiciones:
que estos dos NXT hayan estado conectados previamente de tal manera que el esclavo aparezca en Mis contactos del NXT máster.
que el NXT máster esté encendido y conectado al ordenador para que la lista de contactos aparezca en el panel de configuración tal y como aparece en la siguiente imagen.
El NXT1 controla la frecuencia del sonido que emite el NXT2. Con la flecha amarilla a derechas la frecuencia sube, en intervalos de 10 con la flecha opuesta baja. El NXT2 emite los sonidos con una duración de medio segundo e intervalos de silencio de medio segundo.
Veamos a ver aquí cómo se resuelve el segundo ejercicio, ya que tiene una gran similitud con el reto propuesto.
Veamos primero el algoritmo del programa que controlará el sonido (NXT máster).
1. Crear una variable que almacene el valor de la Frecuencia
2. Asignar a la variable Frecuencia el valor 200
3. Repetir de modo continuo los siguientes pasos
a. Si se pulsa la flecha derecha sumar 10 a la variable Frecuencia, sino nada.
b. Si se pulsa la flecha izquierda restar 10 a la variable Frecuencia, sino nada.
c. Enviar vía Bluetooth el valor de la variable Frecuencia
d. Retardar el reinicio del bucle una décima de segundo para limitar el efecto del tener la flecha pulsada de modo continuo.
El programa será el siguiente:
La variable Frecuencia se crea por medio de la opción Declarar Variables del menú Edición. En los dos condicionales la opción Falso se deja vacía.
El programa del NXT esclavo, el que reproducirá el sonido, constará de dos tareas que se ejecutarán de modo simultaneo. El algoritmo correspondiente a la primera será la siguiente:
1. Crear una variable que almacene el valor de la Frecuencia
2. Asignar a la variable Frecuencia el valor 200
3. Repetir los siguientes pasos
a. Leer el valor de la variable Frecuencia
b. Reproducir un tono con una frecuencia del valor contenido en la variable durante medio segundo
c. Esperar medio segundo (silencio)
La segunda tarea es la que recibe el mensaje y asigna su valor a la variable Frecuencia. El algoritmo será el siguiente:
1. Repetir siempre los siguientes pasos
a. Esperar hasta que reciba un mensaje
b. Asignar el valor del mensaje a la variable Frecuencia.
El programa será el de la imagen:
El mando
El mando va a disponer de dos levas que facilitan el control de los sensores de contacto que se encuentran bajo ellas.
En realidad, para un mando tan sencillo como este no sería necesario montar nada, ya que se podría controlar utilizando las flechas del mismo NXT.
El algoritmo del mando
El mando utiliza para controlar el vehículo dos sensores de contacto, el izquierdo conectado al puerto 1 y el derecho al puerto 4. Pulsando el izquierdo girará a la izquierda hasta que deje de pulsarse mientras que el derecho hará lo mismo hacia la derecha.
El algoritmo del mando será el siguiente:
1. Repetir los siguientes pasos
a. Si presionado Sensor4
i. Enviar mensaje texto “Derecha”
ii. Esperar hasta soltar el Sensor4
iii. Enviar mensaje texto “Recto”
b. Si presionado Sensor1
i. Enviar mensaje texto “Izquierda”
ii. Esperar hasta soltar el Sensor1
iii. Enviar mensaje texto “Recto”
El programa será el siguiente:
El algoritmo del vehículo será muy similar al del ejercicio número 2. Costará también de dos tareas una para controlar el vehículo mientras que la otra para recibir y almacenar los mensajes.
El algoritmo de la primera será:
1. Crear una variable que almacene el valor de la Dirección
2. Asignar a la variable Dirección el valor “Recto” para que por defecto se mueva recto.
3. Repetir los siguientes pasos
a. Leer el valor de la variable Dirección
b. Si el valor es Recto mover recto de modo ilimitado
c. Si el valor es Derecha mover girando hacia la derecha
d. Si el valor es Izquierda mover girando a la izquierda
Para este último paso se puede utilizar un bloque Bifurcación que ejecute una u otra de las opciones en función del valor de la variable. Para poder hacerlo es necesario que en el panel de configuración del bloque no esté seleccionada la opción Vista Plana, en caso contrario sólo acepta dos opciones.
El de la segunda tarea será el mismo del ejercicio número 2.
1. Repetir siempre los siguientes pasos
a. Esperar hasta que reciba un mensaje
b. Asignar el valor del mensaje a la variable Dirección.
Y el programa será el de la imagen:
Propuestas de mejora
¿Qué se puede hacer para mejorar este programa?
Añadir al programa anterior para que pulsando el botón naranja el vehículo se ponga en marcha o se detenga.
Un motor puede ser un complemento muy interesante para controlar la velocidad de giro. Si se monta una palanca que haga girar un motor puede convertirse la magnitud del giro en grados en valor de Potencia del motor.
También puede utilizarse un motor para determinar la dirección. Si se monta un volante que haga girar un motor, la magnitud del giro a izquierdas o derechas podrá convertirse en un giro del robot.
En el mismo ejercicio anterior el botón naranja del NXT1 conmuta entre subir o bajar frecuencia y subir o bajar duración en intervalos de 0,1 s.
En la pantalla de un NXT se puede leer la temperatura que un segundo NXT mide en el exterior de una vivienda. Si no se dispone de un sensor de temperatura puede simularse con un sensor de luz midiendo la luminosidad exterior.