Imagina esta escena: es la hora de ir a dormir y, antes de apagar la luz, tu hija mira la lámpara de su mesilla. Brilla en azul suave. Sin decir nada, ya sabe que mañana va a llover y que toca dejar preparado el paraguas. Sin pantallas, sin aplicaciones y sin preguntarle a nadie. Eso es exactamente lo que vamos a construir hoy: una lámpara inteligente ESP32 para niños que se conecta a internet, consulta el tiempo y cambia de color según la previsión.

Es uno de esos proyectos IoT sencillos en casa que se pueden terminar en una tarde de fin de semana, que cuestan menos que un juguete de tienda y que, además, enseñan electrónica, programación y meteorología a la vez. Si buscáis experimentos de robótica familiar que acaben convertidos en algo útil para el día a día, este es vuestro proyecto.

Lámpara inteligente ESP32 para niños que cambia de color según el tiempo Internet ESP32 Sol Lluvia Tormenta
Nuestra lámpara del tiempo: el ESP32 consulta la previsión y la luz cambia de color.

Por qué este proyecto encanta a pequeños y mayores

La mayoría de los kits de iniciación terminan con un LED que parpadea y poco más. Está bien para empezar, pero los niños enseguida preguntan: «¿y esto para qué sirve?». Aquí la respuesta es inmediata. La lámpara tiene una utilidad real, se queda en su habitación y la usan cada noche. Eso convierte el aprendizaje en algo que se ve, se toca y se presume delante de los amigos.

Además, el proyecto toca muchas áreas a la vez, en la línea de lo que proponen programas educativos como Arduino Education:

  • Electrónica básica: qué es la alimentación, la masa (GND) y una señal de datos.
  • Programación: variables, condiciones «si pasa esto, haz aquello» y bucles.
  • Internet de las cosas (IoT): cómo un objeto cotidiano puede pedir información a un servidor.
  • Ciencia: interpretar códigos meteorológicos y relacionarlos con lo que vemos por la ventana.
  • Diseño y manualidades: crear la pantalla de la lámpara con materiales reciclados.

¿Queréis más ideas para aprender robótica en familia? Descubrid cursos, kits y proyectos guiados pensados para Maker Kids.

Visitar Robótica Online

Cómo funciona la lámpara del tiempo

El cerebro del proyecto es una placa ESP32, un microcontrolador muy parecido a un Arduino pero con WiFi integrado. Cada 15 minutos, la placa se conecta a la red de casa y le pregunta a Open-Meteo, un servicio meteorológico gratuito que no necesita registro ni claves, qué tiempo hará. El servicio responde con un número (el código meteorológico) y el programa traduce ese número a un color. Por último, un anillo de LEDs RGB se ilumina con un suave efecto de «respiración», ideal para dormir.

Así funciona la lámpara del tiempo con ESP32 Así funciona la lámpara del tiempo WiFi de casa conecta Open-Meteo envía el tiempo ESP32 elige el color Lámpara se ilumina
El recorrido de la información, desde internet hasta la luz de la mesilla.

Hemos añadido un truco que a las familias les encanta: la lámpara puede mostrar el tiempo de mañana en lugar del actual. Así, por la noche, sirve como recordatorio para preparar la ropa adecuada, el chubasquero o la gorra para el sol.

Materiales que necesitáis

Todo el material se encuentra fácilmente en tiendas de electrónica y el coste total ronda los 15 a 25 euros, según dónde compréis:

  • Placa ESP32 DevKit (cualquier modelo con WiFi, por ejemplo la ESP32-WROOM-32).
  • Anillo de LEDs WS2812B (también llamados NeoPixel) de 12 o 16 LEDs. Si es posible, compradlo con los cables ya soldados.
  • Tres cables dupont hembra-hembra o macho-hembra, según vuestra placa.
  • Una resistencia de 330 Ω para proteger la línea de datos.
  • Un condensador de 1000 µF (opcional, estabiliza la alimentación del anillo).
  • Cable USB y un cargador de móvil de 5 V.
  • Una pantalla para la lámpara: un tarro de cristal, una bola de papel, un bote de yogur blanco o una pieza impresa en 3D.

Paso 1: preparar el ordenador

Vamos a programar el ESP32 con el entorno gratuito Arduino IDE, el mismo que se usa en muchos colegios. Si no lo tenéis instalado, descargadlo desde la web oficial de Arduino y seguid estos pasos:

  1. Abrid Archivo > Preferencias y, en «Gestor de URLs adicionales de tarjetas», pegad esta dirección: https://espressif.github.io/arduino-esp32/package_esp32_index.json
  2. Id a Herramientas > Placa > Gestor de tarjetas, buscad «esp32» e instalad el paquete de Espressif Systems.
  3. En Programa > Incluir librería > Administrar bibliotecas, instalad Adafruit NeoPixel y ArduinoJson (versión 7).
  4. Seleccionad la placa ESP32 Dev Module en el menú Herramientas y el puerto USB correspondiente.

Este es un buen momento para que los peques sean quienes hagan clic y lean los menús en voz alta. Parece poca cosa, pero perder el miedo al ordenador como herramienta de creación es el primer gran aprendizaje.

Paso 2: las conexiones

Solo hay que conectar tres cables. Fijaos en que el anillo tiene una entrada marcada como DIN (entrada de datos) y una salida marcada como DOUT: debéis usar siempre DIN.

Esquema de conexión de la lámpara inteligente con ESP32 Esquema de conexión ESP32 DevKit VIN GND GPIO 5 USB 5V GND 330 Ω DIN Anillo WS2812B (12 LEDs) Opcional: condensador de 1000 µF entre 5V y GND del anillo
Tres cables y una resistencia: así de sencillo es el circuito.
  • Cable rojo: pin VIN (o 5V) del ESP32 al pin 5V del anillo.
  • Cable negro: pin GND del ESP32 al pin GND del anillo.
  • Cable verde: pin GPIO 5 del ESP32, pasando por la resistencia de 330 Ω, al pin DIN del anillo.

Si el anillo viene sin cables, habrá que soldarlos. Esa parte debe hacerla siempre un adulto, aunque los niños pueden mirar a una distancia prudente con gafas de protección y aprender cómo se hace. Si preferís evitar el soldador, buscad anillos con conectores ya montados.

Paso 3: el código de la lámpara

Copiad este programa en Arduino IDE. Lo hemos escrito con nombres en español y con comentarios para que sea fácil de entender en familia. Solo tenéis que cambiar el nombre y la contraseña de vuestro WiFi, y las coordenadas de vuestra ciudad.

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Adafruit_NeoPixel.h>

// ===== 1. Datos que tenéis que cambiar =====
const char* WIFI_NOMBRE = "NombreDeTuWiFi";
const char* WIFI_CLAVE  = "ClaveDeTuWiFi";
const float LATITUD  = 40.4168;     // Ejemplo: Madrid
const float LONGITUD = -3.7038;
const bool MOSTRAR_MANANA = true;   // true = tiempo de mañana, false = tiempo actual

// ===== 2. Configuración del anillo de luces =====
#define PIN_LEDS   5
#define NUM_LEDS   12
#define BRILLO_MAX 60               // Luz suave para dormir (máximo 255)

Adafruit_NeoPixel anillo(NUM_LEDS, PIN_LEDS, NEO_GRB + NEO_KHZ800);

int codigoTiempo = -1;              // -1 = todavía no sabemos el tiempo
unsigned long ultimaConsulta = 0;
const unsigned long INTERVALO = 15UL * 60UL * 1000UL;   // Cada 15 minutos

void conectarWiFi() {
  WiFi.begin(WIFI_NOMBRE, WIFI_CLAVE);
  Serial.print("Conectando al WiFi");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(" conectado");
}

void consultarTiempo() {
  if (WiFi.status() != WL_CONNECTED) {
    conectarWiFi();
  }

  String url = "https://api.open-meteo.com/v1/forecast?latitude=" + String(LATITUD, 4)
             + "&longitude=" + String(LONGITUD, 4)
             + "&current=weather_code&daily=weather_code&timezone=auto&forecast_days=2";

  WiFiClientSecure cliente;
  cliente.setInsecure();            // Simplifica la conexión segura
  HTTPClient http;
  http.begin(cliente, url);
  int respuesta = http.GET();

  if (respuesta == 200) {
    JsonDocument doc;
    DeserializationError error = deserializeJson(doc, http.getString());
    if (!error) {
      if (MOSTRAR_MANANA) {
        codigoTiempo = doc["daily"]["weather_code"][1];
      } else {
        codigoTiempo = doc["current"]["weather_code"];
      }
      Serial.print("Codigo del tiempo: ");
      Serial.println(codigoTiempo);
    }
  } else {
    Serial.print("Error al consultar el tiempo: ");
    Serial.println(respuesta);
  }
  http.end();
}

void pintar(uint8_t r, uint8_t g, uint8_t b, float intensidad) {
  for (int i = 0; i < NUM_LEDS; i++) {
    anillo.setPixelColor(i, anillo.Color(r * intensidad, g * intensidad, b * intensidad));
  }
  anillo.show();
}

void animar() {
  float segundos = millis() / 1000.0;
  float respira = 0.55 + 0.45 * sin(segundos * 1.5);    // Efecto "respiración"

  if (codigoTiempo < 0) {                                // Sin datos todavía
    pintar(0, 255, 0, 0.2);
  } else if (codigoTiempo == 0) {                         // Despejado
    pintar(255, 150, 20, respira);
  } else if (codigoTiempo <= 3) {                         // Algunas nubes
    pintar(255, 220, 150, respira);
  } else if (codigoTiempo == 45 || codigoTiempo == 48) {  // Niebla
    pintar(150, 150, 170, respira);
  } else if (codigoTiempo >= 51 && codigoTiempo <= 67) {  // Llovizna y lluvia
    pintar(0, 80, 255, respira);
  } else if (codigoTiempo >= 71 && codigoTiempo <= 77) {  // Nieve
    pintar(180, 230, 255, respira);
  } else if (codigoTiempo >= 80 && codigoTiempo <= 82) {  // Chubascos
    pintar(0, 160, 200, respira);
  } else if (codigoTiempo >= 85 && codigoTiempo <= 86) {  // Chubascos de nieve
    pintar(200, 240, 255, respira);
  } else if (codigoTiempo >= 95) {                        // Tormenta
    if (random(0, 400) == 0) {
      pintar(255, 255, 255, 0.6);                         // Pequeño "relámpago"
    } else {
      pintar(120, 0, 200, respira);
    }
  } else {                                                // Otros casos
    pintar(255, 255, 255, 0.4);
  }
}

void setup() {
  Serial.begin(115200);
  anillo.begin();
  anillo.setBrightness(BRILLO_MAX);
  anillo.show();
  conectarWiFi();
  consultarTiempo();
  ultimaConsulta = millis();
}

void loop() {
  if (millis() - ultimaConsulta > INTERVALO) {
    consultarTiempo();
    ultimaConsulta = millis();
  }
  animar();
  delay(20);
}

Pulsad el botón de subir (la flecha) y esperad. Si la carga se queda atascada en «Connecting…», mantened pulsado el botón BOOT de la placa durante un par de segundos. Después abrid el Monitor serie a 115200 baudios: veréis cómo la placa se conecta y el número que recibe del servicio meteorológico.

Cómo explicar el código a los niños

Podéis comparar el programa con una receta. La parte de arriba son los «ingredientes» (el WiFi, la ciudad, el número de luces). La función consultarTiempo() es como llamar por teléfono al hombre del tiempo y apuntar lo que dice. La función animar() es una lista de reglas: «si dice sol, pinta naranja; si dice lluvia, pinta azul». Y el loop() es lo que la lámpara repite una y otra vez, sin cansarse nunca.

Paso 4: poner vuestra ciudad

Para que la lámpara sepa qué tiempo hace en vuestra casa, necesita las coordenadas. Abrid Google Maps en el ordenador, haced clic derecho sobre vuestra calle y aparecerán dos números, por ejemplo 41.3874, 2.1686 para Barcelona. El primero es la latitud y el segundo la longitud. Copiadlos en el código respetando el signo negativo si lo hay. Es una oportunidad perfecta para hablar de mapas, del ecuador y del meridiano de Greenwich.

El código de colores de la lámpara

Esta es la tabla que hemos programado. Podéis imprimirla y pegarla junto a la lámpara, o mejor aún, dejar que los niños inventen la suya y cambien los valores en el código.

Color Tiempo Qué preparar
Naranja Despejado Gorra y crema solar
Blanco cálido Algunas nubes Una chaqueta ligera
Gris Niebla Ropa con colores visibles
Azul Lluvia o llovizna Paraguas y botas
Turquesa Chubascos Chubasquero en la mochila
Celeste Nieve Guantes, gorro y bufanda
Morado Tormenta Planes de interior

Paso 5: construir la pantalla de la lámpara

Aquí es donde cada familia deja su sello. La idea es difuminar la luz de los LEDs para que no deslumbre y se vea como un brillo uniforme. Algunas opciones que funcionan muy bien:

  • Tarro de cristal esmerilado: pegad papel vegetal por dentro o pintadlo con pintura en spray translúcida.
  • Bola de papel de arroz: las típicas lámparas de papel quedan preciosas con el anillo en su interior.
  • Bote de yogur o envase blanco: reciclaje puro y un efecto muy suave.
  • Impresión 3D: en comunidades como Instructables hay cientos de diseños de pantallas, nubes y lunas listas para imprimir en filamento blanco.

Para la base, una caja de cartón pequeña o un trozo de madera con un agujero para el cable USB es suficiente. Colocad el anillo mirando hacia arriba y el ESP32 escondido debajo. Dejad siempre algo de ventilación y no cubráis la placa con materiales que se puedan calentar.

Paso 6: pruebas y solución de problemas

Es normal que algo no funcione a la primera. De hecho, buscar el error juntos es una de las partes más valiosas de cualquier experimento de robótica. Estos son los fallos más habituales:

  • La lámpara se queda en verde tenue: todavía no ha recibido datos. Revisad el nombre y la clave del WiFi. Recordad que el ESP32 solo funciona con redes de 2,4 GHz, no de 5 GHz.
  • No se enciende ningún LED: comprobad que el cable de datos va a DIN y no a DOUT, y que el GND está bien conectado.
  • Los colores salen cambiados: algunos anillos usan otro orden de color. Probad a cambiar NEO_GRB por NEO_RGB.
  • Error al compilar en «JsonDocument»: tenéis instalada una versión antigua de ArduinoJson. Actualizadla a la versión 7.
  • Parpadeos extraños: añadid el condensador de 1000 µF entre 5V y GND del anillo y usad un cargador USB de calidad.

¿Os habéis quedado con ganas de más? Aprended a programar robots, sensores y placas como el ESP32 paso a paso y a vuestro ritmo.

Empezar a aprender robótica

Cómo repartir las tareas según la edad

Uno de los secretos para que los experimentos de robótica familiar funcionen es que todos tengan un papel importante. Esta es una propuesta orientativa:

  • De 6 a 8 años: elegir los colores de cada tipo de tiempo, decorar la pantalla y comprobar cada mañana si la lámpara «acertó».
  • De 9 a 12 años: hacer las conexiones con supervisión, buscar las coordenadas y cambiar los valores de color y brillo en el código.
  • A partir de 13 años: modificar las animaciones, crear nuevos efectos y añadir funciones extra.
  • Adultos: soldadura, configuración del WiFi y supervisión de la parte eléctrica.

Un reto divertido: durante una semana, apuntad en una hoja el color de la lámpara por la noche y el tiempo real del día siguiente. Al final, calculad cuántas veces acertó la previsión. Acabáis de hacer vuestro primer estudio estadístico casero.

Ideas para subir de nivel

Cuando la lámpara básica funcione, podéis seguir ampliándola. Estas mejoras convierten un proyecto de una tarde en un laboratorio que crece con los niños:

  • Interruptor táctil: el ESP32 tiene pines sensibles al tacto. Con la función touchRead() podéis encender o apagar la lámpara tocando una chincheta metálica en la base.
  • Color según la temperatura: pedid también la temperatura a Open-Meteo y haced un degradado de azul (frío) a rojo (calor).
  • Apagado automático: que la luz se vaya atenuando hasta apagarse 30 minutos después de acostarse.
  • Modo despertador: que por la mañana se encienda poco a poco, como un amanecer.
  • Varias ciudades: ideal si los abuelos viven lejos. Un LED del anillo puede mostrar el tiempo en su casa.

Consejos de seguridad

El proyecto funciona con 5 V a través de USB, por lo que es muy seguro. Aun así, conviene seguir algunas normas básicas: nunca conectéis nada directamente a un enchufe de la pared, haced la soldadura siempre con un adulto, mantened el brillo bajo para no molestar al dormir y no dejéis la lámpara tapada con ropa o cojines. El valor BRILLO_MAX del código está pensado precisamente para que la luz sea agradable de noche.

Una lámpara que enseña algo cada noche

Construir una lámpara inteligente ESP32 para niños demuestra que la tecnología no tiene que ser una caja negra. Con unos pocos componentes, algo de paciencia y mucha curiosidad, los peques entienden cómo un objeto puede conectarse a internet, recibir información y tomar decisiones. Y lo mejor es que cada noche, al ver el color de su lámpara, recordarán que fueron ellos quienes la programaron.

Si este proyecto os ha gustado, es solo el principio. Hay muchos más proyectos IoT sencillos en casa esperando: estaciones meteorológicas, regadores automáticos de plantas, robots que esquivan obstáculos y mucho más.

Convertid la curiosidad de vuestros hijos en habilidades para el futuro. Encontrad proyectos, recursos y formación en robótica para toda la familia.

Descubrir más proyectos en Robótica Online

Su título va aquí

Resumen de privacidad
Robodemia

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Toda le información en: https://www.robodemia.es/politica-de-privacidad

 

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Analítica

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.