Manual de KeyBot

Robòtica con ArduinoBlocks y comunicación con Apps y IoT




Este manual ha sido elaborado por Fernando Hernández García, Ingeniero, formador y profesor del instituto Torre del Palau (Terrassa - Barcelona). Se ha realizado con la colaboración de Eduard Casadevall y Toni Moreno. Y con el apoyo de Arduinoblocks, Robolot, e Innova Didàctic S.L.

Cualquier sugerencia en: tdrtecnologia@gmail.com




1. Introducción

Esta guía es una herramienta para el montaje y programación del robot KEYBOT de Keyestudio. Está basado en la placa de control Arduino pero para realizar la programación utilizaremos un entorno de programación mediante bloques llamado ArduinoBlocks. Este lenguaje de programación es muy versátil y fácil de aprender y, además, nos permitirá programar cosas sorprenendentes gràcies a su potencia y versatilidad.

En este manual encontrará una sèrie de actividades guiadas para poder aprender a programar de una forma muy fácil y estimulante y aprenderemos conceptes relacionados con las S.T.E.A.M. (Science, Technology, Engineering, Arts, Math).


Con el KEYBOT tendremos los sensores y actuadores necesarios para poder programar completamente nuestro robot y, además, introducirnos en el mundo de la programación de entornos físicos (Physical Computing).

También realizaremos una serie de aprendizajes en las comunicaciones (puerto serie, Bluetooth i Wifi), con el fin de adentrarnos en el mundo de IoT (Internet of Things).

Para trabajar con este robot tenemos un kit de piezas para montarlo y unos elementos addicionales para añadir más funcionalidades.



Página del entorno de programación: ArduinoBlocks.

Página subministradora del material: Innova didactic.


2. ¿Cómo funciona un robot?

Un robot funciona de forma similar a un humano. Cuando el cerebro recibe una informació a través de los sentidos (sensores), analiza esta información, la procesa (cerebro) y da estímulos a los músculos (actuadores).

La principal diferencia es que, así como nuestro cerebro ha aprendido lo que debe hacer a lo largo de la nuestra vida en base a una serie de estímulos, el sistema programado tiene la memoria buida, es decir, no sabe lo que debe hacer. Entonces, somos nosostros los que debemos decirle que debe hacer en cada momento en función de las senyales que le llegan de los sensores.


3. Componentes del robot KEYBOT

El robot KEYBOT se basa en la plataforma Arduino de código abierto, flexible y fácil de programar. La placa de control del KEYBOT lleva unos connectores RJ11 para facilitar la conexión de los sensores i actuadores.

El robot está diseñado en una estructura metálica, sólida y resistente. El ensamblaje es muy sencillo y se tarda alrededor de 1 hora en montar todo el robot y realizar las connexiones. Para realizar la ampliación tardaremos media hora más aproximadamente, dependiendo de las habilidades de la persona.


Listado del material de la caja:
Componente Cantidad
1 Tarjeta de control 1
2 Panel acrílico superior de protección de la tarjeta de control 1
3 KEYBOT Sensor de ultrasonidos 1
4 KEYBOT Sensor de Línea 1
5 Módulo Bluetooth (HC-06) 1
6 Rueda universal de acero W420 1
7 Motor reductor de eje simple con cable KF2510-2P, cable negro y rojo de 200mm Derecha 1
8 Motor reductor de eje simple con cable KF2510-2P, cable negro y rojo de 140mm Izquierda 1
9 Soporte baterías de 2 celdas 18650 1
10 Soporte baterías de 6 celdas AA 1
11 Rueda de robot 6515 blanco y negro 2
12 Separador hexagonal de cobre M3x40mm de doble paso 4
13 Pilar hexagonal de cobre M3x15 (6mm) 4
14 Tornillo M3x30mm cabeza redonda 4
15 Tornillo de cabeza plana M3x8mm 4
16 Tornillo hexagonal de acero inoxidable M3x8mm 10
17 Tornillo hexagonal de acer inoxidable M3x10mm 10
18 Hembra M3 niquelada 14
19 KEYBOT cuerpo del robot color negro 1
20 Destornillador Phillips 3x40mm 1
21 Led con conector RJ11 1
22 Cable 6P6C RJ11 10cm azul 1
23 Cable 6P6C RJ11 20cm azul 2
24 Llave Allen M2.5 tipo L niquelada 1
25 Cable USB 1
26 Manual de usuario 1



En la caja del robot KEYBOT encontraremos las siguientes piezas, así como un manual de montaje del robot.


Las características del robot KEYBOT son las siguientes:

  • Rango de alimentación: entre 7V y 12V.
  • Rango de corriente: mínimo 800mA.
  • Velocidad del motor: a 6.0V 100rpm/min.
  • Controlador de motores: TB6612.
  • Tres sensores de infrarrojos
    • Para seguimento de línea y detector diferencia entre blanco y negro.
    • Para detectar caídas.
  • Módulo de ultrasonidos: para detectar obstáculos o medir distancies.
  • Zumbador: permite emitir sonidos.
  • Led: indicador realizar indicaciones visuales.
  • Módulo inalàmbrico Bluetooth HC-06: para poder controlar el robot de forma remota.
  • Dos motores de corriente continua.
  • Dos ruedas de goma para mejorar la adherencia.
  • Placa de control Keybot Control Board: con connector RJ11 para facilitar las conexiones.
  • Estructura metálica muy resistente.
  • Interruptor: permite encender y apagar el robot.
  • Soporte pilas: para 6 pilas AA.
  • Soporte baterías: para 2 baterías 18650.
  • Placa de expansión de comunicaciones I2C.



Elementos adicionales:

  • Hub I2C: elemento que nos permite conectar dispositivos I2C.


  • Matriz de leds 8×8: 64 leds configurables.


  • Pantalla OLED: pantalla de 0,96” (128×64).


  • Sensor de color: permite detectar colores.


  • Servomotor: motor que podemos controlar su posición.

  • Sensor DHT22

  • Módulo de comunicaciones Wifi (adaptador + antena).

  • Cable RJ11.

  • Accessorios impresos en 3D para poder sujetar los elementos adicionales (y algunos tornillos metálicos).

  • Otros elementos que se podrían conectar…




4.Placa de control Keybot Control Board v2.0.

La placa de control Keybot Control Board 2.0 es una placa electrónica basada en Arduino pero adaptada a las necesidades de nuestro robot. En la placa vienen integrados todos los elementos para el control de los sensores y actuadores del robot, ya sean los drivers para el control de los motores, interruptor de alimentación, connectores para los sensores y actuadores, zumbador, conector Bluetooth, etc.

Placa de control Keybot Control Board v2.0:

Detalles técnicos de la placa

Keybot Control Board 2.0


  • Circuito de control principal: ATMEGA328P-AU
  • Circuito de control de motores: TB6612FNG
  • Circuito de transmisión USB-serie: ATMEGA16U2-MU
  • Tensión de entrada: DC 7-12V
  • Corriente para los motores: 1.2A (media) / 3.2A (máxima)
  • Corriente de Standby: 47mA
  • Zumbador pasivo: D13 control
  • Control de dirección de motores: D4 (motor A) y D7 (motor B)
  • Control de velocidad de motores: D5 (motor A) y D6 (motor B)
  • Interruptor de alimentación (interruptor grande)
  • Interruptor de comunicaciones Ordenador-Bluetooth (interruptor pequeño)
  • Conector para módulo Bluetooth
  • Conector doble de 3 pines para motor para el control de 2 servo motores: D9 y D10 control
  • Botón de Reset
  • Conector de alimentación
  • 2 Conectores para motores (MA y MB)
  • 8 Conexiones RJ11:
    • A0-D2
    • A1-A2-A3
    • A4-A5 (I2C)
    • A6-A7
    • D3-D8
    • D9-D10
    • D11
    • D12
  • Led indicador de alimentación
  • Leds Rx y Tx para indicar las comunicaciones



Tabla de conexiones de los diferentes elementos del robot KEYBOT en la placa de control:


En esta placa de control ya están las entradas y salidas definidas. La placa se basa en una placa Arduino UNO. Dispone de un driver de motores, un zumbador (Pin D13) y dos conexiones para servo motores (pins D9 y D10).
La placa dispone de entradas Analógicas (A) y de entradas/salidas Digitales (D) todas ellas con conexiones RJ11 para evitar errores en las conexiones.


5.Guía de montaje.

A continuación, procederemos a realizar los pasos de montaje del robot KEYBOT de forma muy resumida y gráfica (hay un manual de instrucciones en el kit de robot).

Muy importante tener en cuenta que existe un problema con el Manual de usuario que viene en el kit, ya que hay un paso mal. Los motores deben colocarse después de instalar el soporte de las pilas, ya que si no se hace así no se pueden poner los tornillos para sujetar el soporte.

Es conveniente para poder apretar las hembras de utilizar unas alicates y, opcionalmente, se pueden sustituir las hembras que vienen en el kit por hembras autoblocantes.

Alicates de punta Hembra autoblocante



También se pueden utilizar herramientas propias, en este caso estas hechas en 3D.


Pasos a seguir en el proceso de montaje:

  • Paso 1: Montaje de la estructura.
  • Paso 2: Colocación del sensor de ultrasonidos.
  • Paso 3: Ahora instalaremos los sensores del seguidor de línea y la rueda de acero.
  • Paso 4: Instalación del soporte de las baterías 18650.
  • Paso 5: Instalación del soporte de las baterías AA.
  • Paso 6: Montaje de los motores.
  • Paso 7: Colocación de las ruedas.
  • Paso 8: Colocaremos la placa de control a la estructura del robot.
  • Paso 9: El siguiente paso es instalar el protector acrílico de la placa de control.
  • Paso 10: Conexión de los sensores y actuadores.
  • Paso 11: Instalación del kit de ampliación.



En el robot hay un manual de montaje. Hay un error en el procedimiento, ya que si se montan los motores al principio después deben quitarse para montar el soporte de las baterías.

Paso 1: Montaje de la estructura.

  • 1 un. Estructura del robot
  • 4 un. Tornillo hexagonal M3x8mm
  • 4 un. Separador de cobre doble paso M3x40mm




Paso 2: Colocación del sensor de ultrasonidos.

  • 2 un. Tornillo hexagonal de acero inoxidable M3x8mm
  • 2 un. Hembra niquelada M3
  • 1 un. Sensor de ultrasonidos




Paso 3: Ahora instalaremos los sensores del seguidor de línea y la rueda de acero.

  • 2 un. Tornillo hexagonal de acero inoxidable M3x10mm
  • 2 un. Hembra niquelada M3
  • 1 un. Módulo sensor de líneas
  • 1 un. Rueda de acero W420




Paso 4: Instalación del soporte de las baterías 18650.

  • 2 un. Tornillo de cabeza plana M3x8mm
  • 2 un. Hembra niquelada M3
  • 1 un. Soporte baterías 18650




Paso 5: Instalación del soporte de las baterías AA.

  • 2 un. Tornillo de cabeza plana M3x8mm
  • 2 un. Hembra niquelada M3
  • 1 un. Soporte baterías AA




Paso 6: Montaje de los motores.

  • 2 un. Motor reductor
  • 4 un. Tornillo de cabeza redonda M3x30mm
  • 4 un. Hembra niquelada M3




Paso 7: Colocación de las ruedas.

  • 2 un. Rueda 6515




Paso 8: Colocaremos la placa de control a la estructura del robot.

  • 4 un. Separador de cobre M3x15mm
  • 1 un. Placa de control Keybot Control Board




Paso 9: El siguiente paso es instalar el protector acrílico de la placa de control.

  • 4 un. Tornillo hexagonal de acero inoxidable M3x10mm
  • 1 un. Panel superior acrílico





6.Instalación del kit de ampliación.

A continuación, mostraremos cómo instalar el kit de ampliación. Este kit consta de:

  • Hub I2C
  • Sensor de colores
  • Pantalla OLED
  • Matriz 8×8
  • Servomotor
  • Sensor DHT22
  • Accesorios impresos en 3D para sujetar los elementos anteriores
  • Cables RJ11
  • Módulo Wifi



Paso 10: Conexión de los sensores y actuadores.


Proceso de montaje de los elementos 3D:

  • Éstas son las herramientas que puede utilizar para montar el robot.



  • Montaje del sensor de color.



  • Montaje del Hub I2C.



  • Montaje de la matriz de leds.



  • Colocación de la pantalla OLED + Sensor DHT22 + Módulo Wifi.



  • Montaje del portabatería.



  • Montaje del soporte del led.



  • Montaje de la cara (servomotor + sensor ultrasonidos).



  • Robot montado! Tardarás una media hora (aproximadamente).





7.Guía de conexión.

Ahora procediremos a realizar la conexión del cableado. Haremos las conexiones tal y como indica la tabla del apartado 4. Conectaremos con los cables RJ11 los sensores y actuadores de color verde y el resto con sus conectores corresponendientes.

El módulo Bluetooth o el módulo Wifi los conectaremos directamente a la placa de control. Deberemmos poner el interruptor asociado al módulo en la posición OFF para poder enviar el programa a la placa. Debemos tener cuidado a la hora de conectar el módulo Wifi y fijarnos con las conexiones, ya que debemos hacerlas con cables Dupont.

La placa Hub I2C permite conectar dispositivos I2C. Aquí conectaremos el sensor de colores, la pantalla OLED i la matriz 8×8.

Paso 11: Conexión de los sensores y actuadores.
El servomotor va al conector de la parte superior (más separado de la placa).

El Hub I2C se conecta al conector I2C de la placa (A4/A5) desde cualquier conector de la placa y el resto de componentes se conectan al resto de conectores del hub.

Esquema de conexiones:



8.Instalación de ArduinoBlocks.

ArduinoBlocks trabaja on-line pero debemos instalar un pequeño programa que será el encargado de conectar nustro programa con el robot KEYBOT.

Primero deberemos crear una cuenta en ArduinoBlocks y después instalar el software Connector.

  • Para crear una cuenta en ArduinoBlocks:




  • Para instalar Connector.





9.Programación con ArduinoBlocks.

ArduinoBlocks es un lenguaje de programación gráfico con “Bloques” creado por el profesor Juanjo López. Está pensado para que niñas y niños aprendan a programar a partir de unos 8 años.

Los diferentes blocs sirven para leer y escribir las entradas y salidas de la placa de control del robot, así como para programar funciones lógicas, de control, etc.


Para realizar la programación la podemos realizar desde la IDE de Arduino o mediante ArduinoBlocks. Como podemos ver son dos sistemas distintos. En la IDE de Arduino la programación se realiza mediante instrucciones (a la derecha en la fotografía) y en Arduinoblocks se realiza mediante blogs.
Para poder programar el robot en ArduinoBlocks podemos utilizar los bloques específicos. Para que aparezcan debemos crear un proyecto nuevo eligiendo en “Tipo de proyecto”: Keyestudio Keybot.

El procedimiento para crear un proyecto en ArduinoBlocks es el siguiente:

Ahora ya podemos utilizar los bloques del robot KEYBOT en ArduinoBlocks.



Utilizar ArduinoBlocks simplifica y hace más inteligible el código, esto permite iniciarse en el mundo de la programación de forma más amigable. ArduinoBlocks también permite programar el robot de diversas formas, ya que hay diferentes bloques que realizan las mismas funciones, nosotros utilizaremos los bloques específicos que hay para programar el robot.

Puede cambiar el idioma del entorno de programación que viene por defecto.


En la siguiente imagen puede ver una comparación de código entre ArduinoBlocks y Arduino IDE.




10.Actividades con el robot KEYBOT.

A continuación, le propondremos una serie de actividades y prácticas para poder aprender a programar el robot KEYBOT. Lo haremos paso a paso para poder llegar a programar completamente el robot.

  • A01. Led
  • A02. Led (PWM)
  • A03. Zumbador
  • A04. Sensor de temperatura y humedad DHT22
  • A05. Comunicación serie (Consola)
  • A06. Sensor de ultrasonidos
  • A07. Comunicación serie (Plotter)
  • A08. Tratamiento de datos CSV I.
  • A09. Movimientos del robot (control de motores)
  • A10. Sensores de línea I
  • A11. Sensores de línea II
  • A12. Comunicaciones I2C. Sensor de colores
  • A13. Comunicaciones I2C. Matriz 8×8 direccionable
  • A14. Comunicaciones I2C. Pantalla OLED
  • A15. Servomotor
  • A16. Comunicación Bluetooth
  • A17. Comunicación Wifi
  • A18. Tratamiento de datos CSV II
  • Proyecto Final



En las actividades primero hay una explicación del componente electrónico que se utilizará y, a continuación, una descripción de la práctica a realizar (puede que tenga diferentes apartados). Por último, se propone una actividad de ampliación. Esta actividad de ampliación (recuadro de color gris en cada práctica) es la práctica que puede proponer hacer a sus alumnos.


10.1 A01. Led.

Vamos a empezar el primer programa que consistirá en encendar y apagar el led conectado a D9. Haremos una intermitencia cada 500ms.

Como esta es la primera práctica explicaremos todo el proceso paso a paso. En las siguientes prácticas no se explicará la parte del Conector, la elección del puerto COM ni la subida del archivo al robot.

Un LED (Díode Emissor de Llum) es un tipo de diodo semiconductor que emite luz. Se utilizan como indicadores en muchos dispositivos y como elemento de iluminación.

Primero cogeremos el bloque del led que está dentro de “Actuadores”. Por defecto ya sale a qué conector tenemos el nuestro led conectado.


A continuación, arrastramos el bloque dentro de la estructura “Bucle”. Con esto el nuestro led ya se podrá encender.


Cambiaremos la salida del led a D9.


Pero lo que queremos es que se encienda y apague cada 0,5 segundos. Por eso tendremos que colocar un bloque de espera. Este bloque está dentro de los bloques “Tiempo”.


Modificaremos el tiempo de espera cambiando el número que hay en el bloc y poniendo el valor deseado.


Copiaremos el bloque del led con el botón derecho del ratón y “Duplicar”.


Ahora vamos a cambiar “Estado” del led para que se apague.


Y ahora sólo queda completar el programa con una espera de 5 segundos para comprobar los distintos ciclos.

Ahora ya tenemos el programa diseñado y sólo nos falta enviarlo al robot. Para realizar este proceso deberemos seguir una serie de pasos.


Enviar el programa al robot:

  • Conectamos el cable USB al robot y al ordenador.
  • Abrimos el Conector (que ya tenemos instalado) y seleccionamos el COM correspondiente (en este caso COM4).



  • Pulsamos sobre el botón “Subir” y se envía el programa a nuestro robot.




Ahora vamos a hacer otra práctica con el led. Lo que queremos hacer es que el led se encienda y se apague sólo 5 veces (utilizaremos los tiempos de 400ms ON y 250ms OFF).

Para poder realizar repeticiones utilizaremos un bloque nuevo que está dentro de “Control”. El bloc de repetición es “Repetir xx veces hacer”.


Meteremos el bloc en el programa.


Actividad de ampliación: modifica los tiempos a 600ms ON y 380ms OFF, que sólo lo haga 9 veces pero que cuando termine el led se quede encendido.



Solución:



10.2 A02. Led (PWM).

En esta práctica, lo que haremos será regular la intensidad de la luz del led. Para ello utilizaremos un método electrónico llamado PWM (Pulse-Width Modulation: modulación por ancho de pulso).

La modulación PWM permite generar una señal analógica mediante una salida digital. Al utilizar un sistema de codificación de 8 bits (en el sistema binario: 2^8 = 256, por tanto, del 0 a 255).

Las salidas digitales de Arduino sólo tienen dos estados: ALTO/BAJO, ON/OFF, ENCENDIDO/APAGADO. Es decir, corresponden a una salida de 5V (ON) y de 0V (OFF). Con esto sólo podemos realizar actividades de encender y apagar un led, no podríamos controlar su brillo de menos a más o viceversa. Esto lo hace por la proporción entre el estado alto (ON) y bajo (OFF) de la señal. El control digital se utiliza para crear una ona cuadrada de ciclo de trabajo diferente, una señal conmutada entre encendido y apagado. Este patrón de encendido y apagado puede simular voltjes entre encendido total (5 voltios) y apagado (0 voltios) al cambiar la relación entre estos dos valores.



El programa que haremos consistirá en encender el led con un valor un poco superior a la mitad de la intensidad máxima. Este valor serà 150. Primero elegiremos el nuevo bloque para regular la intensidad del led que se llama “Led intensidad (PWM)”.

En el valor de ajuste pondremos el nuevo valor que será 150.

Enviamos el programa al robot y comprobaremos que se encinde pero no demasiado intenso. Ara haremos un programa que vaya encendiendo el led poco a poco. Por eso utilizaremos un nuevo bloque que se llama “Contar con i desde x hasta x de a x”.

Colocamos el bloque y ponemos los parámetros de configuración.

Por último, utilizaremos el bloque “Variables” para poner la variable que irá variando.

La ponemos en el “Valor” del led que es que irá cambiando, y elegiremos la variable “i”.

Le daremos una espera de 50ms para que se vea su efecto. Envía el programa y comprueba su funcionamiento.





10.3 A03. Zumbador.

El zumbador (Buzzer en inglés) es un transductor electroacústico que produce un sonido continuo o intermitente. Sirve como mecanismo de señalización o aviso acústic. Para poder realizar sonidos concretos cada frecuencia corresponde a una nota musical.


En el robot KEYBOT el zumbador está integrado en la placa de control y está conectado a la salida D13.

Haremos un programa que haga la nota ‘La’ durante 100ms y después la nota ‘Do’ durante 50ms con un intervalo de 300ms entre notas.


También podemos hacer el programa con una pequeña modificación, que es utilizando los bloques específicos que existen por las notas (hay algunas notas definidas).


Ahora cargaremos una cançión ya grabada (en formato RTTTL). Primero cogeremos el bloque del “Zumbador Reproduir RTTTL” y después le meteremos el bloque que lleva los archivos “RTTTL”.

A continuación, elegiremos la canción “Arknoid”.

I añadiremos unos bloques propios de notas:

Actividad de ampliación: crea la canción Himno de la alegría. Puedes elegir como referencia el tiempo de notas negras de 500ms.


Solución: (también se puede hacer con el nombre de las notas)



10.4 A04. Sensor de temperatura y humedad DHT22.

En esta actividad leeremos los valores del sensor de temperatura y humedad DHT22. Este sensor mide temperaturas en un rango de -40°C hasta 80°C con un error de +/-0.5°C y la humedad relativa entre 0% y 100% con un margen de error de +/-2%.

El sensor de temperatura es un termistor tipo NTC. Un termistor es un tipo de resistencia en el que su valor resistivo varía en función de la temperatura.

El término proviene del inglés “thermistor”, el cual es un acrónimo de palabras Thermally Sensitive Resistor (resistencia sensible a la temperatura). Existen dos tipos fundamentales de termistores:

  • Los termistores con coeficiente de temperatura negativa (Negative Temperature Coefficient o NTC), el cual decrementan su resistencia a medida que aumenta la temperatura.
  • Los termistores con coeficiente de temperatura positiva (Positive Temperature Coefficient o PTC), el cual incrementan a su resistencia a medida que aumenta la temperatura.



Nuestro robot dispone de un sensor de ese tipo conectado a la entrada D12.

En ArduinoBlocks, en el menú de sensores tenemos un bloque específico para programar este sensor:


Haremos un pequeño programa para almacenar los valores de la temperatura y la humedad. Primero crearemos dos variables donde almacenaremos los datos y después realizaremos la lectura del sensor.

Para crear la variable iremos al menú Variables y escogeremos un tipos de variable numérica.


El programa resultante es el siguiente:

Actividad: realiza un programa que realice la media de dos valores de temperatura tomados con una diferencia de tiempo de 1 segundo.



Solución:



10.5 A05. Comunicación serie (Consola).

En esta práctica probaremos el funcionamiento de la comunicación entre el robot KEYBOT y el ordenador. ArduinoBlocks dispone de una “Consola” para poder ver la comunicación. Esta función es muy útil porque nos permite consultar valores (como los de los sensores) en el KEYBOT.

Haremos un programa en el que enviaremos un mensaje de texto “Robot KEYBOT” y el valor de una variable que se vaya modificando entre 0 y 255 cada 20ms.

Primero configuraremos la velocidad de comunicaciones. Abriremos en el panel de bloques “Port serie” y elegimos “Inicia Bauds 9600”.

Lo pondremos dentro de “Inicializar”. Ahora escogeremos el bloque “Enviar” para añadir el texto a dentro de las comillas.

Ahora añadiremos los bloques de la variable de conteo. Crearemos una variable añadiendo el bloque “Establecer varNum=x”.

Después crearemos una “Variable nueva…” y le daremos el nombre de “valor”. Y los contadores cambiaremos la variable.

Por último, añadiremos el bloque para enviar el valor y el tiempo de espera. El programa quedará de la siuiente manera:

Ahora subimos el programa al robot y abrimos la “Consola”.

En el menú que aparece pulsamos en “Conectar”.

Ya podemos ver los datos:


Actividad de ampliación: modifica el programa envíe los datos de una variable que se llama “Distancia”, que el contador se incremente de 5 en 5 y que el tiempo de espera sea de 50ms. Nota: puedes “Renombrar la variable” para ahorrar tiempo.


Solución:




10.6 A06. Sensor de ultrasonidos.

El KEYBOT lleva un sensor de ultrasonidos para poder ver lo que hay delante. Son los ojos del robot. Funciona de forma similar al sistema que utilizan los murciélagos, ya que se guían por ultrasonidos.


El modo de funcionamiento de este sensor es muy sencillo. Está formado por un emisor y un receptor de ultrasonidos (no perceptibles por el oída humano). Cuando una onda ultrasónica choca con un objeto se refleja como un eco. Al devolverla es detectada por el receptor. Para saber la distancia del objeto, se calcula el tiempo que tarda la señal desde que se emite hasta que se vuelve a detectar (conociendo que la velocidad del sonido es de 340m/s). El sensor mide distancias entre 2,5cm y 3cm. El sensor está conectado en A0-D2.

Haremos un programa que encienda el led si la distancia medida es inferior a 25cm y que se apague si la distancia es mayor.

ArduinoBlocks tiene un bloque específico por la medida de la distancia con el sensor de ultrasonidos.

Ahora nos hará falta un nuevo bloque para decidir si ese valor de distancia es mayor o menor. Este bloque es “si x hacer x”.

También necesitaremos establecer la condición lógica.

Y el valor matemático de la comparación.

Ahora empezaremos a hacer el programa. Primero montaremos la estructura del condicional. Y añadimos los bloques correspondientes al estado del led.

Con este programa no funciona del todo bien por qué el led se apaga intermitentemente. Esto se debe a que no almacenamos la distancia del sensor en ninguna variable. Por tanto, deberemos crear una variable llamada “distancia”. Tampoco le estamos dejando tiempo en el sensor de ultrasonidos que calcule la distancia. Le pondremos un tiempo de espera mínimo de 10ms.

El programa que debemos hacer es el siguiente:


Actividad de ampliación: modifica el programa para que encienda el led si la distancia es menor o igual a 12cm y enviará el valor del sensor a la “Consola” en cualquier caso.



Solución:



10.7 A07. Plotter.

Ahora haremos un programa muy interesante que nos permitirá ver los datos del sensor de ultrasonidos, es a decir, veremos de forma gráfica la distancia que está midiendo el sensor de ultrasonidos y, además, podremos generar un archivo CSV con los datos. Con este programa conseguiremos tener un práctico sistema de adquisición de datos.

Primero haremos el programa para poder ver los datos en el Plotter que tiene integrado ArduinoBlocks.


Enviamos el programa a la placa y activamos el Serial Plotter.


Cambiaremos la velocidad de comunicación (baudrate) a 115200 (si es necesario) y después pulsaremos en Conectar para ver los datos.


Activitat de ampliación: modifica el programa para que indique los valores de los sensores de línea.



Solución:




10.8 A08. Tratamiento de datos CSV I.

Para poder guardar los datos en CSV pulsaremos sobre el botón de almacenar (podemos elegir la cantidad de datos almacenados en “Max.Samples/serie).


Veremos los datos que se estan registrando.


Luego pulsamos en detener y en CSV para descargar el archivo con los datos.


Abrimos el archivo con Excel y el resultado será similar al que vemos a continuación.


Utilizaremos el programa del medidor de distancia por ultrasonidos para poder comprobar experimentalmente lo visto anteriormente. Hemos realizado una pequeña modificación para que las medidas mayores de 50 no las muestre.


Los pasos que debemos seguir son:

  • Subir el programa al robot.
  • Abrir el Serial Plotter desde la Consola.
  • Seleccionar la velocidad de connexión (Baudrate) a 115200.
  • Conectar.
  • Grabar datos.
  • Descargar el archivo CSV.
  • Hacer el tratamiento de datos (en este caso con Excel).


Configuramos el Serial Plotter:


Iniciamos la visualización de los datos:


Podemos ver cómo se van registrando los datos:


Abrimos la hoja de cálculo y vemos los datos registrados:


Selecionamos la columna Distancia para poder realizar la gráfica:


Vamos al menú InsertarGráficos recomenados:


Ya podemos ver la gráfica representada:


Actividad de ampliación: realiza un programa replicando lo que hemos hecho en esta práctica.



Solución:



10.9 A09. Movimientos del robot.

Éste será una de las partes más importantes de la programación, ya que deberemos programar los movimientos del robot mediante el accionamiento de los motores.


En total podremos realizar 9 movimientos diferentes, aunque en los bloques definidos podremos realizar 7 combinaciones. Las combinaciones que no existen son las de girar a derecha e izquierda hacia atrás. Pero se pueden diseñar con los bloques que configuran motores.


Los movimientos del KEYBOT dependerán del sentido de giro de cada uno de los motores. Aquí tenemos cuál es el sentido de cada motor en función del movimiento deseado:


Con este bloque también podemos elegir la velocidad de los movimientos.



También existe un bloque específico para el control de cada uno de los motores. Este bloque nos permite elegir el motor, el sentido de giro y la velocidad.


Haremos un programa que realice una secuencia de movimientos cada 2 segundos. La secuencia será:


Ahora intentaremos de diseñar los dos movimientos que faltan. Pero crearemos una función que consiste en agrupar una serie de bloques y asignarle un nombre.


La primera función será giro izquierda atrás. El motor izquierdo irá hacia atrás y el motor de la derecha estará detenido. Le daremos el valor de 128 que corresponde a la velocidad normal. Haremos lo mismo por la otra función.


Ahora aparecen dos nuevas funciones en el bloque de “Funciones”.


Ahora ya tenemos el programa con todos los movimientos posibles del Keybot.


Actividad de ampliación: modificaremos el programa para que el KEYBOT haga lo siguiente:

  • Marche hacia delante si no detecta ningún obstáculo una distancia superior a 20cm.
  • Si detecta entre 15 y 20cm se detendrá.
  • Si detecta que la distancia al objeto que tiene delante es menor o igual a 15cm debe echar atrás.
  • Cuando el KEYBOT dé marcha atrás debe avisar con el led i el zumbador (al igual que lo hacen algunos vehículos). El led hará una intermitencia y el zumbador irá haciendo un ruido intermitente.



Para que sea un poco más fácil puede partir de este programa…


Solución:



10.10 A10. Sensores de línea I.

El sensor de líneas del KEYBOT está formado por tres sensores infrarrojos TCRT5000. Su principio de funcionamient es la de emitir una señal infrarroja (emisor) y detectar la cantidad reflejada (receptor). En el caso de que el color sea negro,este color absorbe toda la luz pero si es de color blanco la refleja. Por tanto, si el color es negro devolverá un valor Alto (1) y si es blanco devolverá un valor Bajo (0). La altura de detección está comprendida entre 0,5 y 3 cm.


El sistema de identificación de línea del KEYBOT está compuesto por 3 sensores de ese tipo. En la parte superior hay tres potenciómetros para poder ajustar la sensibilidad. Al lado de cada potenciómetro hay un pequeño led rojo que se enciende cuando el sensor detecta el color blanco y se apaga con el color negro.


Los sensores de línea estan conectados a la entrada analógica triple A1, A2, A3. Cada uno corresponde a los sensores S1, S2 y S3 respectivamente.


A continuación, haremos un programa que envíe si detecta blanco o negro con el sensor S1 a la “Consola” cada 100ms. Utilizaremos uno de los bloques específicos del KEYBOT.



Los valores que veremos en la “Consola” sólo podrán ser 0 o 1. Por tanto, este tipo de valor es de tipo Boolean.


Activitat de ampliación: haz un programa que lea los tres sensores y después los muestre por la “Consola” cada 50ms. Deberá crear un nuevo tipo de variable Boolean.



Solución:



10.11 A11. Sensores de línea II.

En esta práctica nos entraremos al programar a los sensores de línea para poder empezar a hacer un robot seguidor de línea.

El programa que haremos consistirá en que si detecta el sensor del medio adelante el robot, si detecta el sensor S1 debe girar a la derecha y si detecta S3 debe girar a la izquierda.


Actividad de ampliación: realiza un programa que basándose en el programa anterior regule la velocidad en función de la distancia. Para calcular la velocidad utilizaremos la fórmula velocidad = distancia*3.

Solución:



10.12 A12. Comunicaciones I2C. Sensor de colores.

En esta práctica utilizaremos el sensor de color RGB TCS34725 que funciona mediante el bus I2C. Sin embargo, primero necesitamos saber cómo funciona este sistema de comunicaciones.

El estándar I2C (Inter-integrated Circuit) fue desarollado por Philips en 1982 por la comunicación interna de dispositivos electrónicos. Posteriormente fue adoptado por otros fabricantes hasta convertirse en un sistema estándar. El bus I2C necesita sólo dos cables para su funcionamiento, uno para la señal de reloj (SCL) y el otro para el envío de los datos (SDA).


En general, cada dispositivo conectado al bus sólo tendrá una dirección única. Si tenemos elementos iguales deberemos cambiar el direccionalmente de alguna forma. El bus I2C es una arquitectura tipo master-slave. El dispositivo master inicia la comunicación con los esclavos, i puede enviar o recibir datos de los esclavos.


A este dispositivo podemos conectarle muchos dispositivos diferentes:

  • Pantalla LCD
  • Pantalla OLED
  • Matriz de leds
  • Acelerómetros
  • Giroscopios
  • Sensores de temperatura
  • Controladores de servomotores



A continuación, procederemos a programar el sensor de colores. El sensor puede reconocer el color de la superficie de un objeto mediante la detección óptica. El sensor se ilumina con luz brillante y emite los valores RGB correspondientes para ayudar a restaurar el color. Además, para evitar la interferencia del entorno y aumentar la precisión, lleva un sistema de luz infrarroja en la parte inferior del sensor, de modo que el elemento de espectro infrarrojo de la luz incidente se minimiza para hacer que la gestión del color sea más precisa. En la parte inferior del sensor se pueden ver los 4 LEDs de color amarillo, que pueden garantizar que el sensor se pueda utilizar normalmente en condiciones de poca luz ambiental, realizando la función de luz de relleno. El sensor tiene un filtro de alta sensibilidad, amplio rango dinámico y sombreado infrarrojo. Es una solución ideal para componentes sensibles al color.


ArduinoBlocks dispone de tres bloques específicos para poder controlar este sensor dentro de los bloques de “Sensores”.


Es muy importante que primero haga una “Captura color” para poder saber el color.

Realizaremos un programa que identifique si el color que detecta es el rojo. Si es correcto se encendrá el led y si no estará apagado.


Actividad de ampliación: realiza un programa que en función de los colores haga una nota musical e indique la nota en la pantalla por la consola. Puede utilizar los calores de las notas o directamente la nota.
Do = 262
Re = 294
Mi = 330
Fa = 349
Sol = 392
La = 440
Si = 494
Puede utilizar el circuito de prueba per probar el programa ya que tiene todas las notas y colores propuestos.



Solución:



10.13 A13. Comunicaciones I2C. Matriz 8×8.

Este dispositivo está compuesto por 64 leds que forman una matriz de 8×8. Este módulo utiliza el chip HT16K33 para controlar una matriz de puntos de 8×8.

Sólo necesita utilizar el puerto de comunicación I2C del microcontrolador para controlar la matriz de puntos. Hay algún modelo que también dispone de tres interruptores DIP para poder cambiar la dirección de comunicación I2C y poder conectar más matrices a la vez. Nosotros utilizaremos este último modelo.


En la configuración del direccionalmente I2C podremos elegir entre 8 combinaciones (2³=8) posibles. Si dejamos a OFF els tres interruptores será 0x70 y si los ponemos a ON será 0x77.


También deberemos elegir la versión de la matriz, en este caso la V2.


Para poder programarla utilizaremos los bloques propios que tiene que están en el bloque de funciones “LedMatrix 8×8”…


Al igual que en la práctica anterior, primero configuraremos la matriz y después haremos que salga una cara. Debe elegir la dirección 0x70 y la versión v2.


Ahora haremos un programa que encienda unos leds en unas posiciones específicas. El de la posición (0,0) estará siempre encendido y el de la posición (1,1) será intermitente.


Actividad de ampliación: realiza un programa que haga rotar una flecha a la matriz de leds. La velocidad de rotación dependerá de la distancia multiplicada por 10.



Solución:



10.14 A14. Comunicaciones I2C. Pantalla OLED.

Vamos a programar la pantalla OLED. Esta pantalla funciona por bus de comunicaciones I2C y su tamaño es de 0,96″ (128×64). Sólo cada píxel que está encendido consume corriente, por eso este tipo de pantallas son muy eficientes.


Conectaremos la pantalla al HUB I2C mediante cables Dupont a las conexiones SDA - SCL - GND - VSS.

ArduioBlocks dispone de bloques específicos para poder controlar totalmente la pantalla.


Haremos un programa que muestre un mensaje a la pantalla OLED. Primero configuraremos la dirección I2C en el valor 0x3C. A continuación, mostraremos el texto en la pantalla.

Podemos elegir dónde colocamos el texto (x,y), el texto que se mostrará y su tamaño (small, medium, big).

Actividad de ampliación: realiza un programa que muestre en la pantalla en la primera línea “Contador” y en la segunda línea el valor de un contador de 0 a 255.



Solución:



10.15 A15.Servomotor.

En esta práctica utilizaremos un servomotor. Es un elemento muy utilizado en robótica. Es un tipo de motor que puede posicionar su eje en un determinado ángulo. Para su funcionamiento necesita la alimentación (GND y VCC) y una señal de control. Generalmente los servomotores pueden girar unos 180° pero hay algunos modelos que pueden girar más, incluso de rotación continua.


La placa de control del KEYBOT dispone de dos salidas para poder conectar a servomotores (D9 y D10). Como ya utilizamos D9 para el led utilizaremos D10 para nuestro servomotor. Éste irá conectado directamente a la placa de control sin utilizar el conector RJ11 sino al conector de 3 pines. Para conectarlo debemos fijarnos en los colores de los cables: Negro GND - Rojo VCC - Naranja D10 (señal).


Existe un bloque específico para poder controlar los servomotores. Este bloque se llama “Motor”.


Actividad de ampliación: realiza un programa que haga mover el servomotor entre dos ángulos en función del sensor de línea que detecta:
S1:30° S2:90° S3:150°



Solución:



10.16 A16. Comunicación Bluetooth.

En la placa de control del robot KEYBOT tenemos un conector para colocar el módulo de comunicaciones Bluetooth. También dispone de un pequeño interruptor para poder abrir o cerrar este puerto de comunicaciones, puesto que está conectado a los pines D0 y D1 (Rx/Tx) al igual que puerto de comunicaciones del ordenador (USB).
Estado del interruptor:

  • OFF: transmisión del programa desde ArduinoBlocks
  • ON: funcionamiento en mode Bluetooth



10.16.1.1 A16.1. AppInvetor2.

Primero deberemos crear una cuenta en AppInventor2 a través del siguiente enlace: AppInventor2

Una vez creada la cuenta procederemos a realizar la programación, tanto con “Designer” como con “Blocks”. A continuación, se muestran los dos programas de ejemplo.


  • Designer





  • Blocks





10.16.2 A16.2. ArduinoBlocks.

A continuación, procederemos a realizar el programa en ArduinoBlocks y que irá en el KEYBOT.


Cuando tenemos preparados los dos programas, seguiremos los siguientes pasos:

  • Enviar el programa de ArduinoBlocks al robot KEYBOT
  • Instalar la aplicación en el teléfonn móvil
  • Sincronizar el Bluetooth del móvil con el módulo Bluetooth del robot
  • Probar el programa



Activaremos el módulo Bluetooth del teléfono móvil.


Abriremos el servicio Bluetooth del móvil y buscaremos el nuevo dispositivo. Aparecerá un dispositivo llamado HC-06.


Escogeremos este módulo e introduciremos la contraseña: 1234 (opcionalmente puede ser 0000).
Ya tendríamos sincronitzado los dos dispositivos Bluetooth.


A continuación, abriremos la aplicación (en este caso se llama “Bluetooth”).


Pulsaremos el botón “Conexión” para poder realizar la conexión (las letras salen de color negro, cuando se conecte cambiarán de color). Recuerde que el interruptor de comunicaciones estará en ON en el robot.


Escogeremos nuestro módulo Bluetooth (mediante la dirección MAC):


Ara las letras del botón “Conexión” aparecerán de color azul.


Y el led rojo del módulo Bluetooth quedará fijo.


Si pulsamos el botón “Enciende led” se encendrá el led y si pulsamos “Apaga led” se apagará.

Actividad de ampliación: realiza un programa que permita controlar más elementos del robot. Aparte de controlar el led, que se pueda controlar que el robot se detenga, vaya hacia delante y hacia atrás.



Solución:





10.17 A17. Comunicación Wifi.

Para poder realizar la comunicación Wifi debemos de realizar una serie de pasos. Usaremos el programa ThingSpeak para subir y ver datos y la aplicación ThingView para sólo visualizar datos. Por tanto, debemos preparar los siguientes programas:

  • ArdinoBlocks: programa de recogida y envío de datos
  • ThingSpeak: programa para ver los datos en el ordenador a través de Internet.
  • ThingView: aplicación para ver los datos en el teléfono móvil.



Cambiaremos el módulo Bluetooth por el módulo Wifi respetando las conexiones VCC - GND - TXD - RXD. Para realizar las conexiones usaremos el cable Dupont o similar.

Ara haremos la configuración de ArduinoBlocks, ThingSpeak y ThingView.

10.17.1.1 A17.1. ThingSpeak.

Primero debemos crear una cuenta en ThingSpeak: Enllaç ThingSpeak


Una vez que hemos creado la cuenta de ThingSpeak debemos apuntar los siguientes datos:

  • Channel ID: referencia de nuestro dispositivo.
  • Author: referencia del autor del dispositivo.




Otros datos importantes están a la pestaña “API Keys”.

  • Write API Key: codi identificativo para enviar los datos.




Por último, debemos realizar la configuración de los canales donde recibiremos los datos en “Channel Settings”.


¡Ya hemos configurado ThingSpeak!

10.17.1.2 A17.2. ArduinoBlocks.

Una vez configurado ThingSpeak, prepararemos el programa de ArduinoBlocks para leer los datos de los sensores y enviarlos a través de Wifi.

En el bloque “Inicializar”, configuraremos:

  • Wifi red: nombre de la red Wifi donde queremos conectarnos.
  • Clave: contraseña de la red Wifi.
  • Usuario: nombre de usuario que tenemos a ThingSpeak (mwa0xxx).
  • Clave: contraseña de nuestra cuenta en ThingSpeak.




A continuación, configuraremos la publicación de datos con la función “para: subir datos a la nube”:

  • Channel ID: identificador del canal en ThingSpeak.
  • Write API Key: código identificativo para enviar los datos a ThingSpeak.


Estos datos debemos ponerlos en cada campo de: “Publicar Tema”.


¡Ya hemos configurado ArduinoBlocks!

10.17.1.3 A17.3. ThingView.

Si queremos ver los datos en el teléfono móvil, podemos instalar la aplicación ThingView. Para realizar la instalación debemos seguir los siguientes pasos:

Add ChannelChannel ID: pondremos el código de nuestro canal de ThingSpeak (Channel ID).


Visualización de datos en ThingView:


¡Ya está configurado, a ver datos!

Lo que haremos será enviar desde el robot los valores de temperatura, humedad y distancia a ThingSpeak y después recoger los datos en un archivo CSV (en la próxima práctica) para poder representar los datos obtienidos de forma gráfica.

Primero haremos el programa en ArduinoBlocks para enviar los datos a ThingSpeak. Al ser una cuenta gratuita no permite enviar datos muy seguidos. Enviaremos los datos cada 20 segundos.

Conectamos el módulo Wifi (si no lo tenemos conectado). Enviamos el programa al robot y cambiamos el interruptor para poder utilizar el módulo Wifi.

A continuación, configuraremos los canales que queremos habilitar de ThingSpeak y qué datos recibiremos en cada uno de ellos.



Actividad de ampliación: realiza un programa que permita cambiar datos a ThingSpeak desde el Keybot (Humedad, Temperatura y Distancia).


Los datos visualizados deberían ser similares a éstos.
Atención: ¡Se triga unos 40 segundos en poder empezar a ver los datos!


Solución: (el último valor de tiempo se puede modificar en función del tipo de cuenta de ThingSpeak).



10.18 A18. Tratamiento de datos CSV II.

En esta práctica lo que haremos será descargar los datos de ThingSpeak y realizar el tratamiento de los datos similar como hicimos en la práctica anterior.

Vamos al menú Data Import/Export y en el apartado Export pulsamos sobre Download para descargar el archivo CSV.


Descarga el archivo feeds.csv con los datos acumulados en el canal de ThingSpeak con sus campos asociados.

Los datos obtenidos son de la siguiente forma:


Convertimos el texto en columnas:


  • Deberemos configurar las siguientes características:




El documento que obtendremos quedará así:


Ahora volveremos a convertir la columna C en más columnas. Elegiremos la columna y volvemos a utilizar la función de Texto en columnas, pero ahora los delimitadores serán las comas.


La tabla quedará de la siguiente forma:


Ahora nos queda arreglar la tabla para poder realizar las gráficas. Crearemos una hoja nueva y pondremos en la primera columna el número de muestra y el nombre de las variables a continuación.


Volvemos a la hoja de datos y aplicamos un filtro en cada columna para elegir las casillas con datos.


Dejaremos todas las casillas con datos seleccionados y dejaremos sin seleccionar las vacías:


Ahora vamos a copiar estos datos en su columna de la hoja nueva que hemos creado.



Repetimos el procedimiento por las otras dos columnas. El resultado será:


Ahora ya tenemos los datos correctamente. Ja se pueden realizar las gráficas correspondientes. Insertaremos una gráfica de líneas.


Escogeremos un modelo de líneas 2D.


Y le añadiremos algo de diseño.


Sacamos la muestra del gráfico (color azul) y cambiamos un poco los colores. Y el resultado final será:


Actividad de ampliación: realiza todos los pasos de la práctica para obtener unas gráficas similares.




11.Proyectos con el robot KEYBOT.

A continuación, le propondremos una serie de proyectos o retos para realizar con el robot KEYBOT.

Para algunos de los proyectos utilizaremos una superficie con diferentes serigrafías que está incluida en el kit.

  • Seguidor de líneas: consiste en seguir una línea de color negro sobre fondo de color blanco. En caso de que el robot salga de la línea debe saber por qué lado ha salido para volver a encontrar la línea. Indicará en la pantalla LCD en qué posición se encuentra sobre la línea. Cuando esté sobre la línea indicará un símbolo en la matriz 8×8 y si sale de la línea indicará un símbolo diferente.


  • Controlado por Bluetooth: consiste en poder programar todos los movimientos del robot (9), el led, la matriz 8×8 y el zumbador desde una aplicación de teléfono móvil. En la pantalla LCD se mostrarán las órdenes que recibe el robot.


  • Gincana de obstáculos: consiste en hacer que el robot identifique obstáculos con el sensor de ultrasonidos para evitar los objetos y con los sensores de línea evitar caer desde una altura. Indicará en la pantalla matriz 8×8 si encuentra un objeto y en la pantalla LCD el estado de los tres sensores de línea.


  • Explorador autónomo: consiste en montar el sensor de ultrasonidos sobre el servomotor para que pueda escanear la superficie por donde debe moverse el robot. Indicará en qué ángulo y distancia se encuentra el objeto en la pantalla LCD. A la matriz 8×8 indicará el tipo de tamaño del objeto (pequeño, medio o grande).


  • Buscador de contaminantes: el sensor de colores debe identificar contaminantes (de diferentes colores) y con el sensor de línea evitaremos que salga de la área de búsqueda. En la pantalla LCD indicará el tipo de contaminante y con la matriz 8×8 el nivel de toxicidad. También emitirá un sonido en función del nivel de pelirosidad.


  • Mapeador de superficies: consiste en realizar diferentes cuadrículas de colores en una superficie blanca y el robot debe memorizar por la zona donde es mueve e indicar la secuencia de color que ha hecho. Los mostrará en la pantalla LCD. Cuando llega el final lo indica en la matriz 8×8 con un símbolo.


  • Músico de colores: consiste en realizar un circuito de colores. El robot debe mostrar en la pantalla LCD el nombre del color, hacer una nota musical asociada a ese color y con la matriz 8×8 mostrará una imagen si detecta un color o sólo es el fondo blanco.


  • Laberinto: consiste en poner una serie de paredes formando el laberinto y con el sensor de ultrasonidos debe intentar salir. El sensor de ultrasonidos se puede montar sobre el servomotor para escanear la zona donde está. Mostrará en la pantalla LCD las decisiones que va tomando y en la matriz 8×8 hacia dónde va.


  • Y los proyectos que vuestra imaginación genere…