Proyectos y recursos Micro:Bit

REDES CON MICROBIT

Para que las micro:bits puedan comunicarse usaremos la comunicación de radio a radio. Al escuchar la palabra radio solemos pensar en nuestras emisoras musicales favoritas, pero un trasceptor de radio (transmisor/receptor) se usa en las comunicaciones para generar y recibir ondas de radio que pueden contener todo tipo de información, como audio, vídeo o datos digitales. Y todas las micro:bit llevan una radio incorporada. La comunicación inalámbrica utiliza radiación electromagnética (ondas de radio y microondas) para enviar información. Las ondas de radio son esencialmente ondas electromagnéticas que se emiten desde una antena (como las antenas de un router WiFi). Por tanto, la comunicación inalámbrica es siempre broadcast, en el sentido de que las señales enviadas, por ejemplo, por un router WiFI, pueden ser escuchadas por cualquier dispositivo WiFi sintonizado en la misma frecuencia de radio.

La propuesta  de redes con Microbit está basada en el libro de Jesús Moreno. 

El siguiente material para el aula consta solo de una parte de su libro. 

A. BROADCAST

B. MULTICAST

C. UNICAST

D. PIEDRA, PAPEL O TIJERA

¿Qué es Internet?

Fuente: https://programamos.es/microbit/

Gracias a Jesús Moreno por su libro "Redes con Microbit"

A. BROADCAST

¿QUÉ HAREMOS?

La comunicación inalámbrica (radio), como por ejemplo el WiFI o los teléfonos móviles, es una forma popular de conectarse a Internet. 

En el proceso no solo aprenderás a utilizar la radio de tu micro:bit; también aprenderás acerca de la comunicación broadcast (o difusión). Las comunicaciones inalámbricas suelen ser broadcast; es decir, una micro:bit puede enviar mensajes a todas las micro:bits.

Resumiendo, este capítulo nos servirá para aprender sobre:

INTRODUCCIÓN

La comunicación inalámbrica utiliza radiación electromagnética (ondas de radio y microondas) para enviar información. Las ondas de radio son esencialmente ondas electromagnéticas que se emiten desde una antena (como las antenas de un router WiFi). Por tanto, la comunicación inalámbrica es siempre broadcast, en el sentido de que las señales enviadas, por ejemplo, por un router WiFI, pueden ser escuchadas por cualquier dispositivo WiFi sintonizado en la misma frecuencia de radio.

Definición 1: Broadcast

En redes, la comunicación broadcast (o de difusión) significa que el mensaje enviado por un remitente se transmite a todos los receptores en una red.

Pero, ¿significa esto que la comunicación broadcast solo es posible con las comunicaciones inalámbricas? No, pero es más engorroso. Por ejemplo, en la comunicación por cable la comunicación broadcast es posible repitiendo el mismo mensaje en todos los cables.

Finalmente, los receptores pueden negarse a recibir mensajes de difusión si los mensajes no están etiquetados con una dirección de broadcast.

Definición 2: Dirección broadcast

Una dirección broadcast (o de difusión) es una dirección especial que indica que todos los dispositivos de la red deberían recibir este mensaje.

En estos ejercicios con las placas micro:bit la dirección broadcast se va a configurar estableciendo el ID de grupo de la radio de micro:bit. Por tanto, todas las placas micro:bits deben tener el mismo ID de grupo para que la comunicación broadcast funcione.

A PROGRaMAR

Para la comunicación broadcast necesitamos que todas las micro:bits tengan el mismo ID de grupo de radio. Este identificador será la dirección de broadcast. Es algo parecido a lo que hacemos cuando sintonizamos el canal correcto para recibir una transmisión de televisión o una emisora de radio.

Programa tu micro:bit estableciendo el ID de grupo de radio a 0. Para ello tendrás que usar un bloque del menú Radio, como se muestra en la figura a continuación. Puedes aprender más sobre bloques de radio en https://makecode.microbit.org/reference/radio.

Figura 1: Establecer el ID de grupo de radio en MakeCode

2. Recibir mensajes broadcast

En esta tarea vas a programar tu micro:bit para recibir mensajes broadcast enviados desde otra placa. En este caso será la placa del profe la que envíe los mensajes broadcast.

A la hora de escribir tu programa para recibir mensajes hay dos cosas que tienes que tener en cuenta.

Piensa: ¿Qué bloques del editor vas a tener que usar para poder recibir un mensaje a través de la radio?

Haciendo uso de estos bloques, ¿puedes recibir cualquier tipo de mensaje, como por ejemplo un número o un texto?

Primero vas a programar tu micro:bit para que pueda recibir un número. La placa del profe está preparada para enviar mensajes con un número del 0 al 9, así que tu programa debe recibir el mensaje y mostrar por pantalla el número recibido. Cuando lo hayas programado, avisa al profe para que puedas probar tu programa.

Cuando hayas conseguido el paso anterior, vas a programar tu micro:bit para que también pueda recibir un texto. De nuevo, programa tu micro:bit para recibir mensajes de texto y mostrar el texto recibido. Cuando la hayas programado, avisa al profe para que puedas probar tu programa. ¿Qué palabra has recibido?

3. Enviar mensajes de broadcast

Ahora es tu turno para enviar mensajes broadcast. Como somos varias personas en clase, y cada persona enviará mensajes broadcast, verás que vas a recibir un montón de mensajes. ¿Es posible saber quién ha enviado cada mensaje?

Programa tu micro:bit para que envíe un número al presionar el botón A y envíe un texto al presionar el botón B.

Ampliación

Amplía el programa realizado en la tarea 2 que permite recibir un texto. Ahora tu placa mostrará una cara “Triste” hasta que reciba un mensaje con el texto “Hola”. En ese momento mostrará una cara “Alegre” durante dos segundos.

Preguntas finales

Reflexiona sobre algunos problemillas que tiene la comunicación broadcast. ¿Siempre es necesario o útil enviar mensajes a todo el mundo? ¿Qué pasa con la privacidad? ¿Puede ser problemático que todo el mundo reciba todos los mensajes?

¿Es más fácil enviar mensajes broadcast en redes cableadas o inalámbricas? ¿Por qué?

B. MULTICAST

¿QUÉ HAREMOS?

En el apartado anterior experimentamos con la comunicación broadcast,o de difusión, enviando mensajes a todo el mundo. En este capítulo vamos a aprender a enviar mensajes de forma que lleguen a un grupo más pequeño de gente. Para que la actividad fluya mejor vamos a organizarnos en grupos.

La comunicación multicast (que también se conoce como multidifusión o comunicación de grupo) es un concepto interesante que usan muchas tecnologías de Internet. Por ejemplo, permite enviar vídeos de forma muy rápida a través de Internet. 

En este apartado vamos a aprender sobre:

INTRODUCCIÓN

En el apartado de broadcast todas las micro:bits recibían los mensajes que enviaban todas las demás micro:bits. Como experimentaste, esta situación puede ser algo confusa (¡aunque también divertida!). Hoy vamos a intentar limitar a quién puede enviar mensajes cada placa y de quién puede recibir mensajes. Esto se llama comunicación por grupos o multicast. La comunicación por grupos se usa en Internet para enviar tráfico a muchas personas al mismo tiempo. Por ejemplo, la televisión por Internet y la videoconferencia utilizan la comunicación por grupos.

Definición 1: Comunicación por grupos

En la comunicación por grupos o multicast un mensaje es enviado solo a los ordenadores que forman parte del grupo.

Para ello es necesario que los mensajes lleven una etiqueta con una dirección de grupo o dirección multicast.

Definición 2: Dirección de grupo

Una dirección de grupo o multicast es una dirección especial que especifica que todos los dispositivos que pertenecen al grupo deberían recibir ese mensaje.

Para establecer una dirección de grupo (o ID del grupo) vamos a utilizar de nuevo el bloque “radio establecer grupo” que está en la categoría Radio, tal como hicimos en la práctica Broadcast: de una a todos. El mayor reto de este capítulo es crear los grupos de comunicación correctamente. 

¿Cómo aprenden los ordenadores que existe un grupo? 

¿Cómo se unen a ellos? 

¿Qué ocurre cuando abandonan un grupo? 

A lo largo de este capítulo tendrás la oportunidad de pensar sobre estas cuestiones mientras experimentas con la creación de grupos.

A PROGRaMAR

En primer lugar tenemos que decidir quiénes van a formar parte de cada grupo. Para ello, vamos a crear n grupos. Cada persona tendrá que programar una micro:bit.

En esta tarea vais a elegir un ID único para vuestro grupo (un número entre 0 y 255), y luego tendréis que configurar las radios de vuestras placas con este ID de grupo. Para ello se usa el bloque "radio establecer grupo" en el editor de bloques. Al elegir vuestro ID de grupo tenéis que lograr que sea un número único. 👁️¿Qué pasaría si dos grupos eligen el mismo número? ¿cómo podríamos asegurarnos de que esto no ocurre?

Usad la pizarra para apuntar el ID de grupo que habéis elegido y aseguraos de que es único.

2. Envío y recepción de mensajes

Podéis reutilizar los programas del apartado A. Broadcast para enviar y recibir mensajes dentro de vuestro grupo. Tendréis que actualizarlos para contar el número de mensajes enviados y recibidos, de manera que podáis estar seguros de que solo estáis recibiendo los mensajes enviados desde vuestro grupo.

Cada persona programa su micro:bit para enviar un número aleatorio del 0 al 9 al presionar el botón A. Las placas, además, cuando reciben un número por radio lo muestran durante 2 segundos. Al presionar el botón B muestran el número de mensajes recibidos. Y al presionar los dos botones A y B a la vez, muestran el número de mensajes enviados desde esa placa. Tras jugar a enviar mensajes desde todas las placas del grupo, comprobad que estáis recibiendo correctamente todos los mensajes del grupo y que no habéis recibido mensajes de otros grupos.

Preguntas finales

¿Sería sencillo que las placas micro:bits pudieran crear los grupos automáticamente? ¿Cómo escogerían el ID de grupo? ¿Cómo podrían asegurarse de que nadie más tiene ese número? ¿Sería útil utilizar broadcast? Debatidlo en grupo.

¿Podría una micro:bit formar parte de más de un grupo? ¿Cómo habría que programar la placa para lograrlo?

C. UNICAST

¿QUÉ HAREMOS?

La comunicación unicast, enviar mensajes a un único receptor, es la forma habitual de comunicación en Intenet. Por ejemplo, para ver una página web enviamos mensajes unicast a un servidor, que a su vez nos envía la página que hay que mostrar en el navegador.

En este capítulo vamos a enviar mensajes unicast a la placa micro:bit de otro compañero. Y en el proceso vamos a aprender ideas y conceptos fundamentales de las redes de ordenadores, incluyendo:

INTRODUCCIÓN

Este capítulo trata de la comunicación unicast. Así que, ¿qué es unicast?

Unicast: Transmisión de un mensaje a un único receptor.

Para transmitir mensajes de unos a otros, los ordenadores usan protocolos.

Protocolo: Un conjunto de reglas que establece cómo se envían mensajes a través de una red.

Es decir, que los protocolos definen la forma en que los ordenadores deberían enviar los mensajes y lo que deberían hacer cuando reciben un mensaje. En Internet, todos los ordenadores o dispositivos siguen el protocolo IP: Internet Protocol.

De acuerdo al protocolo IP, cada dispositivo recibe una dirección que debe ser única y que se llama dirección IP. Las direcciones IP se usan para implementar la comunicación unicast en Internet.

Dirección IP: Un texto único que identifica ordenadores que usan el protocolo IP para comunicarse en una red. Este texto se compone de cuatro números entre 0 y 255 y separados por puntos. Por ejemplo, 213.248.234.11 es una dirección IP.

Las placas micro:bit también tienen direcciones (pero son un poco diferentes). Y en prácticas anteriores ya hemos modificado parcialmente la dirección de nuestras placas al cambiar el ID de grupo de radio.

Cuando dos ordenadores se comunican, el emisor envía un paquete de datos al receptor.

Definición 3: Paquete de datos

Un paquete de datos es un conjunto de datos que se envía por una red. Este conjunto de datos se compone de una parte de mensaje real (por ejemplo, una imagen o un texto) y de una o más cabeceras. Una cabecera, o encabezado, contiene información necesaria definida por el protocolo, como por ejemplo, las direcciones IP origen y destino.

Cada protocolo añade diferentes tipos de cabeceras a los mensajes.

La figura anterior muestra que los datos junto a una cabecera forman un paquete de datos. En esta figura además de las direcciones origen y destino, la cabecera de ejemplo también incluye el tipo de mensaje. El tipo de mensaje le dice al receptor si está recibiendo, por ejemplo, un texto o una imagen. Si te acuerdas, en los capítulos anteriores programábamos nuestra placa para recibir un tipo específico de mensaje (texto o número). Si los paquetes contienen una cabecera con información del tipo de mensaje sería más fácil escribir el programa del receptor.

En cualquier caso, en esta práctica vas a crear paquetes de datos añadiendo una cabecera que contendrá tan solo las direcciones origen y destino. Y así vamos a lograr comunicación unicast entre micro:bits.

A PROGRaMAR

En esta práctica vamos a aprender a crear paquetes de datos que contengan una dirección origen y otra destino, de manera que podamos enviar mensajes unicast a otras micro:bits. Es decir, nuestras placas recibirán todos los mensajes, pero solamente leerán los que sean para nosotros. Es como cuando llega una carta al buzón de tu piso y puede que haya cartas para diferentes personas, pero solamente abres las tuyas.

Establece el ID de radio de grupo a 0, como hicimos en la práctica Broadcast.

2. Diseña tu cabecera

La micro:bit emisora tiene que añadir una cabecera a cada paquete antes de enviarlo. La cabecera incluirá:

dirección origen

dirección destino

Para crear las cabeceras vamos a trabajar con un string (texto) algo especial.

En primer lugar hay que elegir la dirección de cada placa. Podemos usar dos letras, como nuestras iniciales (por ejemplo, AG). Como tienen que ser únicas, las escribimos en la pizarra para que nadie se ponga la misma que tú. Por tanto, en la pizarra escribiríamos algo como "Alberto Gilsanz -> AG".

A continuación elige a qué persona de la clase vas a enviar un mensaje, y toma nota de su dirección. Para preparar la cabecera de cada mensaje a enviar hay que unir las direcciones origen y destino en un único texto. Para ello usaremos el bloque join (unir), de la categoría text (texto).

3. Crea el paquete y envíalo

Ha llegado el momento de crear el paquete. Como hemos visto antes el paquete se forma con la unión de las cabeceras y el mensaje. Así que tu paquete debe contener la siguiente información:

dirección origen + dirección destino + tu mensaje

Elige el texto que quieres enviar como tu mensaje. Por ejemplo "Hola amigo/a". 

Usa los bloques de texto para unir (join) tu mensaje a la cabecera.

Con esto tu micro:bit estaría lista para enviar paquetes unicast.

4. Recibir un paquete

Cuando la micro:bit recibe un paquete tiene que decidir si lo procesa o si lo ignora. Ten en cuenta que la micro:bit recibe un único texto, pero como conocemos el protocolo que estamos utilizando sabemos que:

El receptor utilizará esta información para decidir qué paquetes de los recibidos van efectivamente dirigidos a ella.

Divide el texto recibido en 3 variables: dirección origen, dirección destino y mensaje. Para ello puedes usar los bloques substring of (subcadena de) de la categoría texto.

Comprueba si la dirección destino es igual a la dirección que elegiste para tu placa. Si es así, esto significa que tu micro:bit es la destinataria correcta. Si tu micro:bit no es la destinataria, sé un buen ciudadano e ignora el mensaje. ¡Hay que ser buenos!

Preguntas finales

D. ¡PIEDRA PAPEL O TIJERA!

¿QUÉ HAREMOS?

¡Juguemos a Piedra, papel o tijera! 

Como sabes, es un juego de dos jugadores. Cada jugador, al mismo tiempo, forma con sus manos una de las opciones (piedra, papel o tijera). Se usan las siguientes reglas para decidir quién gana:

Si ambos jugadores escogen la misma forma, empatan.

La figura resume las reglas.

INTRODUCCIÓN

En este capítulo vamos a programar este juego con nuestras placas micro:bit. Y al hacerlo practicaremos:

Tarea 1: Empezamos con el juego base

Para familiarizarnos con el juego, vamos a programar el juego de forma sencilla, sin comunicación entre las placas

Usaremos el acelerómetro y la pantalla para crear un juego de piedra, papel y tijeras que puedas jugar con tus amigos

Fíjate en que el programa asigna un número a piedra, papel y tijera. Por ejemplo, piedra=1, papel=2, tijera=3.

Programa el código mostrado en la página de la actividad y descárgalo a tu micro:bit. Juega unas partidas con tu pareja. Tendréis que agitar las placas al mismo tiempo y luego decidir quién gana en base a las reglas descritas en la introducción.

El programa todavía no decide quien gana porque las placas no se comunican entre ellas. Lo decidís vosotros, como en el juego analógico...

Tarea 2: Enviamos la forma seleccionada por radio con unicast

Para jugar por radio usarás el botón A para seleccionar entre piedra, papel o tijera. Usarás el botón B para confirmar la selección y enviarla por radio. Al igual que en la tarea 1, se usará: piedra=1, papel=2, tijera=3.

Escribe un programa que haga lo siguiente:

Comprobad en pareja que podéis enviar y recibir correctamente.

Tarea 3: Rellenamos la tabla de reglas

Tu programa debe decidir quién gana cuando recibes un número desde la micro:bit de tu colega.

Para decidir quién gana, hay que comparar el número que tú escogiste con el número que has recibido por radio. La tabla de abajo puede ayudarte a decidir quién gana cada partida [^2]. Usando esta tabla puedes comparar Mi mano con Mano oponente. Por ejemplo, si los dos números significan piedra, es un empate y el resultado es una cara de sorpresa. Pero si Mi mano es tijera y Mano oponente es piedra, el resultado es una cara triste. Y si fuera al contrario el resultado sería una cara alegre. En base a las reglas del juego, termina de rellenar la tabla.

Tarea 4: El juego completo

Una vez rellena la tabla hay que decir cómo programar estas reglas en tu código. El programa deberá:

A continuación se muestra una plantilla que puede ayudarte a programar la tabla de reglas utilizando bloques si del menú Lógica en el editor de bloques de JavaScript. El objetivo de la plantilla es darte tan solo una idea de la estructura del programa.

Como verás, en la plantilla se usan dos variables: seleccionado y recibido. 

Seleccionado se establece a Verdadero cuando haces la selección de mano al presionar el botón B. Por su parte, recibido se pone a Verdadero cuando recibes la mano de tu oponente. En el bloque Por siempre, verás que solo se comprueba la jugada cuando ambas variables son Verdadero. Una vez entras en el bloque para jugar la partida, las variables se ponen a Falso para la siguiente ronda.

Una vez programadas las placas, jugad en pareja unas cuantas partidas a ver quién gana más.

Preguntas finales

Fuente: https://programamos.es/microbit/

Gracias a Jesús Moreno por su libro "Redes con Microbit"