Red de Alerta Temprana de Incendios en los Pinsapares de Sierra Bermeja (Misión 01A · Las Misiones del Lince) Ciencia Ciudadana AIDARAC
Sierra Bermeja es un ecosistema único: sus suelos de peridotitas sostienen los pinsapares más antiguos de la Península. Un incendio aquí no se compensa replantando. En esta misión el alumnado se convierte en Lince Guardián: diseña una red de sensores que detecta la sequedad y el calor antes de que haya llama.
Trabajamos en tres capas: un nodo real (Arduino/ESP32 + BME280), un simulador en Wokwi para practicar desde casa y un mapa de la sierra con 10 sensores virtuales que calcula cada día el Índice Meteorológico de Incendios (FWI) canadiense, el mismo sistema en el que se basan los servicios de prevención de muchos países.
┌────────────────────────────────────────────────────────────────────────┐
│ RED DE ALERTA TEMPRANA · SIERRA BERMEJA │
│ │
│ ┌──────────────┐ T, HR, P ┌───────────────┐ Serie / Wi-Fi │
│ │ BME280 (I2C) ├────────────>│ Arduino/ESP32 ├──────────────┐ │
│ └──────────────┘ └───────────────┘ ▼ │
│ ┌──────────────────┐│
│ Viento + lluvia (INFOCA/AEMET o simulados) ─────> │ Calculador FWI ││
│ │ Mapa 10 sensores ││
│ └──────────────────┘│
└────────────────────────────────────────────────────────────────────────┘
🔥 La ciencia: por qué se quema un monte
Un incendio necesita combustible seco, calor y aire en movimiento. El FWI convierte cuatro medidas de mediodía (temperatura, humedad relativa, viento y lluvia de las últimas 24 h) en un número de peligro. Lo hace en tres niveles de combustible y dos índices finales:
| Código | Qué mide | Rapidez |
|---|---|---|
| FFMC | Humedad de la hojarasca fina de la superficie | Horas |
| DMC | Humedad de la capa orgánica media | Semanas |
| DC | Sequía profunda del suelo | Meses |
| ISI | Facilidad de propagación (FFMC + viento) | Diaria |
| BUI | Combustible total disponible (DMC + DC) | Diaria |
| FWI | Intensidad potencial del fuego (ISI + BUI) | Diaria |
Los códigos arrastran memoria: el FFMC de hoy depende del de ayer. Por eso el simulador recorre un año completo día a día, y una racha de sequía sube el riesgo aunque un día concreto sea fresco.
Niveles del FWI usados en el mapa: Bajo (0–4), Moderado (5–13), Alto (14–20), Muy alto (21–33), Extremo (34 o más).
Qué mide el BME280 y qué no
El BME280 mide temperatura, humedad y presión. Con ellas calculamos también el déficit de presión de vapor (VPD), un indicador de lo “sediento” que está el aire:
VPD = 0,6108 · e^(17,27·T / (T + 237,3)) · (1 − HR/100) (en kPa)
El viento y la lluvia no los mide: en la simulación se generan; en un despliegue real se toman de un anemómetro y un pluviómetro o de los datos de INFOCA/AEMET.
🛠️ Esquema de conexión (I2C)
🛠️ Esquema de conexión (I2C)
| BME280 | Arduino Mega | Arduino Uno / Nano | ESP32 (opcional) |
|---|---|---|---|
| VCC | 3,3 V | 3,3 V | 3V3 |
| GND | GND | GND | GND |
| SDA | 20 | A4 | GPIO 21 |
| SCL | 21 | A5 | GPIO 22 |
La dirección I2C suele ser 0x76 (o 0x77, según el módulo). Si el sensor no responde, prueba la otra. En Wokwi busca la pieza BME280 y conecta SDA y SCL a los pines de la tabla.
💻 Código: nodo sensor (Nodo_Alerta_Incendios.ino)
Librerías (Gestor de bibliotecas): Adafruit BME280 Library y Adafruit Unified Sensor.
/*
Misión del Lince - Nodo de Alerta Temprana de Incendios
Sierra Bermeja · IES Monterroso · MonteSTEAM
*/
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
// Déficit de presión de vapor en kPa: cuanto mayor, más seco está el aire
float calcularVPD(float t, float hr) {
float es = 0.6108 * exp(17.27 * t / (t + 237.3));
return es * (1.0 - hr / 100.0);
}
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76)) { // prueba 0x77 si no responde
Serial.println(F("BME280 no encontrado: revisa SDA, SCL y la direccion"));
while (true) delay(1000);
}
Serial.println(F("Nodo de alerta temprana listo"));
}
void loop() {
float t = bme.readTemperature(); // °C
float hr = bme.readHumidity(); // %
float p = bme.readPressure() / 100.0F; // hPa
float vpd = calcularVPD(t, hr);
Serial.print(F("[NODO] Temp:")); Serial.print(t, 1);
Serial.print(F(" C | HR:")); Serial.print(hr, 1);
Serial.print(F(" % | Pres:")); Serial.print(p, 1);
Serial.print(F(" hPa | VPD:")); Serial.print(vpd, 2);
Serial.println(F(" kPa"));
if (t > 30 && hr < 30) Serial.println(F("ALERTA: calor y aire muy seco"));
delay(2000);
}
OPCIÓN DHT22
Mide temperatura y humedad, que es lo que necesita el FWI, y sí está en Wokwi. En la simulación sustituye al BME280 sin problema. (El proyecto original también nombraba un NTC, que da solo temperatura, pero para el FWI hace falta la humedad.)
Conexión en Arduino Mega
| DHT22 | Arduino Mega |
|---|---|
| VCC | 5 V |
| GND | GND |
| SDA (dato) | pin digital 2 |
| NC | sin conectar |
En Wokwi la pieza DHT22 tiene esos cuatro pines. Recuerda que el pin “SDA” del DHT22 es solo el cable de datos y no tiene nada que ver con el I2C del Mega (pines 20 y 21). Puede confundir al alumnado, así que conviene decirlo en el vídeo.
Librerías (pestaña de bibliotecas de Wokwi): DHT sensor library y Adafruit Unified Sensor.
Código (Nodo_Alerta_Incendios_DHT22.ino):
cpp
/*
Misión del Lince - Nodo de Alerta Temprana (versión Wokwi con DHT22)
*/
#include <DHT.h>
#define PIN_DHT 2
DHT dht(PIN_DHT, DHT22);
// Déficit de presión de vapor en kPa: cuanto mayor, más seco está el aire
float calcularVPD(float t, float hr) {
float es = 0.6108 * exp(17.27 * t / (t + 237.3));
return es * (1.0 - hr / 100.0);
}
void setup() {
Serial.begin(9600);
dht.begin();
Serial.println(F("Nodo de alerta temprana listo"));
}
void loop() {
float t = dht.readTemperature(); // °C
float hr = dht.readHumidity(); // %
if (isnan(t) || isnan(hr)) {
Serial.println(F("Error leyendo el DHT22: revisa el cable de datos"));
delay(2000);
return;
}
float vpd = calcularVPD(t, hr);
Serial.print(F("[NODO] Temp:")); Serial.print(t, 1);
Serial.print(F(" C | HR:")); Serial.print(hr, 1);
Serial.print(F(" % | VPD:")); Serial.print(vpd, 2);
Serial.println(F(" kPa"));
if (t > 30 && hr < 30) Serial.println(F("ALERTA: calor y aire muy seco"));
delay(2000); // el DHT22 no admite lecturas más rápidas
}
Con la simulación en marcha, haz clic en el DHT22 y aparecen deslizadores para cambiar temperatura y humedad. Con ellos se ve saltar la alerta.
🗺️ Simulador: 10 sensores en Sierra Bermeja con FWI diario
El mapa, con una imagen de satélite de Sierra Bermeja de fondo, coloca 10 sensores virtuales en puntos sensibles de la sierra (crestas, pinsapar, laderas secas y municipios del entorno). Cada uno tiene su altitud, su exposición y su viento, y calcula el FWI completo con el método de Van Wagner (1987) durante un año. Mueve el día o pulsa una estación y observa cómo el mapa pasa de verde en invierno a rojo y violeta en verano. Con el control de calentamiento puedes probar qué ocurre en un clima más cálido.
⚠️ El clima del simulador es sintético (basado en medias mensuales aproximadas) y las posiciones de los sensores sobre la imagen son aproximadas. Para la fase de datos reales se sustituirán por series de INFOCA/AEMET.
🤖 Prompt para Claude: variante del dashboard
Actúa como un ingeniero de riesgo de incendios forestales. Crea un dashboard en un ÚNICO ARCHIVO HTML
(Claude Artifact) con un mapa esquemático de Sierra Bermeja y 10 sensores virtuales. Cada día simulado,
calcula el FWI completo (FFMC, DMC, DC, ISI, BUI, FWI) con temperatura, humedad, viento y lluvia de mediodía.
Colorea cada sensor según el nivel (Bajo, Moderado, Alto, Muy alto, Extremo), añade selector de estación,
control de calentamiento y una gráfica anual del sensor seleccionado. Sin librerías externas.
🏁 Conclusión: del sensor al mapa de riesgo
En esta misión hemos recorrido el camino completo de un sistema de alerta temprana: medir temperatura y humedad con un sensor, calcular con ellas el déficit de presión de vapor y el índice FWI, e interpretar los datos de diez puntos de Sierra Bermeja a lo largo del año.
Lo más importante que nos llevamos:
- El riesgo no depende de un solo dato. Una racha larga de sequía sube el peligro aunque un día concreto sea fresco, porque el combustible del monte guarda memoria de los días anteriores.
- El lugar importa. La altitud, la exposición y el viento hacen que unos sensores lleguen al riesgo alto antes que otros, y eso guía dónde conviene vigilar.
- Un modelo es una simplificación. Nuestro clima es sintético y en Wokwi usamos un sensor equivalente al BME280. Sirve para aprender, pero no para predecir un incendio real.
🔭 Siguiente paso
Sustituir el clima simulado por datos reales de AEMET, comparar el mapa con la realidad de la sierra y llevar los sensores de verdad al campo. Cuando el simulador y el monte coincidan, habremos convertido un ejercicio de aula en una herramienta de ciencia ciudadana para proteger los pinsapares.
🔄 Secuencia didáctica
- 💻 Desde casa (Wokwi): montar el BME280 con ESP32, ejecutar el código y variar la temperatura y la humedad del sensor virtual para ver cuándo salta la alerta.
- 🗺️ Exploración del mapa: recorrer las cuatro estaciones y anotar qué sensores son los primeros en llegar a riesgo alto, y por qué (altitud, exposición, viento).
- 🌡️ Experimento: subir el calentamiento y reducir la lluvia; comparar la fecha en que el primer sensor llega a “Muy alto”.
- 🧭 Ciencia ciudadana: proponer dónde colocaríamos sensores reales y comparar el mapa con los datos de INFOCA.
🎓 Vinculación curricular
- Materia: Computación y Robótica (1º/2º ESO), con conexión a Biología y Geología y a Matemáticas.
- Saberes básicos: sensores y comunicación I2C, lectura e interpretación de datos, modelos y simulación, algoritmos con estado (variables que dependen del día anterior) y ecosistemas y prevención de riesgos naturales.
Etiquetas: Sierra Bermeja, Incendios, FWI, BME280, Wokwi, Misión del Lince, ies monterroso, montesteam
Etiqueta:AIDARAC, bme280, FWI, ies monterroso, Incendios, Misión del Lince, montesteam, sierra bermeja, Wokwi



