SA2 · Actividad 2: Conexión de dispositivo a la nube
El reto. Vamos a montar una red IoT de verdad en el aula. Una micro:bit hará de nodo sensor en un rincón de la clase y mandará por radio su temperatura y su luz. Otra micro:bit, conectada al ordenador, hará de pasarela. Juntando los datos de todas las parejas en una hoja compartida, la nube de la clase, responderemos a una pregunta: ¿qué zona del aula cambia más a lo largo de una sesión?
Repaso rápido
- En la actividad anterior (B.1) combinaste varios sensores y operadores lógicos (Y / O) para tomar decisiones dentro de la propia placa.
- Si cursaste CyR en 2º, ya conectaste dos micro:bits entre sí por radio. Hoy vamos un paso más allá: el dato no se queda entre dos placas, sino que viaja hasta un sitio donde se guarda, se compara con otros y se puede consultar desde cualquier lugar.
1. Un sensor solo no es IoT
Una micro:bit que mide la temperatura y la muestra en sus LED es un termómetro. Útil, pero el dato se pierde en cuanto deja de mirarlo alguien. Hablamos de Internet de las Cosas cuando ese dato sale del dispositivo, llega a un servidor y allí se guarda, se procesa y se puede usar: dibujar una gráfica, comparar con ayer o lanzar una alerta al móvil.
Ese servidor es lo que llamamos la nube. No hay nada mágico en ella: son ordenadores de otra empresa o institución, en un centro de datos, a los que te conectas por Internet.
2. El camino del dato: cuatro eslabones
Casi todos los sistemas IoT siguen la misma cadena:
| 1. Dispositivo sensor + microcontrolador | → | 2. Conexión local radio, BLE, Zigbee, LoRa, cable | → | 3. Pasarela (gateway) traduce y reenvía a Internet | → | 4. Nube guarda, procesa, visualiza, avisa |
¿Por qué hace falta una pasarela? Porque muchos sensores no pueden o no deben conectarse directamente a Internet:
- Energía: el WiFi gasta mucho. Un sensor con pilas que tiene que durar meses en mitad de Sierra Bermeja usa una radio de bajo consumo y deja que otro equipo, enchufado, haga el trabajo pesado.
- Alcance: el WiFi llega a pocas decenas de metros. Otras radios llegan más lejos o atraviesan mejor las paredes.
- Coste y simplicidad: una pasarela puede atender a decenas de sensores baratos.
Nuestra micro:bit no tiene WiFi, así que el montaje de hoy es exactamente esta arquitectura: nodo sensor → radio → micro:bit pasarela → USB → ordenador → nube.
3. Ejemplos reales
- Contadores de luz inteligentes: el contador de casa envía el consumo a un concentrador del barrio, y este lo manda a los servidores de la distribuidora. Por eso la factura puede mostrar el consumo hora a hora.
- Estaciones meteorológicas y sensores de incendio: los sensores de campo transmiten por radio de largo alcance a una antena que sí tiene conexión a Internet.
- Satélites tipo CanSat (como BermejaSat): el satélite no se conecta a Internet. Envía telemetría por radio a una estación de tierra, que es su pasarela, y desde ahí se guardan y se publican los datos. Es el mismo esquema que vas a montar hoy, pero con el satélite cayendo en paracaídas.
4. Qué hace la nube con los datos
| Función | Ejemplo |
|---|---|
| Almacenar | Guardar cada lectura con su fecha y hora durante meses. |
| Juntar | Reunir los datos de muchos sensores de sitios distintos en un solo lugar. |
| Procesar | Calcular medias, máximos o detectar valores raros. |
| Visualizar | Paneles con gráficas consultables desde el móvil. |
| Actuar | Enviar una alerta o una orden de vuelta a un dispositivo (encender un riego, por ejemplo). |
Fíjate en la segunda fila: juntar. Un sensor solo te dice qué pasa en un punto. Muchos sensores en la nube te permiten comparar. Eso es lo que haremos con la hoja compartida de la clase.
5. El dato necesita contexto
Un número suelto, como 24, no sirve de nada. Para que un dato sea útil en la nube necesita acompañantes:
- Qué es: un nombre (
temp,luz). - Cuándo: una marca de tiempo (timestamp).
- Dónde y quién: qué sensor, en qué lugar, con qué placa.
Esa información sobre el dato se llama metadatos. Los trabajaremos a fondo en el bloque de datos masivos, pero hoy ya vas a tener que escribirlos.
En nuestra práctica la pasarela enviará al ordenador líneas como temp:24. El ordenador añadirá la hora y podremos exportar todo como CSV, un formato de texto con columnas separadas por comas que entiende cualquier hoja de cálculo.
6. ¿Quién más está escuchando?
La radio de la micro:bit usa grupos (del 0 al 255). Solo recibes los mensajes de tu grupo. Parece una protección, pero no lo es: cualquiera que ponga su placa en tu mismo número de grupo puede leer tus datos o, peor, enviar datos falsos que tu pasarela aceptará como buenos. En los sistemas IoT reales los datos van cifrados y cada dispositivo tiene que identificarse. Lo vas a comprobar en la práctica.
Lectura técnica: cuando la nube se apaga
Muchos aparatos «inteligentes» no funcionan solos: dependen de los servidores del fabricante. Si la empresa cierra el servicio, el aparato puede quedarse sin funciones aunque esté en perfecto estado. Ya ha ocurrido con algunos sistemas de domótica cuyos controladores dejaron de funcionar al apagarse sus servidores. Por eso, al diseñar un sistema IoT hay que decidir qué debe seguir funcionando sin Internet. Por ejemplo, una alarma de incendio debería sonar aunque se caiga la conexión, y la nube solo debería servir para avisar y para guardar el histórico.
Vocabulario
| Término | En inglés | Qué significa |
|---|---|---|
| Nodo sensor | sensor node | Dispositivo que mide y transmite. |
| Pasarela | gateway | Equipo que recibe datos de los nodos y los reenvía a Internet. |
| Nube | cloud | Servidores remotos donde se guardan y procesan los datos. |
| Telemetría | telemetry | Medidas enviadas a distancia de forma automática. |
| Puerto serie | serial port | Canal por el que la placa envía texto al ordenador a través del USB. |
| Marca de tiempo | timestamp | Fecha y hora asociadas a cada lectura. |
| Metadatos | metadata | Datos que describen a otros datos: qué, cuándo, dónde, quién. |
| Suplantación | spoofing | Enviar datos haciéndose pasar por otro dispositivo. |
Para pensar
En la práctica vas a subir a una hoja compartida la temperatura y la luz de un rincón del aula, con la hora exacta. Parece inofensivo. Pero si el sensor estuviera en tu habitación, ¿qué podría deducir alguien de esos datos? (pista: piensa en cuándo se enciende la luz y cuándo sube la temperatura). ¿Quién debería poder ver esa hoja, y durante cuánto tiempo deberían guardarse los datos?
Comprueba lo que sabes
- Ordena los eslabones: nube, nodo sensor, pasarela, conexión local.
- Da dos razones por las que un sensor de campo no se conecta directamente por WiFi.
- En nuestro montaje, ¿qué hace de pasarela y por dónde entran los datos al ordenador?
- ¿Por qué el número de grupo de radio no protege tus datos?
- La pasarela recibe
temp:31. Escribe tres metadatos que harían falta para que ese dato sea útil en la nube.
Tarea Moodle · SA2.2 – Práctica IoT: mi primera red sensor → pasarela → nube
Organización: por parejas, con 2 micro:bits por pareja: una será el nodo sensor y otra la pasarela. Si no hay placas para todos, se puede hacer completa en el simulador de MakeCode (ver paso 3).
Antes de empezar: el profesor os asignará un número de grupo de radio (entre 1 y 255) y una ubicación en el aula (ventana, puerta, junto al radiador, fondo…). Apuntadlos: los vais a necesitar en el código y en los metadatos.
Paso 1. Programa del nodo sensor
Crea en MakeCode un proyecto llamado IoT_Nodo_Pareja. Cambia a la vista Python (arriba, en el selector Bloques / Python), borra lo que haya, pega este código y vuelve a Bloques. Verás que MakeCode lo convierte en bloques: es el mismo programa en dos lenguajes.
# NODO SENSOR: mide y envía por radio cada 2 segundos
radio.set_group(23) # CAMBIA 23 por el grupo de vuestra pareja
def on_forever():
t = input.temperature() # 1º: leer los sensores
l = input.light_level() # (antes de encender LEDs: la luz se mide con la matriz)
radio.send_value("temp", t) # 2º: enviar cada dato con su nombre
radio.send_value("luz", l)
led.plot(2, 2) # 3º: parpadeo para saber que ha enviado
basic.pause(100)
led.unplot(2, 2)
basic.pause(1900) # en total, una lectura cada 2 s
basic.forever(on_forever)
[CAPTURA: el programa del nodo en vista de bloques]
Paso 2. Programa de la pasarela
Crea otro proyecto llamado IoT_Pasarela_Pareja con este código. La pasarela no mide nada: escucha la radio y reenvía al ordenador por el puerto serie.
# PASARELA: recibe por radio y reenvía por USB (puerto serie)
radio.set_group(23) # EL MISMO grupo que el nodo
def on_received_value(name, value):
serial.write_value(name, value) # envía al PC una línea "nombre:valor"
led.toggle(0, 0) # el LED de la esquina cambia con cada dato
radio.on_received_value(on_received_value)
[CAPTURA: el programa de la pasarela en vista de bloques]
Paso 3. Prueba en el simulador
Antes de tocar las placas, prueba la idea. En el proyecto de la pasarela, añade temporalmente el código del nodo dentro de un evento al presionar el botón A (que envíe un valor de prueba). Al usar bloques de radio, el simulador muestra dos micro:bits que se comunican entre sí. Debajo del simulador aparecerá el botón Mostrar datos Simulador: ahí verás llegar los valores.
Si no tenéis placas, haced toda la práctica así: en el simulador puedes cambiar la temperatura y la luz con los controles de la placa virtual.
[CAPTURA: simulador con dos placas y la ventana de datos]
Paso 4. Al mundo real
- Descarga
IoT_Nodo_Parejaa la primera micro:bit. Ponle el portapilas y llévala a vuestra ubicación del aula. - Conecta la segunda micro:bit al ordenador por USB. Abre
IoT_Pasarela_Parejaen Chrome o Edge, pulsa los tres puntos junto a Descargar → Conectar dispositivo, sigue los pasos y descarga. - Pulsa Mostrar datos Dispositivo. Deberían aparecer dos gráficas:
tempyluz.
[CAPTURA: las gráficas en directo en el visor de datos de MakeCode]
Paso 5. El experimento
- Dejad el sistema registrando al menos 10 minutos sin tocar el nodo.
- Después provocad dos cambios y anotad la hora de cada uno: tapar el nodo con la mano, acercarle una linterna, calentarlo entre las manos, llevarlo junto a la ventana…
- En el visor de datos, pulsa el icono de descarga para exportar el CSV. Ábrelo con la hoja de cálculo para comprobar que tiene columnas de tiempo, temp y luz.
Paso 6. Subid los datos a la nube de la clase
El profesor ha compartido una hoja de cálculo con vuestra cuenta @g.educaand.es. Cada pareja tiene una pestaña. Pegad allí vuestros datos y rellenad arriba los metadatos:
- Pareja (iniciales, sin nombres completos)
- Ubicación del nodo en el aula
- Fecha y hora de inicio
- Grupo de radio usado
- Cambios provocados y a qué hora
Ahora estáis haciendo a mano lo que una pasarela con WiFi haría sola: llevar los datos al lugar donde se juntan con los del resto.
[CAPTURA: vuestra pestaña en la hoja compartida, con metadatos y datos]
Ahora tú
Básico. Añade una tercera magnitud al nodo, por ejemplo el nivel de sonido (input.sound_level(), solo en micro:bit V2) o la aceleración en un eje. Comprueba que aparece una nueva gráfica en el visor.
Medio. Haz que la pasarela, además de reenviar, actúe: si recibe una temperatura por encima de un umbral, que muestre un icono de alerta y envíe también serial.write_value("alerta", 1). Así ya tienes un sistema que procesa los datos, no solo los transporta.
Experto: auditoría de seguridad. Con permiso de otra pareja, poned una tercera placa en su grupo de radio y enviad un temp falso (por ejemplo, 99). ¿Lo acepta su pasarela? Después proponed y programad una defensa sencilla. Por ejemplo, el nodo envía también un código acordado (radio.send_value("clave", 4721)) y la pasarela solo reenvía si ha recibido antes la clave correcta. Explicad por qué esta defensa sigue siendo débil: ¿qué pasa si alguien escucha la radio?
Si no funciona…
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| La pasarela no recibe nada (su LED no parpadea) | Grupos de radio distintos, o el nodo sin pilas | Comprueba que set_group tiene el mismo número en los dos programas. Mira si el LED central del nodo parpadea. |
| Recibes datos que no son tuyos | Otra pareja usa tu grupo | Avisa al profesor. Y apúntalo: acabas de ver el problema de seguridad del apartado 6. |
| No aparece «Conectar dispositivo» o falla al emparejar | Navegador sin WebUSB (Firefox) o permisos del sistema | Usa Chrome, Chromium o Edge. Desconecta y reconecta el cable. Si sigue fallando, avisa al profesor. |
| No aparece el botón «Mostrar datos Dispositivo» | La placa no está emparejada o no ha llegado ningún dato aún | Empareja otra vez y espera unos segundos con el nodo encendido. |
| La luz da siempre 0 o valores raros | La luz se mide con la propia matriz de LED. Si están encendidos al medir, la lectura se estropea. La primera lectura también puede salir 0. | Lee los sensores antes de encender LEDs, como en el código del paso 1, y descarta la primera lectura. |
| La temperatura sale 2-3 °C más alta que el termómetro del aula | El sensor está dentro del procesador, que se calienta al trabajar | No es un fallo de tu código. Coméntalo en el análisis: es una limitación del sensor. |
Entrega
- Enlaces públicos de MakeCode de los dos programas (nodo y pasarela). Si hiciste un reto de «Ahora tú», el enlace de esa versión.
- Archivo CSV exportado y una captura de las gráficas.
- Análisis (unas líneas por pregunta):
- Señala en la gráfica los dos cambios que provocasteis. ¿Se ven claramente? ¿Cuánto tardó el sensor en reaccionar?
- Compara vuestros datos con los de otra ubicación en la hoja compartida. ¿Qué zona cambió más? ¿La diferencia es real o podría deberse a la limitación del sensor de temperatura?
- Si el ordenador que hace de pasarela se apaga durante una hora, ¿qué pasa con los datos de esa hora? Propón una solución.
Rúbrica de evaluación
| Criterio | Excelente (100%) | En proceso (50%) | No logrado (0%) |
|---|---|---|---|
| Nodo sensor (2 pts) | Lee y envía al menos dos magnitudes con nombre, en su grupo, a intervalo regular. | Envía una sola magnitud, o sin nombre o intervalo claro. | No envía datos. |
| Pasarela (2 pts) | Recibe por radio y reenvía por serie todas las magnitudes con su nombre. | Recibe pero reenvía de forma incompleta o sin nombre. | No hay pasarela funcional. |
| Registro de datos (2 pts) | CSV de al menos 10 minutos y captura de gráficas con los cambios visibles. | Registro corto o falta el CSV o la captura. | Sin registro. |
| Nube y metadatos (1 pt) | Datos en la hoja compartida con todos los metadatos y sin datos personales. | Datos subidos con metadatos incompletos. | No subidos. |
| Análisis (3 pts) | Responde a las tres preguntas apoyándose en los datos y considera las limitaciones del sensor. | Respuestas genéricas o sin referencia a los datos. | No responde. |
