SA2 · Actividad 2: Conexión dispositivo a dispositivos
Materia: Computación y Robótica · 2º ESO
Saber básico: B.2. Conexión dispositivo a dispositivos
Hardware: BBC micro:bit (por parejas) y simulador de MakeCode
En la actividad anterior aprendimos a leer sensores: la micro:bit medía la luz, la temperatura o si pulsábamos un botón. Pero un sensor que mide y no se lo cuenta a nadie sirve de poco. Hoy damos el paso que convierte un aparato en una «cosa» del Internet de las Cosas: hacer que dos dispositivos hablen entre ellos.
📖 TEORÍA
1. ¿Qué significa «conexión dispositivo a dispositivo»?
Dos aparatos están conectados dispositivo a dispositivo (en inglés, device-to-device o D2D) cuando se envían datos directamente, sin pasar por Internet ni por un servidor.
Lo usas a diario sin darte cuenta:
- El mando de la tele envía una orden directamente al televisor.
- Los auriculares inalámbricos reciben el sonido directamente del móvil.
- El mando del garaje le dice a la puerta «ábrete».
- Un sensor de puerta de una alarma avisa a la central de que alguien ha entrado.
Ninguno de ellos necesita wifi ni Internet. Por eso siguen funcionando aunque «se caiga la red».
🔁 Repaso rápido (para quien no hizo CyR en 1º)
Un sistema IoT tiene tres piezas: sensores que miden, un microcontrolador que decide (nuestra micro:bit) y una forma de comunicarse para enviar lo que ha medido.
Esa comunicación puede ser de dos tipos:
- Por cable: USB, cable de red…
- Inalámbrica: radio, Bluetooth, wifi…
Hoy trabajamos con comunicación inalámbrica por radio.
2. Las piezas de toda comunicación
Da igual que hablemos de dos personas o de dos micro:bits. Siempre aparecen los mismos elementos:
| Elemento | Qué es | En la micro:bit |
|---|---|---|
| Emisor | Quien envía el mensaje | La micro:bit que ejecuta radio enviar… |
| Receptor | Quien lo recibe | La micro:bit que ejecuta al recibir por radio… |
| Mensaje | La información que viaja | Un número, un texto corto o una pareja nombre-valor |
| Canal | El «camino» por el que viaja | Ondas de radio a 2,4 GHz |
| Grupo | Quién escucha y quién no | Un número del 0 al 255: radio establecer grupo |
| Protocolo | Las reglas que ambos acuerdan | Lo decidimos nosotros: «1 significa SÍ, 2 significa NO» |
La micro:bit puede ser emisora y receptora a la vez. Una misma placa puede enviar cuando pulsas un botón y escuchar el resto del tiempo.
3. La radio de la micro:bit
La micro:bit lleva dentro una pequeña radio que emite en la banda de 2,4 GHz, la misma que usan el wifi y el Bluetooth. Algunos datos importantes:
- Alcance: unas decenas de metros en campo abierto. En clase, con paredes y cuerpos en medio, bastante menos.
- Mensajes cortos: un número, o un texto de hasta 19 caracteres. Con
enviar valor, el nombre puede tener como máximo 8 caracteres. - Difusión (broadcast): la micro:bit no envía el mensaje «a alguien». Lo grita al aire y todas las micro:bits del mismo grupo lo reciben.
- No se escucha a sí misma: la micro:bit que envía un mensaje no lo recibe.
Ese tercer punto es muy importante en el aula. Si 24 personas usáis el grupo 1, todas las micro:bits recibirán los mensajes de todas. Será un caos. La solución: cada pareja elige un número de grupo diferente.
4. Tres formas de organizar los dispositivos
Cuando hay varios dispositivos, podemos conectarlos de distintas maneras. A esa forma de organizarlos se le llama topología.
| Topología | Cómo funciona | Ejemplo real |
|---|---|---|
| Punto a punto | Dos dispositivos hablan solo entre ellos | Mando del garaje → puerta |
| Difusión | Uno envía y muchos escuchan | Un emisor de avisos que enciende varias luces a la vez |
| Estrella (con nodo central) | Muchos sensores envían a una sola estación que lo recoge todo | Sensores de humedad repartidos por un invernadero que envían a una central |
[IMAGEN: esquema de las tres topologías con micro:bits dibujadas como cajitas y flechas]
5. Los bloques de radio en MakeCode
Están en la categoría Radio (color rosa). Siempre seguimos tres pasos:
- Configurar:
radio establecer grupodentro deal iniciar. - Enviar:
radio enviar número,radio enviar cadenaoradio enviar valor. - Recibir: el evento
al recibir por radio, que se ejecuta solo cada vez que llega un mensaje.
Fíjate en que recibir es un evento, igual que al presionar el botón A. No tienes que estar preguntando todo el rato «¿ha llegado algo?». Cuando llega, el bloque se dispara.
Ejemplo: el timbre por radio
Al pulsar A, una micro:bit envía el número 1. La otra, al recibirlo, muestra un corazón un instante. El mismo programa va en las dos placas.
| Bloques (MakeCode) | Python (MakeCode) |
|---|---|
| al iniciar radio establecer grupo (23) al presionar el botón A radio enviar número (1) al recibir por radio (receivedNumber) si receivedNumber = 1 entonces mostrar ícono (♥) pausa (500) borrar la pantalla | radio.set_group(23) def on_button_pressed_a(): radio.send_number(1) input.on_button_pressed(Button.A, on_button_pressed_a) def on_received_number(receivedNumber): if receivedNumber == 1: basic.show_icon(IconNames.HEART) basic.pause(500) basic.clear_screen() radio.on_received_number(on_received_number) |
[CAPTURA: el programa en bloques y el simulador mostrando dos micro:bits]
En el simulador, en cuanto usas un bloque de radio, aparece una segunda micro:bit. Las dos ejecutan el mismo programa. Pulsa A en una y mira la otra.
Enviar datos de un sensor: enviar valor
Si queremos enviar varias medidas distintas, necesitamos saber cuál es cuál. Para eso está radio enviar valor, que manda una etiqueta y un número: por ejemplo "temp" = 21 o "luz" = 180.
| Bloques (MakeCode) | Python (MakeCode) |
|---|---|
| al presionar el botón B radio enviar valor “temp” = temperatura (°C) al recibir por radio (name, value) si name = “temp” entonces mostrar número (value) | def on_button_pressed_b(): radio.send_value(“temp”, input.temperature()) input.on_button_pressed(Button.B, on_button_pressed_b) def on_received_value(name, value): if name == “temp”: basic.show_number(value) radio.on_received_value(on_received_value) |
Esto ya es telemetría: medir algo en un sitio y leerlo en otro. Es exactamente lo que hace un satélite cuando envía sus datos a la estación de tierra.
6. El protocolo: ponerse de acuerdo antes de hablar
La radio solo transporta números y textos. El significado lo ponemos nosotros. Si el emisor envía un 2 pensando «alarma» y el receptor lo interpreta como «todo bien», el sistema falla aunque la radio funcione perfectamente.
Por eso, antes de programar, se escribe una tabla de protocolo:
| Mensaje | Quién lo envía | Qué significa | Qué hace el receptor |
|---|---|---|---|
| número 1 | Emisor (botón A) | Llamada | Muestra un icono 500 ms |
| “temp” = valor | Emisor (botón B) | Temperatura medida | Muestra el número |
| cadena “OK” | Receptor | He recibido tu mensaje | El emisor muestra ✔ |
Ese último mensaje, el «OK», tiene nombre propio: confirmación (en inglés, acknowledgement o ACK). Muchos sistemas reales lo usan. Si el emisor no recibe el OK, sabe que su mensaje se ha perdido y puede repetirlo.
7. Lectura técnica: la actriz que inventó un trozo de tu wifi
Durante la Segunda Guerra Mundial existía un problema: los torpedos guiados por radio se podían bloquear. Bastaba con que el enemigo emitiera ruido en la misma frecuencia.
La actriz Hedy Lamarr y el compositor George Antheil propusieron una idea: que emisor y receptor saltaran de frecuencia a la vez, siguiendo una secuencia que solo ellos conocían. Así era casi imposible interferir la señal. La patentaron en 1942.
Aquella idea, el salto de frecuencia, es una de las bases del Bluetooth que usan hoy tus auriculares. Hedy Lamarr nació un 9 de noviembre, y por eso en varios países ese día se celebra el Día del Inventor.
Piensa: ¿qué tienen en común el problema de Hedy Lamarr y el de 24 micro:bits usando el mismo grupo de radio?
8. Resumen para la libreta
- Conexión dispositivo a dispositivo: dos aparatos se comunican directamente, sin Internet.
- Toda comunicación tiene emisor, receptor, mensaje, canal y protocolo.
- La micro:bit envía por radio a 2,4 GHz y solo la escuchan las placas de su mismo grupo.
- Recibir es un evento:
al recibir por radiose ejecuta solo cuando llega un mensaje. - La radio transporta números y textos; el significado lo decide el protocolo.
- Un mensaje de confirmación (ACK) permite saber si el otro lo ha recibido.
9. Vocabulario
| Término | En inglés | Significado |
|---|---|---|
| Emisor / receptor | transmitter / receiver | Quien envía / quien recibe |
| Difusión | broadcast | Enviar un mensaje a todos los que escuchan |
| Grupo de radio | radio group | Número que decide qué placas se escuchan entre sí |
| Protocolo | protocol | Reglas que acuerdan emisor y receptor |
| Confirmación | acknowledgement (ACK) | Mensaje que dice «lo he recibido» |
| Telemetría | telemetry | Medir en un sitio y enviar los datos a otro |
| Topología | topology | Forma en que se conectan los dispositivos |
| Interferencia | interference | Señal que estropea o se mezcla con la nuestra |
10. Comprueba lo que sabes
- Tu micro:bit envía un número pero la de tu pareja no lo recibe. Di dos posibles causas.
- ¿Por qué un mando de garaje sigue funcionando aunque no haya wifi en casa?
- Has programado que el número 3 encienda una alarma. ¿Qué pasa si la pareja de al lado usa tu mismo grupo y envía un 3 para otra cosa?
- ¿Para qué sirve un mensaje de confirmación (ACK)?
- Un invernadero tiene diez sensores de humedad y una pantalla central. ¿Qué topología usarías?
🛠️ TAREA MOODLE
Estación de tierra: telemetría entre dos micro:bits
Vais a construir un pequeño sistema de telemetría. Una micro:bit hace de sonda: mide y envía. La otra hace de estación de tierra: recibe y muestra. Se trabaja por parejas, pero cada persona entrega su propio enlace.
Si tenéis micro:bits físicas, descargad el programa en las dos y probadlo de verdad. Si no, todo funciona en el simulador: las dos placas que aparecen son vuestra sonda y vuestra estación.
PARTE 1: Diseña el protocolo (3 puntos)
Antes de programar, poneos de acuerdo. Copia y completa esta tabla en el cuadro de texto de la tarea:
| Mensaje | Quién lo envía y cuándo | Qué significa | Qué hace quien lo recibe |
|---|---|---|---|
| “temp” = … | … | … | … |
| “luz” = … | … | … | … |
| (el que añadas tú) | … | … | … |
Responde además:
- ¿Qué número de grupo habéis elegido y por qué no conviene usar el 0 o el 1?
- ¿Qué topología tiene vuestro sistema? ¿Y si toda la clase enviara sus datos a una única estación de tierra?
PARTE 2: Programa en MakeCode (7 puntos)
Crea un proyecto llamado Radio_TuNombre. El mismo programa irá en las dos placas.
🟢 Nivel básico (obligatorio)
- Al iniciar, el programa fija vuestro número de grupo.
- Al pulsar A, la micro:bit envía la temperatura con
enviar valor "temp". - Al pulsar B, envía el nivel de luz con
enviar valor "luz". - Al recibir un valor, la otra micro:bit muestra una letra que indique qué ha llegado (T o L) y después el número.
🟡 Nivel medio
- La estación ya no muestra solo el número: interpreta el dato. Por ejemplo, si llega
"luz"menor que 100, dibuja una luna conmostrar LEDs; si no, un sol. Si la temperatura supera los 25 °C, muestra un ! como alerta. - Al pulsar A+B, la sonda envía las dos medidas seguidas.
🔴 Nivel experto (elige uno)
- Confirmación (ACK): cada vez que la estación recibe un dato, responde con
enviar cadena "OK". La sonda, al recibir el OK, muestra ✔ (mostrar ícono→ «Sí»). Así sabes que tu mensaje ha llegado. - Telemetría automática: al agitar la micro:bit se activa o desactiva un «modo sonda» que envía la temperatura cada 2 segundos sin pulsar nada (necesitarás una variable y un bucle
para siempre). - Frío-caliente: usa el bloque
paquete recibido (fuerza de la señal)para que la estación muestre una barra más grande cuanto más cerca esté la sonda. Solo tiene sentido con placas físicas.
Qué entregas:
- La tabla de protocolo y las dos respuestas (Parte 1).
- El enlace público de tu proyecto de MakeCode (Compartir → Publicar proyecto → copiar enlace).
- Una captura del simulador con las dos micro:bits, o una foto de las placas físicas funcionando.
- Indica qué nivel has alcanzado.
Si no funciona…
| Lo que pasa | Causa probable | Cómo arreglarlo |
|---|---|---|
| La otra placa no recibe nada | Grupos distintos en cada placa | Comprueba que las dos tienen el mismo número en radio establecer grupo |
| Recibo mensajes que no he enviado yo | Otra pareja usa vuestro grupo | Cambiad a un número menos habitual (por ejemplo, 137) |
| Envío un valor y no pasa nada | Envías con enviar valor pero recibes con al recibir número | El tipo de bloque de recibir tiene que coincidir con el de enviar |
El si name = "temp" nunca se cumple | La etiqueta no coincide: «Temp», «temp » con espacio, «temperatura»… | Copia la etiqueta exactamente igual en los dos sitios |
| Mi etiqueta llega cortada | Más de 8 caracteres | Usa nombres cortos: «temp», «luz» |
| Solo veo una micro:bit en el simulador | Aún no hay ningún bloque de radio | Añade al menos un bloque de la categoría Radio |
En Python: IndentationError | Las líneas dentro de def o if no tienen sangría | Deja 4 espacios al principio de esas líneas |
En Python: if name = "temp": da error | Un solo = asigna; para comparar se usan dos | Escribe if name == "temp": |
📊 Rúbrica de evaluación
| Criterio | Excelente | En proceso | No logrado |
|---|---|---|---|
| Protocolo (2 p) | Tabla completa, coherente con el programa, con un mensaje propio | Tabla incompleta o que no coincide con lo programado | No hay tabla |
| Grupo y topología (1 p) | Justifica el grupo y describe bien la topología y el caso de toda la clase | Responde sin justificar | No responde |
| Envío y recepción (3 p) | Envía temperatura y luz con etiquetas y la otra placa distingue cuál es cuál | Envía y recibe, pero no distingue los datos o falla uno | No hay comunicación entre placas |
| Interpretación del dato (2 p) | Nivel medio completo: la estación toma decisiones según el valor recibido | Una de las dos decisiones funciona | Solo muestra números |
| Reto experto (1 p) | Funciona como se describe | Intentado, funciona a medias | No intentado |
| Entrega (1 p) | Enlace público operativo y captura de las dos placas | Falta la captura o el enlace no abre | No adjunta enlace |
Total: 10 puntos
Siguiente paso: en la próxima actividad (B.3) cambiaremos la radio de la micro:bit por Bluetooth Low Energy para que la micro:bit hable con un móvil.
