Antes de...
Justificación pedagógica
Esta actividad busca que el alumnado utilice el lenguaje algebraico para modelizar y resolver problemas técnicos de seguridad ambiental.
- Qué explicar. El docente explicará la resolución de problemas mediante ecuaciones de primer grado y el uso de variables para representar estados y automatizar respuestas en un sistema físico. Usando la expresión de (9x-90)/8=Ángulo del servo
- Qué hacer. El alumnado diseñará un sistema de evacuación automática que controle una compuerta mediante un servo. Deberán calcular los valores algebraicos necesarios para programar tres modos de apertura (0º, 45º y 90º) en función del nivel de agua detectado. Para lograrlo, deberán plantear y resolver ecuaciones de primer grado que relacionen el nivel de agua detectado (la variable x) con el ángulo de giro del motor
- Vinculación curricular. Se vincula con los saberes de modelización de situaciones de la vida cotidiana usando el lenguaje algebraico (D.2.3.1), la resolución de ecuaciones lineales (D.4.3.3) y el uso de algoritmos para la resolución eficaz de problemas (D.6.4.2).
- Vínculo narrativo. Para proteger la base ante futuras inundaciones, debemos crear un mecanismo de prevención infalible. El alumnado desarrollará un sistema de evacuación automatizado que permita expulsar el agua de forma eficaz, minimizando los daños estructurales mediante el cálculo preciso de los protocolos de apertura.
Objetivo
El objetivo principal es usar el lenguaje algebraico para modelizar un sistema de evacuación automático, garantizando la seguridad de la base submarina ante el riesgo de agua.
Para lograrlo, cada estudiante calculará mediante ecuaciones los valores necesarios para accionar un servo, configurando tres ángulos de apertura lógica en función del nivel de inundación detectado.
Finalmente, mediante bloques de código y algoritmos, configurarán la respuesta mecánica de la compuerta, logrando una prevención infalible que proteja la integridad de la instalación.
Conocimientos previos Micro:bit y MakeCode
En esta sección encontramos todos los conocimientos necesarios para poder trabajar con Micro:bit y MakeCode:
- Presentación sobre el entorno Makecode y la placa Micro:bit.
- Vídeo cobre el funcionamiento y primeros pasos con la placa Micro:bit.
- Prácticas para familiarizarnos con entorno Makecode y la placa Micro:bit..
Para ver a pantalla completa clicamos en presentación.
Vídeo que nos muestra el funcionamiento y primeros pasos con Micro:bit:
Para ver a pantalla completa clicamos en presentación.
Ya estamos listos para conocer el Kit IoT.
Conocimientos previos de Kit IoT Smart Science
Ahora veremos lo que necesitamos saber de Smart Science IoT:
- Presentación IoT Smart Science.
- Vídeo sobre el funcionamiento de los componentes del kit.
- Presentación con diferentes prácticas que nos ayudarán a entender las aplicaciones de este Kit.
¿Qué necesitas preparar?
Antes de la sesión de acompañamiento es conveniente:
- Mostrar al alumnado el kit Smart Science IoT y Micro:bit, su funcionalidad y uso. De este modo, comprenderán con menor dificultad lo que deben de hacer en la actividad.
- Mostrar al alumnado la interfaz de MakeCode. De esta forma, en el acompañamiento podremos centrarnos en cómo programar por bloques y la sesión será más ágil.
Además, necesitarás este material:
- Un portátil por cada dos alumnos/as (máximo 3) con conexión a internet para acceder a la plataforma MakeCode.
- Documentos:
- Documento de ayuda fórmula del servomotor
- Diario de aprendizaje
Desarrollo de la actividad
- Desarrollamos los pasos que deberá seguir el alumnado para poder realizar con éxito la misión.
- Acceso a MakeCode : A través de la web MakeCode. Para descargar la aplicación y trabajar offline, habrá que ir a Descargar MakeCode y elegir el sistema operativo de nuestro dispositivo.
Paso 1. Añadir la extensión Environment-and-Science-IoT
Para poder programar la pantalla OLED en MakeCode necesitamos añadir una extensión especial.
- Tenemos que abrir nuestro proyecto o crearlo en Microsoft MakeCode for micro
- Una vez dentro del proyecto, haz clic en el botón “Extensiones” (parte inferior del menú de bloques o desde la rueda dentada ⚙).
- Dentro del buscador de extensiones, escribe
"Environment-and-Science-IoT" y haz clic sobre la extensión para que se instale directamente.
- Cuando añadimos la extensión, aparece una nueva opción en el menú de Categorías relacionada con sensores ambientales e IoT.
Dentro de esta categoría encontraremos los bloques para trabajar con la pantalla OLED, como por ejemplo: - Inicializar pantalla OLED
- Mostrar texto
- Mostrar número
- Limpiar pantalla
- Mostrar en posición X, Y
De esta manera, ya podremos programar y mostrar información en la pantalla OLED desde MakeCode.
Paso 2. Inicialización de la pantalla
Al arrancar el programa, debemos preparar la pequeña pantalla OLED para que el hardware esté listo para mostrar la información del entorno desde el primer momento.
- Preparación del hardware. Mediante el bloque "al iniciar" de la categoría Básico (color azul), se arrastra el bloque "initialize OLED with width 128 height 64" de la categoría OLED para enviar la orden física a la placa que enciende y configura las dimensiones de la matriz de píxeles.

Paso 3. Lectura del sensor y visualización de datos
Vamos a crear el ciclo principal que estará midiendo continuamente el nivel de agua. Guardaremos esa medición en una variable y la mostraremos en la pantalla junto con el símbolo de porcentaje.
- Ciclo de lectura. Dentro del bloque "para siempre" de la categoría Básico, se introduce el bloque "fijar [Nivel de agua] a" de la categoría Variables para crear una repetición infinita que procese instrucciones en tiempo real.
- Captura del sensor. A este bloque se le acopla "sensor value of water level(0~100) at pin P1" de la categoría del kit IoT, que servirá como contenedor para guardar y transformar la lectura física del agua en un valor numérico.
- Limpieza de pantalla. Seguidamente, se añade el bloque "clear OLED display" de la categoría OLED para borrar los píxeles de la lectura anterior y evitar que los textos se amontonen.
- Visualización del dato. Después, se inserta el bloque "show string" y se le encaja el bloque "unir" de las categorías OLED y Texto, escribiendo dentro "Nivel de agua ", añadiendo la variable "Nivel de agua" y un "%" al final para construir la frase exacta que se verá en pantalla.

Paso 4. Estado de seguridad (Nivel bajo)
Configuraremos el sistema para que tome decisiones basadas en el nivel de agua. Si hay poca agua, indicará que todo es seguro y mantendrá el servomotor (nuestra compuerta) cerrado.
- Evaluación segura. A través de un bloque condicional "si ... entonces ... si no" de la categoría Lógica, en la condición del "si" se utiliza una comparación matemática para evaluar si "Nivel de agua < 10".
- Mensaje de seguridad. Dentro de ese bloque "entonces", se coloca el bloque "show string" y se escribe exactamente "ESTADO: SEGURO" para informar al usuario de la situación.
- Control de compuerta cerrada. En ese mismo apartado, se inserta el bloque "escribir servo pin P2 a 0" de la categoría Pines para enviar la orden física al servomotor y transformar la señal eléctrica en un ángulo de 0 grados, simulando una compuerta cerrada.

Paso 5. Estado de alerta (Nivel medio)
Si el agua sube y entra en un rango intermedio, el sistema cambiará el mensaje de la pantalla y abrirá la compuerta parcialmente para empezar a aliviar la presión.
- Rama de precaución. Mediante el botón "+" del condicional, se añade una nueva rama "si no, si" y se forman operadores matemáticos para evaluar la condición "Nivel de agua >= 10 y Nivel de agua <= 50", delimitando la zona de alerta.
- Mensaje de alerta. Dentro de esta rama, se añade el bloque "show string" y se escribe "ESTADO: ALERTA" para mostrar la nueva advertencia visual.
- Apertura parcial. A continuación, se coloca el bloque "escribir servo pin P2 a 45" de la categoría Pines para enviar una nueva orden física que gire el motor a 45 grados, abriendo la compuerta a la mitad de su capacidad.

Paso 6. Estado de evacuación y estabilización (Nivel crítico)
Finalmente, programaremos qué ocurre cuando el agua supera la mitad de la capacidad y la situación es crítica. También añadiremos una pausa para que la pantalla no parpadee demasiado rápido.
- Evacuación máxima. En la última rama "si no" que actúa por descarte, se añade el bloque "show string" y se escribe el texto "ESTADO: EVACUAR" para alertar del peligro máximo.
- Apertura total de compuerta. En esa misma rama final, se inserta el bloque "escribir servo pin P2 a 90" de la categoría Pines para enviar la orden física al motor de abrirse al máximo (90 grados) y dejar pasar todo el caudal de agua.
- Estabilización del sistema. Fuera de las condiciones, pero al final del bucle "para siempre", se añade el bloque "pausa (ms) 500" de la categoría Básico para darle un respiro al procesador y que podamos leer la pantalla de forma estable durante medio segundo.

Paso final. Conexiones
Es el momento de darle vida a nuestro proyecto físico. Sigue estos pasos para realizar la transferencia y el montaje:
- Descarga y transferencia a la placa Micro: una vez completados estos pasos, el código está listo para ser descargado a tu tarjeta Micro:bit. En esta presentación se explica las diferentes posibilidades
- Montaje de hardware: insertamos con cuidado la Micro:bit en la ranura de la placa de expansión IoT:bit.
- Conexión de sensores: conectamos el sensor de nivel de agua y servomotor tal y como se muestra en la imagen.
Al conectar el sensor veremos los datos en al pantalla OLED
En este enlace podemos encontrar el resultado de la actividad al completo.
Comencemos - Equipo de Matemáticas
¡Atención, equipo de Ingenieros!
Debemos evitar que una nueva inundación ponga en jaque la estación. Necesitamos un mecanismo de prevención infalible que evacúe el agua automáticamente antes de que alcance niveles críticos.
Nuestra misión es diseñar un dispositivo IoT con micro:bit que controle una compuerta de desagüe mediante un servo. Nuestro reto es aplicar el álgebra para calcular los puntos exactos de activación y programar tres modos de apertura: cerrado (0º), medio abierto (45º) y totalmente abierto (90º). Calcularemos los límites de nivel del agua solucionando para cada caso la ecuación que nos explicará nuestro docente.
Aprenderemos a resolver problemas de la vida cotidiana mediante ecuaciones de primer grado. Utilizaremos variables matemáticas para representar el estado del entorno. Descubriremos cómo el pensamiento algorítmico y el álgebra nos permiten automatizar la seguridad y cumplir nuestra misión de salvar la base.
¡Ingenieros, activad el protocolo de evacuación automática!
- Visualizamos el vídeo
El siguiente vídeo nos explica de una forma clara y dinámica los pasos que hay que seguir para resolver el reto.
Lectura facilitada
¡Atención, equipo de analistas de datos! Vuestro trabajo es la última defensa de la base. Otros equipos secan el agua, pero vosotros sois los que escucháis el peligro antes de que ocurra.
Si las paredes de la estación empiezan a romperse por el peso del mar, vosotros debéis cerrar las puertas de seguridad.
👂 ¿Cómo "escuchamos" el peligro?
Usaremos el sensor de sonido del Smart Science Kit como si fueran los oídos de la estación:
- Crujidos suaves. La estación está aguantando bien.
- Crujidos fuertes. ¡Peligro! Las paredes están sufriendo por la presión del océano.
⚙️ ¿Qué vamos a programar?
Vuestra misión es convertir el ruido en una acción de defensa usando un servomotor (un motor que gira con precisión y que funcionará como nuestra cerradura).
Usaremos la regla del SI... ENTONCES:
- SI el sonido de los crujidos es muy alto...
- ENTONCES el servomotor debe girar para cerrar la puerta por completo.
📋 Pasos para la misión
- Medir el ruido. Observad qué números marca el sensor de sonido cuando hay silencio y cuando hay ruido.
- Calcular el cierre. Programad el servomotor para que se mueva más o menos según lo fuerte que sea el ruido.
- Aislar la zona. Si el código es correcto, la puerta se cerrará a tiempo y el agua no nos atrapará.
¡Protocolos de evacuación listos! Escuchad con atención para salvar la base.
Nos preparamos
Estas presentaciones contienen todos los conocimientos necesarios para poder trabajar con Micro:bit y Smart Science IoT, así mismo estas disponen de un índice indicando los contenidos que veremos.
Para ver a pantalla completa clicamos en presentación.
Ahora veremos lo que necesitamos saber de Smart Science IoT.
Aquí encontramos un documento de ayuda para realizar la actividad
Un poco de ayuda
Montamos nuestro código
Lee el código, encuentra la secuencia y construye uniendo las piezas.
Ahora toca comprobar que los hemos colocado correctamente y la pantalla muestra la información que recoge por los sensores.
Reto de la misión
Estos pasos nos guiarán para poder realizar nuestra misión.
Fase 0. Preparando nuestro entorno de desarrollo
Iniciamos nuestra aventura en Abyss-Zero preparando nuestras herramientas digitales para que nuestro sistema pueda comunicarse con los sensores y la pantalla del simulador.
- Nuestro reto. Añadir la extensión "Environment-and-Science-IoT" para desbloquear las funciones de nuestra pantalla OLED.
- Pista de investigación. ¿Dónde solemos buscar cuando necesitamos cargar nuevas funciones especiales en nuestro entorno de programación? Investigamos en el apartado de extensiones (en la rueda dentada o bajo las categorías) y escribimos el nombre exacto para añadir los nuevos bloques.
- Comprobación / visualización. Comprobamos que, al instalarla, aparece una nueva categoría en nuestro menú repleta de opciones para configurar pantallas y sensores ambientales.
Fase 1. Encendiendo el visor de la estación
Antes de comenzar a recibir datos de nivel del agua, necesitamos asegurarnos de que el panel de control esté encendido y listo desde el primer segundo.
- Nuestro reto. Configurar la inicialización de la pantalla OLED justo al arrancar el sistema para que tenga las dimensiones adecuadas.
- Pista de investigación. ¿Qué bloque de la categoría "Básico" nos permite ejecutar una orden una sola vez al inicio? Dentro de él, buscamos en nuestra nueva categoría de extensiones el bloque que prepara el panel visual (initialize OLED) con sus medidas.
- Comprobación / visualización. Observamos que la pequeña pantalla de nuestro kit se activa y está preparada para recibir información en cuanto iniciamos el programa.
Fase 2. Preparando la memoria del sistema
Antes de hacer cálculos complejos con el nivel de agua, necesitamos un contenedor seguro donde guardar la información que llegará constantemente desde el exterior.
- Nuestro reto. Crear un ciclo continuo y preparar una variable en la memoria para almacenar el nivel del agua.
- Pista de investigación. ¿Qué bloque de la categoría "Básico" nos permite que una acción se repita sin fin? Una vez colocado, investiguemos en la categoría "Variables" cómo crear una nueva llamada "nivel de agua" para fijarle un valor dentro de nuestro bucle.
- Comprobación / visualización. Observamos que el esqueleto de nuestro programa ya tiene un espacio reservado y activo todo el tiempo para empezar a guardar datos de forma ininterrumpida.
Fase 3. Proyectando los datos en la pantalla
Ahora que tenemos nuestro porcentaje calculado en la sombra, necesitamos mostrarlo a toda la tripulación de la estación para que conozcan el estado de la estructura.
- Nuestro reto. Refrescar la pantalla y proyectar un texto que nos diga exactamente el nivel de agua actual.
- Pista de investigación. ¿Qué bloques de nuestra extensión nos sirven para limpiar la pantalla y mostrar una cadena de texto? Además, si queremos juntar la palabra "Nivel de agua:" con el valor numérico de nuestra variable, tal vez necesitemos investigar la categoría "Texto" para encontrar un bloque que una ambas cosas.
- Comprobación / visualización. Percibimos que el visor se actualiza en tiempo real, mostrándonos el nivel de agua exacto de la estación.
Fase 4. Evaluando el peligro y actuando
El sistema debe ser inteligente y tomar decisiones vitales por su cuenta: mantenerse sereno, ponerse en alerta o evacuar cerrando las compuertas según la gravedad de la situación.
- Nuestro reto. Resolver la ecuación (9x - 90) / 8 = Ángulo del servo para los modos de apertura de 0º, 45º y 90º. Con los niveles de agua (la variable x) obtenidos, clasificar el estado de la base ("SEGURO", "ALERTA" o "EVACUAR") y mover el servomotor.
- Pista de investigación. Primero, despejamos la variable x en nuestra ecuación para descubrir los tres límites. Luego, buscamos en la categoría "Lógica" la estructura para evaluar opciones en cadena. Configuraremos que: si el nivel de agua es menor o igual a 10 (servo a 0º), si es menor o igual a 50 (servo a 45º), o si llega hasta 90 (servo a 90º). En cada paso, mostraremos el texto en pantalla y enviaremos los grados al servo del pin P2.
- Comprobación / visualización. Verificamos que, al cambiar el nivel de agua simulado, el texto de alerta se actualiza y el motor gira exactamente a los grados que acabamos de calcular algebraicamente.
Fase 5. Estabilizando los sistemas
Si nuestra computadora lee y procesa los datos sin descanso, la pantalla parpadeará de forma confusa y el servomotor podría descontrolarse intentando moverse muy rápido.
- Nuestro reto. Añadir un pequeño respiro al final de nuestro ciclo para que el sistema funcione de manera fluida y legible.
- Pista de investigación. ¿Qué bloque de la categoría "Básico" nos permite detener el tiempo durante medio segundo (500 ms) antes de volver a empezar todo el proceso?
- Comprobación / visualización. Comprobamos que los mensajes en pantalla ahora son nítidos y estables, y el motor tiene el tiempo suficiente para completar su movimiento sin temblores.
Fase 6. Conectando la placa al mundo real
Ha llegado el momento de unir nuestro proyecto físico para dar vida a todos los sistemas que acabamos de programar.
- Nuestro reto. Conectar el sensor de sonido y el servomotor a nuestra placa para que el código interactúe con el entorno real.
- Pista de investigación. Fijémonos en la configuración de nuestro código. ¿En qué pines hemos programado cada lectura? Conectamos el sensor de sonido al puerto P1 y el servomotor al puerto P2 de nuestra placa de expansión IoT, prestando especial atención a la orientación de los colores de los cables.
- Comprobación / visualización. Comprobamos que, al encender la placa y sumergir el sensor, el servomotor reacciona físicamente a nuestras señales y la pantalla OLED refleja los datos en vivo.
Nuestras herramientas de apoyo
- Consejo lógico: Cuando convertimos datos brutos a porcentajes, estamos realizando un "escalado". Es como traducir un idioma que habla la máquina (del 0 al 1023) a un idioma que entendemos fácilmente los humanos (del 0 al 100).
- Consejo hardware/físico: Asegurémonos de conectar firmemente el sensor y el servomotor en los pines correctos (P1 y P2) fijándonos muy bien en el color de los cables; un cable de tierra o voltaje invertido es la causa más común de que nuestro circuito no encienda.
Nuestra autocomprobación
- ¿Hemos identificado correctamente qué activador inicia cada secuencia lógica? (Sí/No)
- ¿Observamos que el comportamiento coincide con el orden lógico visible en la captura? (Sí/No)
- ¿Hemos configurado correctamente los umbrales lógicos y matemáticos para que el servomotor reaccione de forma escalonada según los niveles de agua detectados por el sensor? (Sí/No)
Aprendo pienso y crezco
Aprendo , pienso y crezco
El diario de aprendizaje es nuestro Informe de Seguridad de la estación personal de "ingenieros". No sirve para copiar teoría, sino para reflexionar sobre cómo hemos aprovechado la fuerza del agua para crear un sistema de defensa electrónico en la estación Abyss-Zero.
- Diario de aprendizaje (será necesario uno por grupo de alumnos o como especifique el docente)
Después de...
¡Atención, divisiones operativas!
Nuestros sistemas de respuesta mecánica y protocolos de emergencia están plenamente operativos. Ahora, debemos presentar los resultados de nuestro "Informe de Viabilidad y Seguridad" ante el Comité de Seguridad de la estación Abyss-Zero.
Organización de los equipos
- División de Fluidos (Física y Química). Presentaremos la lógica de las decisiones autónomas para la extracción de la humedad ambiente excesiva (usando los umbrales de humedad del suelo y la activación de los ventiladores de secado).
- División de Análisis (Matemáticas). Presentaremos la lógica del control de compuertas antes del colapso estructural (usando el mapeo del sensor nivel de agua y el cierre progresivo de las compuertas con servomotores).
Roles del equipo
La misión de supervivencia depende del trabajo conjunto. Repartimos estos roles para la defensa ante el Comité:
- La jefatura de estación (Portavocía). Explica el objetivo de seguridad de la misión y las conclusiones finales. Responde a la pregunta: "¿Es nuestra base capaz de defenderse de una brecha oceánica de forma 100% autónoma con este sistema?".
- La ingeniería de soporte vital (Parte técnica). Enseña el código en MakeCode y haz saltar el protocolo en directo (detectando la humedad o el nivel de agua para que el sistema encienda el motor o mueva el servo).
- El análisis de telemetría (parte lógica). Explica qué bloque de código es el cerebro de la placa (el bloque condicional) y responde a las dudas sobre los errores de cálculo o calibración cometidos durante las pruebas.
Objetivo y programación (causa y efecto)
Explicamos cómo hemos enseñado a nuestra estación a "pensar" para sobrevivir a la inmensa presión:
- ¿Qué queríamos automatizar y por qué? Explicamos el peligro. Por ejemplo: "Si el nivel de humedad sube, hay riesgo de corrosión masivo. Necesitábamos que el sistema detectara el derrame y tomara decisiones de secado por sí solo".
- Los bloques (Lógica condicional). Explicamos el corazón de nuestro sistema de soporte vital: el bloque "si... entonces... si no" (y las condiciones anidadas "si no, si" en el caso de las compuertas).
- La programación. ¿Cómo hemos fijado el límite del peligro? Explicamos la regla lógica de cada especialidad (ejemplo: "Si la humedad es mayor que 60, entonces envía energía al pin del ventilador" o "Si el porcentaje de nivel de agua es mayor que 50, entonces mueve el servo a 90 grados").
Diario de errores y calibración
Un sistema de soporte vital de élite no es perfecto a la primera. Contamos la verdad técnica de nuestros entrenamientos:
- Falsas detecciones. ¿Qué falló durante las pruebas? ¿El ventilador se encendía antes de tiempo? ¿El servomotor no cerraba la compuerta lo suficientemente rápido? ¿Los porcentajes en la pantalla OLED mostraban valores imposibles?
- Solución (Calibración). Explicamos cómo cambiamos los valores numéricos (los umbrales analógicos, los ángulos del servo o la fórmula de porcentaje) para que la respuesta de la base fuera precisa y eficiente.
Comprobación y conclusiones
Damos el veredicto final para autorizar el despliegue del sistema automático:
- Comprobación. Hacemos una simulación de peligro en la base. Colocamos agua en el sensor de nivel de agua o generamos humedad frente el sensor para que el Comité vea y escuche cómo la estación reacciona sola, enciende la extracción o sella el perímetro, y actualiza los mensajes en la pantalla OLED.
- Conclusión. ¿El sistema es totalmente fiable? ¿Creemos que la tecnología IoT es suficiente para frenar la presión hidrostática o el entorno oceánico es demasiado inestable para confiar solo en el código?
Formato de presentación (Elegimos una opción DUA)
Elegimos el formato que mejor demuestre nuestra competencia técnica como ingenieros de Abyss-Zero:
- Opción A - Simulacro en vivo (Live demo). Ponemos los sensores en la mesa de pruebas. Provocamos situaciones de riesgo en directo (llenado rápido del recipiente y humedad alta) y mostramos cómo la estación toma la decisión de salvarnos en tiempo real.
- Opción B - Mapa de Lógica de Emergencia (Póster visual). Creamos un gran esquema visual del algoritmo. Dibujamos el camino del dato: "Entrada del sensor (Humedad/Nivel de agua)" -> "Procesamiento (¿Es mayor que 80?)" -> "Respuesta física (Ventilador / Servomotor / OLED)".
- Opción C - Registro de Supervivencia (Audio o Vídeo). Grabamos un mensaje de voz o vídeo dramático, como si fuera la "Caja Negra de Abyss-Zero", relatando una inmersión nocturna en la que el código activó los sistemas de defensa automáticamente permitiéndonos sobrevivir a una fisura inminente.