KIT COCHE CON RADIO CONTROL

Para comprender el funcionamiento del sistema comunicación radio de micro:bit, se recomienda hacer primero la práctica «Mensajes radio»

Para comprender el movimiento de los motores del coche, una vez realizado el montaje del kit, se recomienda hacer la práctica «Coche» antes de realizar la actividad de radio control.

Objetivo:

Construir un coche con microbit que se controle con otra placa microbit como mando a distancia.

El coche cuenta con dos servomotores contínuos encargados de mover las ruedas delanteras del coche. Consta de dos placas microbit. La primera se integra en el coche y es la que moverá los motores en función de los códigos enviados por la segunda placa. La segunda placa actúa como mando a distancia enviando las siguientes órdenes:

  • Si pulsas el botón A, se mueve el motor de la rueda derecha
  • Si pulsas el botón B, se mueve el motor de la rueda izquierda
  • Si pulsas los botones A y B a la vez, se mueves ambos motores
  • Si agitas la placa el coche se para
  • Si tocas el logotipo, el sentido de giro cambia

Construcción:

Conexión:

Para poner en funcionamiento el coche, se precisa del siguiente material adicional:
  • 2 Placas microbit.
  • Cable de conexión.
  • Placa de expansión.
  • Portapilas.
  • Una placa microbit será la encargada de mover los motores del coche. Para facilitar la conexión de los motores a microbit, se utiliza la placa de expansión. Así toda la zona de conexiones de microbit queda duplicada con conectores dupont, y cada pin tendrá su propia  onexión VCC y GND.

    Cada servomotor consta de un conector con 3 cables:

  • Marrón: GND
  • Rojo: VCC
  • Naranja: Pin
  • Se conectarán del siguiente modo:

 

Los motores se conectan a los pines P1 y P2 de la placa de expansión.


Configuración de la placa:

Conectar la placa microbit al puerto USB del ordenador utilizando un cable Micro USB.

Acceder a https://makecode.microbit.org

 

Pulsa en nuevo proyecto:

 

Y asigna un nombre al proyecto

El sistema de programación es muy sencillo. Se basa en un lenguaje de bloques que minimiza los errores sintácticos, pudiendo poner el foco de atención en la lógica de programación.

Para configurar el idioma del software, accede al menú del engrane (esquina superior derecha), selecciona “language” y elige el idioma que desees.

El ordenador reconoce la placa microbit como si fuese una memoria externa. Puedes descargar tus programas y copiarlos en la placa utilizando el explorador de archivos, o emparejar la placa con el software para que la descarga sea directa a la placa.

 Para emparejar la placa con el software, pulsa en el icono “…” junto al botón descargar

Pulsa en “connect device”. Si no tienes conectada la placa, conéctala al PC, pulsa en siguiente y luego en Pair

En la siguiente ventana pulsa sobre la placa bbc microbit y después en conectar.

Si la placa se ha podido conectar correctamente, aparecerá el siguiente mensaje:

Debes realizar este proceso con las dos placas microbit, tanto con la placa que actúe como mando, como con la placa que actúe como controladora del coche.

Programación:

Este proyecto requiere de dos placas, y por lo tanto de 2 programas.

1. Placa mando a distancia: Esta placa es la que utiliza el usuario para enviar las órdenes al coche. Por cada pulsación de un botón o interacción con un  sensor, la placa envía una orden al coche por comunicación de radiofrecuencia.

2. Placa control del coche: Esta placa está colocada dentro del coche, conectada a los motores. Está esperando recibir códigos por radio frecuencia. Por cada código que recibe (previamente enviado por la placa que actúa de mando a distancia), activa uno u otro motor en función de la palabra que contiene el código recibido.

Placa Mando

Si agito la placa

Orden que recibe el coche

Si avanzaba hacia adelante, cambia a retroceder.

Si retrocedía, cambia a avanzar.

Placa Coche

Si pulso A

Si avanza, envío «izquierda-avanza»

 

Si retrocede, envío «izquierda-retrocede»

Motor P1 gira a velocidad 100 y P2 a 0

 

Motor P1 gira a velocidad -100 y P2 a 0

 

Si pulso B

Si avanza, envío «derecha-avanza»

Si retrocede, envío «derecha-retrocede»

Motor P2 gira a velocidad -100 y P1 a 0

Motor P2 gira a velocidad 100 y P1 a 0

Si pulso A+B

Si avanza, envío «ambos-avanza»

Si retrocede, envío «ambos-retrocede»

Motor P1 gira a velocidad 100 y P2 -100

Motor P1 gira a velocidad -100 y P2 100

Si agito el mando

Envío «parar»

Motor P1 gira a velocidad 0 y P2 gira a velocidad 0

Programación del mando:

El primer paso es configurar el canal de comunicación. En la sección «radio» (bloques rosa) encontrarás el bloque «radio establecer grupo». Utilizamos ese bloque para indicar a las dos placas un mismo número de canal de comunicación. Así no se interfiere con otras placas. Si en el aula hay varios kits en funcionamiento, cada par de placas deberán llevar un número de canal diferente.

1. CAMBIAR SENTIDO DE GIRO

A continuación, creamos una variable para tener en todo momento controlado en qué sentido están girando los motores. Para crear la variable pulsa en Variables (bloques rojo), crear una variable. Asigna un nombre, por ejemplo «sentido», y una vez creada aparecerán varios bloques asociados a la gestión de la variable. Al iniciar establecemos que la variable contenga la palabra «avanzar». Arrastra «fijar sentido a» dentro del bloque «al iniciar»

Cabe destacar que, por defecto, las variables almacenan número. Para poder almacenar una palabra debes arrastrar el bloque » » dentro de «fijar sentido a». este bloque lo encontrarás en Avanzado, texto

 

A continuación, programamos las acciones asociadas al sensor táctil de la placa (logotipo). Cada vez que toques el sensor, se estable que en la siguiente orden, el sentido de giro de los motores será el contrario al actual.

En entrada (bloques rosa) encontraremos una serie de bloques encargados de detectar eventos que suceden en la placa. estos eventos son:

1. Presionar un boton: A, B o A+B

2. Agitar la placa o colocarla en una posición determinada

3. Presionar un Pin

4. Detectar un sonido

5. Pulsar el logotipo

En este caso, queremos programar que al pulsar el logotipo el sentido de giro cambie, por lo que arrastramos este bloque al área de programación.

Dentro de este bloque, utilizamos un bloque condicional para evaluar el contenido de la variable sentido. De tal forma que:

1. Si en la variable teníamos el sentido avanzar, lo cambiamos a retroceder. 

2. Si en la variable teníamos retroceder, cambiamos a avanzar.

El bloque «si… entonces… si no …» lo encontrarás en la sección lógica (bloques verdes)

Para crear la condición «si sentido = avanzar», busca el operador » » = » » dentro de la sección lógica. Ten cuidado y no selecciones 0=0, ya que este operador compara cantidades y no textos. En nuestro caso lo que queremos comparar es el contenido de la variable sentido con la palabra avanzar.

Si la variable contiene la palabra avanzar, sabremos que tenemos que cambiar el sentido a retroceder. 

Terminamos de crear la condición introduciendo a un lado la variable sentido, y al otro lado el sentido de giro que queremos averiguar si es el actual o no (avanzar)

Si el sentido es avanzar, la variable sentido cambia al valor retroceder. Para ello usamos el bloque «fijar sentido» que encontrarás en la sección «variables» (bloques rojos). Recuerda que para fijar el sentido a la palabra retroceder, antes deber sustituir el 0 por el bloque » » que encontrarás en la sección texto.

Hemos incluido el bloque «mostrar cadena» para visualizar en la matriz de leds la inicial del sentido de giro que acabamos de configurar. Este bloque lo localizarás en básico (bloques azules).

Si el sentido no es «avanzar», creamos un nuevo condicional dentro del «si no». La estructura es similar a lo que hemos hecho hasta ahora. Simplemente comprobamos si en la variable tenemos el sentido «retroceder», en cuyo caso cambiamos el contenido a «avanzar». Si tienes dudas sobre los bloques utilizados, revisa los pasos anteriores.

2. PARAR EL COCHE

Cuando se agita la placa, se envía al coche la orden «PARAR». Para enviar una orden a la placa del coche utilizamos el bloque «radio enviar cadena» que se encuentra en la sección Radio (bloques rosa).

3. GIRA A LA IZQUIERDA

Si se presiona el botón A, enviamos la orden girar a la izquierda. En función del contenido de la variable sentido, sabremos si hay que enviar la orden girar en sentido avanzar, o girar en sentido retroceder.

4. GIRA A LA DERECHA

Si se presiona el botón B, enviamos la orden girar a la derecha. En función del contenido de la variable sentido, sabremos si hay que enviar la orden girar en sentido avanzar, o girar en sentido retroceder.

5. AVANZA / RETROCEDE RECTO

Si se presiona los dos botones a la vez, A + B, enviamos la orden adecuada para que ambas ruedas avancen o retrocedan en el mismo sentido, haciendo que el coche me mueva en línea recta.

Así, una vez finalizada la programación del mando, pulsa en el botón morado «Descargar» para insertar el programa en el programa que hará de mando a distancia. Una vez descargado, desconecta la placa y conecta la placa que irá insertada en el coche. Comenzamos con su programación.

Programación del coche:

El coche contiene una placa microbit que se encarga de recibir las órdenes del mando, y actuar sobre los motores en consecuencia.

Creamos un nuevo proyecto en la web de makecode, ya que su programación es independiente a la de el mando. Pulsa en el icono blanco de microbit (arriba a la izquierda) y después en nuevo proyecto. Asigna un nombre y a continuación pulsa en crear.

Como hicimos en el programa del mando, la primera acción es establecer el mismo grupo de comunicación radio que en el mando para que ambas placas puedan compartir información.

El coche sólo actuará cuando reciba una orden por radio. En la sección «radio» (bloques rosa) localizarás dos bloques «al recibir radio …»

El primero se utiliza cuando el dato que vamos a recibir es un número. Este NO es nuestro caso.

El mando de nuestro proyecto va a enviar las siguientes órdenes:

  • PARAR
  • IZQUIERDA-AVANZA
  • IZQUIERDA-RETROCEDE
  • DERECHA-AVANZA
  • DERECHA-RETROCEDE
  • AMBOS-AVANZA
  • AMBOS-RETROCEDE

Por lo tanto, al ser palabras y no números, el bloque que vamos a utilizar para recibir las órdenes es «al recibir radio receivedString».

 

Cuando se recibe una orden, analizamos su contenido y movemos los motores en un sentido u otro.

Para mover los motores, necesitamos agregar una extensión que facilitará su programación.

Pulsa en «Extensiones»

 

A continuación, pulsa sobre la extensión servos.

 

Aparecerá una nueva sección de bloques llamada «servos» que contiene bloques específicos para mover servomotores. 

Hay dos tipos de servomotores: de 180º y de giro continuo. En este proyecto, las ruedas del coche, están conectadas a dos servomotores de giro continuo.

Para mover estos motores, localizarás en la sección servos el bloque «continuo servo P0 corre a 50%».

P0 hace referencia al pin de la placa de expansión al que está conectado el motor. En nuestro caso, un motor está conectado al pin P1 y otro al P2.

50% hace referencia a la velocidad y el sentido de giro del motor. La velocidad es un valor absoluto de 0 a 100. A mayor valor absoluto, mayor velocidad de giro. En cuanto al sentido de giro, viene determinado por el signo. Así, el valor 100 indica máxima velocidad de giro en un sentido, mientras que valor -100 indica máxima velocidad de giro en el sentido contrario.

Volviendo a la programación del coche, comenzamos a analizar y actuar según los códigos recibidos. 

1. Parar el coche

Si el código recibido coincide con la palabra PARAR, utilizamos el bloque «detener servo» para que ambos motores se paren. Para crear la condición utiliza los bloques de la sección lógica. La variable «receivedString» la puedes arrastrar directamente desde el bloque «al recibir radio».


2. Avanzar / retroceder coche

Para que el coche avance o retroceda, ambos motores deben moverse en el mismo sentido. 

Si a los dos motores les damos la orden de avanzar en el mismo sentido, y los colocamos enfrentados, obtenemos un efecto espejo, y vemos que cada motor gira físicamente en sentido contrario. Para conseguir que el vehículo funcione correctamente, los motores deberán recibir la orden con signos contrarios.


3. Girar a la derecha

Si se recibe la orden para girar a la derecha, el motor P1 se mantiene parado y se activa el motor P2 en uno u otro sentido en función de si se ordenó avanzar o retroceder.


4. Girar a la izquierda

Si se recibe la orden para girar a la izquierda, el motor P2 se mantiene parado y se activa el motor P1 en uno u otro sentido en función de si se ordenó avanzar o retroceder.

Una vez finalizado el programa, pulsa el botón morado «descargar» y será grabado en tu placa.

Desconecta la placa del ordenador, conecta el portapilas de las dos placas y pon a prueba tu proyecto.