Saltar al contenido
Volver a la ficha del proyecto

Manual del proyecto · Proyecto 07

Robot Móvil

Armado y programación de un robot móvil con el kit Robobloq Qoopers: se ensambla con piezas de metal, ruedas y orugas, y se programa por bloques con el software Robobloq. Primero recorre un camino pautado (nivel inicial), luego lleva y muestra un mensaje en un display al pulsar un botón (nivel intermedio) y, por último, esquiva obstáculos con un sensor ultrasónico y un zumbador (nivel avanzado).

Dificultad:
Nivel educativo:
Secundario. Ciclo Básico.
Mecánica Programación

Saberes Digitales

INET / EDUCAR — Ministerio de Educación, Cultura, Ciencia y Tecnología de la Nación Argentina

2019

Contenido del manual

  1. 01 Materiales y equipamiento
  2. 02 Armar el robot y programar un recorrido Nivel inicial
  3. 03 Llevar y mostrar un mensaje con el display Nivel intermedio
  4. 04 Esquivar obstáculos con el sensor ultrasónico Nivel avanzado

Materiales y equipamiento

Insumos

Imagen Insumo Cantidad Plataforma
Kit Robobloq Qoopers Kit educativo de robótica basado en Arduino, con conexiones simples. Trae la placa controladora, motores, ruedas y orugas, el sensor ultrasónico, el display LED, los LED RGB y el zumbador, además de las piezas de metal y el cable USB para programarlo. Incluye un manual de ensamble con diseños alternativos. 1 Todas
Pilas recargables AA Alimentan al robot para que se desplace sin depender del cable USB. Conviene que sean recargables por el uso intensivo en clase. 6 Todas

Equipamiento del taller

  • Computadora
  • Software Robobloq (programación por bloques)
Nivel inicial

Armar el robot y programar un recorrido

Armar el robot

Empezamos por el ensamble del robot a partir de las piezas que vienen con el kit. El robot se desplazará en el espacio siguiendo una serie de instrucciones que programaremos después.

El kit incluye un manual de ensamble junto con diseños alternativos que pueden obtenerse en línea (por ejemplo, en static.robobloq.cn/wiki/02.pdf). Seguí las instrucciones de armado paso a paso; al terminar, el robot debería verse como el de la figura: un cuerpo con la placa controladora, ruedas con orugas y, arriba, el display.

Robot móvil armado con el kit Robobloq Qoopers: chasis con piezas verdes y grises, dos orugas laterales con ruedas, la placa controladora blanca en el centro con sus puertos numerados, y un display gris montado en la parte superior.
El robot armado del nivel inicial (figura original): las piezas del kit ensambladas según el manual, con la controladora, las orugas y el display.

Para que el robot funcione de manera autónoma —sin depender del cable USB— se alimenta con las pilas recargables AA. El cable USB lo usaremos para subir los programas desde la computadora.

Conocer el software Robobloq e instalar los drivers

Para programar el robot usamos el software Robobloq, un entorno que permite programar proyectos basados en Arduino utilizando bloques. Se descarga gratis desde robobloq.com/support/download.

Al abrir el programa, lo primero es seleccionar nuestro robot, «Qoopers». Al elegirlo, el entorno se adapta: se ve el robot en pantalla y, a la izquierda, aparecen los bloques disponibles agrupados en categorías —Eventos, Movimiento, Luz, Sonido, Control, Sensor, Operadores y Variables—. Con esos bloques vamos a construir toda la lógica de este proyecto.

Antes de programar hay que instalar los drivers del robot, algo que se hace una sola vez. Un driver es un programa que le permite a la computadora comunicarse con un dispositivo; en este caso, con la placa del robot a través del puerto USB. En el software Robobloq se instala desde el menú Ayuda → «Instalar el controlador del puerto serie».

Probar los motores y subir el primer programa

Antes de armar el recorrido, conviene familiarizarse con los movimientos del robot. Vamos a hacer un pequeño programa para que avance, frene y retroceda.

Todo programa arranca con el bloque «Cuando el programa comienza» (categoría Eventos). Al pedirle al robot que se mueva hay que indicar la dirección y la velocidad (una escala de 0 a 100); acá usaremos la máxima, 100. Un detalle importante: el robot no frena solo, hay que indicárselo. Por eso, entre un movimiento y otro se intercala un bloque de espera y luego el bloque «Detener el movimiento del motor a bordo».

Prueba de motores: adelante, frenar y atrás
  1. Cuando el programa comienza
  2. Mover el motor a bordo hacia adelante a velocidad 100
  3. Esperar 1 segundo
  4. Detener el movimiento del motor a bordo
  5. Mover el motor a bordo hacia atrás a velocidad 100
  6. Esperar 1 segundo
  7. Detener el movimiento del motor a bordo

Para subir el programa a la placa: conectá el robot con el cable USB, hacé clic en el botón «Sin conexión» (arriba a la derecha) para que pase a «Conectado», elegí el puerto disponible (por ejemplo, COM7; puede variar) y apretá «Subir» (arriba, al centro). Se carga una barra de progreso y, al terminar, aparece el cartel «Enhorabuena».

Con ese programa, el robot hace las acciones una sola vez. Si queremos que se repitan una y otra vez, envolvemos las instrucciones dentro del bloque «Por siempre» (categoría Control), que crea un bucle infinito.

Programar el recorrido del depósito al laboratorio (y la vuelta)

Ahora sí, programamos el recorrido de la situación: del depósito al laboratorio y de vuelta. La distancia de cada tramo se controla combinando la velocidad y el tiempo de cada bloque de movimiento: a velocidad constante (100), cuanto más dura la espera, más lejos llega el robot. Ajustar esos tiempos según el espacio real del aula es parte del trabajo.

Las acciones principales para llegar al laboratorio son: avanzar, girar a la derecha, avanzar, girar a la derecha, avanzar y frenar. Para la vuelta al depósito, se encadena una secuencia equivalente que lo devuelve al origen. Entre cada movimiento va su espera correspondiente (que define cuánto avanza o cuánto gira), y todo el recorrido se coloca dentro del bloque «Por siempre» para que se repita.

Recorrido de ida (depósito → laboratorio) dentro de «Por siempre»
  1. Por siempre
  2. Avanzar a velocidad 100 · Esperar (tiempo del tramo)
  3. Girar a la derecha · Esperar (tiempo del giro)
  4. Avanzar a velocidad 100 · Esperar (tiempo del tramo)
  5. Girar a la derecha · Esperar (tiempo del giro)
  6. Avanzar a velocidad 100 · Esperar (tiempo del tramo)
  7. Detener el movimiento del motor a bordo · Esperar 5 segundos
  8. … (recorrido de vuelta al depósito, con la misma lógica)

Podés ensayar el recorrido y ajustar los tiempos de cada tramo en el simulador antes de probarlo con el robot real:

Simulación del comportamiento

Una máquina de estados en TypeScript reproduce el comportamiento que programás por bloques en el kit. No ejecuta el software del kit: es una representación fiel de lo que hará el dispositivo real.

Simulación lista. Presioná «Iniciar» para arrancar la secuencia.

Prender los LED RGB y completar el programa

Como anticipaba la situación, sumamos el encendido de los LED RGB que vienen integrados al frente de la placa, para que el robot sea más visible mientras se desplaza.

Vista de la placa controladora del robot señalando la posición de los LED RGB en el frente, indicados con dos círculos y la etiqueta «Led Rgb».
Los LED RGB integrados al frente de la placa (figura original): se encienden por programa, sin cablear nada, eligiendo el color con un bloque.

Los LED RGB se programan con el bloque «Ajuste a bordo» (categoría Luz), que permite elegir el color. Un LED RGB combina tres colores —rojo, verde y azul— y, mezclándolos, forma millones de tonos. Agregamos ese bloque al comienzo del recorrido para que el robot circule siempre iluminado.

Programa completo del nivel inicial
  1. Cuando el programa comienza
  2. Ajuste a bordo: encender los LED RGB (elegir color)
  3. Por siempre
  4. Recorrido de ida (avanzar / girar / frenar con sus tiempos)
  5. Esperar 5 segundos en el laboratorio
  6. Recorrido de vuelta al depósito

Si en el software hacés clic en el ícono «Script» (debajo del botón «Subir») podés ver el código escrito que corresponde a tu programa en bloques: una buena forma de asomarse al código que hay detrás.

Cierre del nivel

Al terminar este nivel ya tenés el robot armado y andando solo: recorre el camino del depósito al laboratorio y vuelve, con los LED encendidos para ser visible. Aprendiste a programar por bloques en el software Robobloq, a subir programas a la placa y a controlar distancias combinando velocidad y tiempo. En el nivel intermedio vamos a sumarle un display y a usar el botón de la placa para que el robot pueda llevar y mostrar un mensaje al llegar a destino.

Evidencia de cierre

Al terminar este nivel, esto tiene que estar funcionando:

  • El robot está armado con las piezas del kit Robobloq Qoopers, según el manual de ensamble, y se enciende con las pilas.
  • Sabés programar por bloques en el software Robobloq, conectar el robot por USB e instalar los drivers, y subir un programa a la placa controladora.
  • El robot recorre por sí solo el camino del depósito al laboratorio y vuelve, encadenando bloques de avanzar, girar y frenar con sus tiempos, todo dentro de un bloque «Por siempre».
  • Los LED RGB del frente de la placa se encienden mientras el robot se desplaza, para que sea más visible.
Nivel intermedio

Llevar y mostrar un mensaje con el display

Conectar el display al puerto 7

Para poder mostrar mensajes necesitamos el display LED del kit: una pequeña matriz de puntos de luz donde vamos a dibujar. Lo conectamos con su cable al puerto número 7 de la placa controladora.

Display LED del kit montado sobre el robot y conectado con un cable al puerto de la placa; un círculo rojo destaca el puerto número 7 donde se enchufa el conector.
El display conectado al puerto 7 (figura original): en los kits, cada periférico se enchufa a un puerto numerado de la controladora en lugar de a un pin.

A diferencia de un proyecto con Arduino y protoboard, acá no cableamos electrónica: el kit resuelve la conexión con un conector directo. Lo único importante es recordar a qué puerto está enchufado el display (el 7), porque después hay que indicárselo a los bloques.

Dibujar un mensaje en el display

Con el display conectado, ya podemos programarlo. Robobloq ofrece dos bloques para el display: uno permite crear un dibujo propio (encendiendo los puntos que queramos de la matriz) y otro permite elegir entre íconos ya programados.

Usaremos el primero para dibujar nuestro propio mensaje. Al colocar el bloque, no hay que olvidar seleccionar el puerto 7, que es donde conectamos el display en el paso anterior.

Dibujar un mensaje en el display del puerto 7
  1. Cuando el programa comienza
  2. Display (puerto 7): dibujar el mensaje (encender los puntos de la matriz)

Usar el botón de la placa para mostrar u ocultar el mensaje

El mensaje debe quedar oculto hasta que el robot llegue al laboratorio y alguien presione el botón integrado en la placa.

Vista de la placa controladora del robot señalando con un círculo y la etiqueta «Botón Pulsador» la ubicación del botón integrado en la parte superior.
El botón pulsador integrado en la placa (figura original): no hay que cablear nada; se lee directamente con un bloque del software.

Para lograr ese comportamiento usamos el bloque «Si… entonces / Si no…» (categoría Control), que hace que el programa actúe de una forma o de otra según una condición. Como condición usamos el bloque «Cuando se presiona el botón» (categoría Eventos), que lee el pulsador de la placa. Si el botón está presionado, se muestra el mensaje; si no, se oculta. Y como esa decisión debe evaluarse todo el tiempo, va dentro de un bloque «Por siempre».

Mostrar el mensaje solo si el botón está presionado
  1. Por siempre
  2. Si «se presiona el botón» entonces
  3. Display (puerto 7): mostrar el mensaje
  4. Si no
  5. Display (puerto 7): ocultar el mensaje (limpiar la pantalla)

Incorporar el mensaje al recorrido

Ahora combinamos esta lógica con el recorrido del nivel inicial. La idea es que el botón solo sirva para mostrar el mensaje una vez que el robot llegó al laboratorio, no durante todo el viaje.

Para eso, colocamos la evaluación del botón al final del recorrido de ida, justo después de que el robot frena y espera en el laboratorio (el bloque «Esperar 5 segundos»). Además, agregamos un mecanismo para esperar el pulsado: con un bloque «Repetir» y algunas esperas, el robot se queda aguardando a que alguien apriete el botón antes de continuar.

El robot espera el botón recién al llegar al laboratorio
  1. Por siempre
  2. Recorrido de ida (avanzar / girar / frenar con sus tiempos)
  3. Detener el movimiento y esperar 5 segundos en el laboratorio
  4. Repetir (esperando el pulsado del botón)
  5. Si «se presiona el botón»: mostrar el mensaje en el display

Simulación del comportamiento

Una máquina de estados en TypeScript reproduce el comportamiento que programás por bloques en el kit. No ejecuta el software del kit: es una representación fiel de lo que hará el dispositivo real.

Simulación lista. Presioná «Iniciar» para arrancar la secuencia.

Continuar el recorrido una vez leído el mensaje

Cuando alguien pulsa el botón y lee el mensaje, este se borra y el robot vuelve al depósito. Los bloques del recorrido de vuelta se colocan debajo de los que condicionan la visualización del mensaje.

Un detalle importante: hay que darle tiempo a la lectura. Conviene que el robot espere unos segundos desde que se oprime el botón (por ejemplo, 5 segundos) antes de borrar el mensaje, para que alcance a leerse. Recién después arranca la vuelta.

Programa completo del nivel intermedio
  1. Por siempre
  2. Recorrido de ida hasta el laboratorio
  3. Repetir hasta que se presione el botón → mostrar el mensaje
  4. Esperar 5 segundos (dar tiempo a leer el mensaje)
  5. Ocultar el mensaje (limpiar el display)
  6. Recorrido de vuelta al depósito

Cierre del nivel

Al terminar este nivel, tu robot ya lleva y entrega un mensaje: recorre hasta el laboratorio, espera a que alguien pulse el botón, muestra el mensaje en el display, le da tiempo a leerse y vuelve al depósito. Aprendiste a conectar un periférico a un puerto del kit, a dibujar en el display y a tomar decisiones con el bloque «Si… entonces / Si no…» y el botón de la placa. En el nivel avanzado vamos a hacer que el robot sea autónomo de verdad: usando el sensor ultrasónico y el zumbador, detectará y esquivará los obstáculos que aparezcan en su camino.

Evidencia de cierre

Al terminar este nivel, esto tiene que estar funcionando:

  • El display LED está conectado al puerto 7 de la placa y podés dibujar en él un mensaje propio con el bloque correspondiente.
  • El robot usa el botón integrado en la placa: mientras no se presiona, el mensaje queda oculto; al presionarlo, se muestra en el display.
  • La lógica del botón está incorporada al recorrido del nivel inicial: el robot solo habilita el mensaje una vez que llegó al laboratorio.
  • Después de leer el mensaje (una espera prudente tras el pulsado), el mensaje se borra y el robot vuelve al depósito.
Nivel avanzado

Esquivar obstáculos con el sensor ultrasónico

Optimizar el robot para esquivar objetos

Para este nivel construimos otro modelo de robot, mejor preparado para maniobrar y esquivar. Las instrucciones para armarlo se descargan en línea (por ejemplo, en static.robobloq.cn/wiki/03.pdf).

Segundo modelo del robot armado con el kit: chasis con orugas y ruedas, la controladora en el centro y, montado al frente y abajo, un sensor ultrasónico con sus dos cilindros característicos (emisor y receptor).
El robot reconfigurado del nivel avanzado (figura original): un segundo modelo con el sensor ultrasónico montado al frente para detectar obstáculos.

Conectar el sensor ultrasónico al puerto 6

Para que el robot pueda esquivar obstáculos, le conectamos el sensor ultrasónico al puerto número 6 de la placa.

El sensor ultrasónico mide distancias: emite un pulso de sonido de alta frecuencia y mide el tiempo que tarda en volver tras rebotar en un obstáculo. Ese tiempo es proporcional a la distancia al objeto, así que el robot puede “saber” qué tan cerca tiene algo adelante.

También vamos a usar el zumbador, que ya viene integrado a la placa y sonará cuando el sensor detecte un obstáculo. Como todo en este kit, ninguno de los dos requiere cablear: el sensor se enchufa a su puerto y el zumbador ya está en la controladora.

Detectar la distancia y frenar ante un obstáculo

El robot debe esquivar los objetos cuando estén a una distancia que definimos nosotros. El bloque que entrega la distancia medida está en la categoría Sensor, y para comparar usamos el bloque «mayor que» de la categoría Operadores.

La regla es: avanzar solo si la distancia medida es mayor a 40 cm; en caso contrario, frenar. Como ahora el robot tiene que reaccionar a lo que mide, conviene una velocidad moderada: usamos 50 (no la máxima), para que le dé tiempo a detectar y maniobrar.

Avanzar si hay más de 40 cm libres; si no, frenar
  1. Por siempre
  2. Si «distancia del sensor (puerto 6) > 40 cm» entonces
  3. Avanzar a velocidad 50
  4. Si no
  5. Detener el movimiento del motor a bordo

Elegir una dirección al azar

Cuando el robot detecta un objeto, lo hacemos girar aleatoriamente a la izquierda o a la derecha, para que no quede trabado y busque una salida distinta cada vez. Usamos el bloque «Número aleatorio entre» (categoría Operadores).

Como el bloque elige entre números y no entre direcciones, le asignamos un valor a cada una: el 1 hará que gire a la izquierda y el 2, a la derecha. Después de cada giro, agregamos una espera breve (por ejemplo, 0,3 segundos) para darle tiempo a completar el giro antes de seguir.

Al frenar, girar hacia un lado elegido al azar
  1. Si no (hay obstáculo): detener el movimiento
  2. Guardar en una variable un número aleatorio entre 1 y 2
  3. Si el número es 1 → girar a la izquierda
  4. Si el número es 2 → girar a la derecha
  5. Esperar 0,3 segundos (dar tiempo al giro)

Simulación del comportamiento

Una máquina de estados en TypeScript reproduce el comportamiento que programás por bloques en el kit. No ejecuta el software del kit: es una representación fiel de lo que hará el dispositivo real.

Simulación lista. Presioná «Iniciar» para arrancar la secuencia.

Programar el zumbador de aviso

Por último, hacemos que el robot avise con un sonido cada vez que detecta un obstáculo. Para que suene el zumbador usamos el bloque «Jugar Tono», que permite elegir la nota musical MIDI y su duración.

Las duraciones posibles se expresan en fracciones de “tiro” (equivalente a un segundo): la mitad (0,5 s), un cuarto (0,25 s), un octavo (0,125 s), un tiro entero (1 s) o doble tiro (2 s). El sonido se ejecuta luego de que el robot frena, junto con la maniobra de esquive.

Programa completo del nivel avanzado
  1. Por siempre
  2. Si «distancia (puerto 6) > 40 cm»: avanzar a velocidad 50
  3. Si no: detener el movimiento del motor a bordo
  4. Jugar Tono: reproducir una nota MIDI de aviso
  5. Número aleatorio entre 1 y 2 → girar a la izquierda o a la derecha
  6. Esperar 0,3 segundos (dar tiempo al giro)

Cierre del proyecto

Con este nivel completaste el recorrido del proyecto: armaste el robot, lo programaste para seguir un camino pautado, le enseñaste a llevar y mostrar un mensaje y, finalmente, lo hiciste autónomo, capaz de detectar y esquivar obstáculos por sí solo con el sensor ultrasónico y el zumbador. En el camino trabajaste nociones de mecánica (el ensamble), de movimiento (la relación entre velocidad y tiempo) y de programación por bloques (secuencias, condiciones, bucles, azar y lectura de sensores). Si querés seguir, podés sumarle un sensor seguidor de líneas, programarle melodías o controlarlo por Bluetooth desde la app de Robobloq.

Evidencia de cierre

Al terminar este nivel, esto tiene que estar funcionando:

  • El robot está reconfigurado según el segundo modelo del kit y tiene el sensor ultrasónico conectado al puerto 6.
  • El robot avanza a velocidad moderada (50) mientras el sensor mide más de 40 cm de distancia libre, y frena cuando detecta un obstáculo más cerca.
  • Al detectar un obstáculo, el robot elige al azar girar a la izquierda o a la derecha (con el bloque de número aleatorio) y espera un instante para completar el giro antes de seguir.
  • El zumbador integrado emite un tono de aviso cada vez que el robot detecta un obstáculo y frena.