
Entrada 09: Guardianes del Invernadero Lunar — Control Ambiental y Filtrado de Datos con micro:bit v2 y AM2302 (1º y 2º de ESO)
Una vez determinado el Cráter Shackleton como emplazamiento oficial de BermejaHab y resuelto el suministro hídrico desde las zonas en sombra permanente, damos el salto al control físico del hábitat. Iniciamos el bloque de robótica e ingeniería del entorno con el alumnado de 1º y 2º de ESO en la asignatura de Computación y Robótica.
Su primera misión es crítica: convertirse en los “Guardianes del Invernadero”, diseñando un sistema automático de control ambiental para el módulo agrícola que mantenga con vida los cultivos hidropónicos de la tripulación lunar.
🤖 El Reto: De Medir Datos Ruidosos a Tomar Decisiones Estables
Un sistema de soporte vital en el espacio no solo debe medir variables: debe responder a fallos en la toma de datos y tomar decisiones autónomas ante situaciones de riesgo.
Para este módulo utilizamos la placa BBC micro:bit v2, la tarjeta de expansión Basic:bit y el sensor de precisión AM2302 (DHT22), capaz de medir la temperatura y la humedad del aire dentro del invernadero.
Plaintext
MÓDULO DE PLANTAS (INVERNADERO)
┌─────────────────────────────────┐
│ 🌱 🌱 🌱 │
│ │
│ SENSOR AM2302 │
│ │ │
└─────────────────┼───────────────┘
│
Pin P1 (Datos)
┌───────┴───────┐
│ BASIC:BIT │
│ micro:bit v2 │
└───────────────┘
🛠️ Hardware y Asignación Física de Pines
- BBC micro:bit v2: Procesador principal y matriz LED para avisos visuales.
- Placa de expansión Basic:bit: Facilita las conexiones de alimentación ($3,3\text{ V} / 5\text{ V}$), tierra ($\text{GND}$) y pines de señal.
- Sensor AM2302 (DHT22): Medición de temperatura ($–40\text{ a }80\text{ °C}$) y humedad ($0\text{ a }100\%$).
Decisión de Ingeniería (Asignación de Pin): Conectamos el cable de datos del AM2302 al Pin P1 de la Basic:bit. Evitamos el Pin P0 porque en la micro:bit v2 está compartido internamente con el altavoz integrado, lo que genera interferencias en los tiempos de lectura digital.
🧠 Lección de Ingeniería: Filtrado de Datos (Data Cleaning)
Durante el despliegue del sensor en el aula, comprobamos que la comunicación digital a microsegundos del AM2302 puede perder tramas esporádicas, devolviendo un valor de error por timeout igual a -999.
Para evitar que una lectura errónea active falsas alarmas en la base lunar, introducimos un algoritmo de filtrado de datos:
- Se consulta el sensor cada 3 segundos (respetando la pausa obligatoria que requiere el AM2302).
- Validación: Si la lectura es correcta (distinta de
-999), el sistema actualiza las variablestempValidayhumValida. - Protección: Si la trama falla, el programa ignora el dato defectuoso y conserva en memoria el último valor estable conocido.
Plaintext
SENSOR AM2302 (Pin P1)
│
┌─────────┴─────────┐
│ TEMPERATURA │
│ HUMEDAD │
└─────────┬─────────┘
│
¿Es una lectura válida?
├──────────┴──────────┐
[SI (> -50)] [NO (-999)]
│ │
Actualizar variables Descartar trama
`tempValida/humValida` Conservar anterior
│ │
└─────────┬───────────┘
│
EVALUACIÓN LÓGICA
┌───────────────┼───────────────┐
↓ ↓ ↓
😊 🔥 💧
[TODO OK] [T > 30 ºC] [H < 40 %]
Rango Óptimo Texto: "Calor" Texto: "Falta agua"
📊 Reglas de Decisión e Interacción
Una vez filtrada la información, el programa ejecuta las siguientes acciones:
- Pulsar Botón A: Muestra en la matriz LED el valor numérico de la última Temperatura (°C) válida.
- Pulsar Botón B: Muestra en la matriz LED el valor numérico de la última Humedad (%) válida.
- Supervisión Automática (Bucle Principal):
- 🌡️ Si
tempValida > 30°C: Desplaza el mensaje de texto"Calor"en la pantalla. - 💧 Si
humValida < 40%: Desplaza el mensaje de texto"Falta agua". - 😊 Si todo se mantiene en rangos óptimos: Muestra de forma continua la cara feliz (
Happy).
- 🌡️ Si
🤖 Integrando la IA: Prompting con Claude en 1º y 2º de ESO
El alumnado utiliza Claude (versión gratuita) como tutor interactivo para aprender a estructurar en MakeCode los bloques condicionales, la extensión del sensor y el filtrado de errores antes de volcarlo a las placas.
📝 Prompt Utilizado en el Aula
Plaintext
Tengo una tarjeta micro:bit v2 con una placa Basic:bit y un sensor AM2302 (DHT22) en el pin P1.
Quiero programarlo mediante bloques en Microsoft MakeCode para el control de un invernadero lunar:
1. Al pulsar el botón A debe mostrar la variable de temperatura guardada.
2. Al pulsar el botón B debe mostrar la variable de humedad guardada.
3. En el bucle principal, consulta el sensor cada 3 segundos. Si la lectura es un error (-999), ignórala y mantén la última lectura correcta.
4. Si la temperatura válida es mayor de 30 ºC, muestra el texto "Calor". Si la humedad válida es menor del 40%, muestra el texto "Falta agua". Si todo está bien, muestra la cara feliz.
Explícame qué extensión debo buscar en MakeCode para el DHT22 y por qué es tan importante filtrar las lecturas falsas en un proyecto robótico.
🔄 Secuencia Didáctica en el Taller de Robótica
- 🔌 Montaje: Cableado del sensor AM2302 a la placa Basic:bit (VCC a 3.3V/5V, GND a Tierra y Data a Pin P1).
- 💻 Configuración en MakeCode: Carga de la extensión
DHT11_DHT22mediante su repositorio de GitHub compatible con micro:bit v2. - 🐛 Depuración por Puerto Serie: Emparejamiento por WebUSB para abrir la consola serie integrada de MakeCode y observar en la gráfica cómo se filtran los picos de
-999. - 🧪 Prueba de Selección y Control: Provocar cambios térmicos y de humedad (acercando calor o soplando sobre la rejilla) para comprobar la respuesta en tiempo real de los botones A, B y los textos de alerta.
- ⚙️ Calibración: Ajustar en los bloques los umbrales de temperatura y humedad adaptándolos a la especie vegetal simulada en la cúpula agrícola.
🎓 Vinculación Curricular (1º y 2º de ESO)
- Asignatura: Computación y Robótica (1º y 2º de ESO).
- Saberes Básicos:
- Sistemas de Control y Robótica: Arquitectura de un sistema físico interactivo (sensores digitales, microcontroladores, actuadores de matriz LED).
- Pensamiento Computacional: Programación por bloques, condicionales anidados (
si... si no, si... si no), variables de estado global y filtrado de ruido en señales de entrada. - Uso Guiado de la IA: Empleo de entornos generativos para la comprensión y optimización de código robótico.
- Competencias Específicas: Diseño de algoritmos de control automático y depuración de errores en sistemas robóticos físicos.






