Estos contenidos prácticos complementan la parte teórica de los temas 4. Fundamentos de la computación física, 5. Internet de las cosas y 6. Robótica del currículo de Computación y Robótica de 1º ESO.
Tabla de contenidos
1. Objetivo
Lo último que hicimos con nuestro Maqueen es programarlo para que describiera una trayectoria predefinida.
Ahora, vamos a ir un poco más allá, programando una Micro:bit para que funcione como un mando a distancia que consiga controlar el movimiento del robot.
🛠 Materiales:
- 2 x Placa Microbit.
- 1 x Robot Maqueen.
- 1 x cable micro USB largo o portapilas para Micro:bt.
2. Entendiendo el proyecto
Como necesitamos hacer que el coche responda a los movimientos de otra Micro:bit, vamos a necesitar dos placas controladoras: la emisora (el mando a distancia) y la receptora (la que controla el coche).
La comunicación entre las dos placas, lo haremos usando los bloques de Radio:

Para facilitar, y acortar, la programación, usaremos cuatro posibles direcciones: IZQUIERDA, DERECHA, ADELANTE y ATRAS.
Pero, antes de comenzar a programar, necesitamos saber cómo funciona el sensor que usaremos para controlar el movimiento: el acelerómetro.
Un acelerómetro es un sensor que por medio de la fuerza gravitatoria de la tierra es capaz de detectar en qué plano de inclinación la has movido.

Tiene 4 posibles componentes: X, Y, Z y fuerza.
- X mide la aceleración a la derecha o a la izquierda.
- Y mide la aceleración hacia delante o hacia atrás.
- Z mide la aceleración en dirección ascendente y descendente.
- Fuerza mide la aceleración resultante de las tres dimensiones.
Fuerzas en el espacio
Como no vivimos en un mundo plano, las fuerzas ocurren en un espacio tridimensional (X, Y, Z). Si el movimiento de un objeto no es exactamente en la dirección de un eje, necesitamos una forma de calcular su aceleración a partir de los valores medidos para todos los ejes juntos. Si colocas tu Micro:bit sobre una mesa nivelada y lo empujas en diagonal, tendrás una aceleración en dos dimensiones ( X e Y ). Si decides levantar tu Micro:bit de la mesa, entonces acabas de agregar otra dimensión (Z).
Los valores que controlan esta aceleración se expresan en mili-g, que es 1/1000 g, siendo g la misma aceleración que obtienes de la gravedad de la Tierra, y varían en un rango de 2048 posibles valores (de -1023 a 1023). De manera que la placa en plano, mostrará una aceleración de 0 en la dimensión X. Si está completamente inclinada a la derecha, X será 1023, y completamente inclinada a la izquierda -1023.
La mejor manera de ver esto, es graficar sus valores para ver qué ocurre cuando la inclinas:

Sabiendo cómo funciona el sensor que usaremos, ya podemos empezar a programar.
Comencemos con la placa emisora.
3. Emisora
La comunicación entre las dos placas se va a realizar por medio de ondas de radio, así que lo primero que haremos será establecer un canal de comunicación, en nuestro caso el 1.

Además, nuestro coche se va a mover sobre el plano del suelo, así que no necesitaremos usar la dimensión Z del acelerómetro, sólo la X y la Y.
Esto nos deja sólo cuatro posibilidades de movimiento: DERECHA e IZQUIERDA para la X, y ATRAS y ADELANTE para la Y.
Por tanto, ya sabemos que nuestro programa debe tener una estructura condicional con cuatro casos:

Lo que queremos que suceda en cada caso es exactamente lo mismo: enviar a la placa receptora la dirección para que el coche se mueva, y mostrar en la emisora una flecha que indique la dirección que acabamos de mandar. Pues ya podemos hacerlo:

Lo único que nos quedaría por diseñar, son las condiciones que activan cada uno de esos casos. Vamos a asumir que queremos ir a la derecha cuando la X sea mayor o igual a 200, y a la izquierda cuando sea menor o igual que -200. Igualmente procederemos con la dimensión Y. Así que, nuestro programa se completaría así:

Ya puedes descargar el código en un archivo y meterlo en la placa que funcionará como emisora.
4. Receptora
La placa receptora debe recibir la información de la dirección, también por radio, por lo que debemos iniciarla estableciendo el mismo canal de comunicación que la emisora:

¿Cómo hacemos para recibir las palabras IZQUIERDA, DERECHA, ADELANTE y ATRAS que envió la emisora?
Usando el bloque de Radio disponible para ello:

Ten mucha precaución cuando uses la comunicación por radio, porque debes usar el bloque que recibe el mismo tipo de dato que se envió. Si se envió un número, debes usar receivedNumber. En nuestro caso, como se envió una palabra, debemos usar receivedString (cadena de caracteres en inglés).
Si la emisora era capaz de enviar cuatro posibles palabras, el programa de la receptora debe gestionar exactamente los mismos casos para las mismas palabras. Así que, ya sabes:

¿Cómo programamos, por ejemplo, el avance del coche cuando se recibe ADELANTE? Esto es algo que ya sabemos hacerlo, pero hay un pequeño detalle que ayuda a mejorar el comportamiento del coche en este proyecto.
Como el coche va a estar recibiendo constantemente mensajes para que se mueva, lo que haremos es moverlo durante medio segundo y luego pararlo orientado hacia delante:

Procederemos de la misma manera en los cuatro casos, hasta tener completado el código de nuestra receptora:

Ya puedes descargar tu programa y alojarlo en la Micro:bit que insertarás en el coche.
Para probar tu proyecto, enciende el coche para que esté disponible la receptora y luego activa la emisora. Inclínala hacia donde quieras y observa si el coche se mueve en la dirección que apunta la flecha que sale en la emisora.
5. Proyecto avanzado
Te propongo que realices el mismo proyecto, pero en vez de controlar al coche con otra Micro:bit, uses tu propio móvil y las capacidades Bluetooth que ya conocemos de la Micro:bit para controlar el coche (hacer que el coche avance, gire a ambos lados o pare) cuando lo indiques desde tu móvil.