15 proyectos con Arduino para feria de ciencias (primaria y secundaria)

15 proyectos con Arduino para feria de ciencias del colegio, por dificultad: qué demuestra cada uno, materiales con precios, conexiones y código listo.

Dos alumnos de secundaria explican a su profesora un proyecto con Arduino y sensor de ultrasonido en la feria de ciencias del colegio

Estos 15 proyectos con Arduino para feria de ciencias están ordenados de menor a mayor dificultad. Los primeros cinco sirven para 5.º y 6.º de primaria con ayuda de un adulto, y los últimos son para alumnos de 4.º y 5.º de secundaria que ya programaron antes. Cada proyecto tiene el nivel recomendado, lo que demuestra científicamente, los materiales con su precio, una tabla de conexiones y, en varios casos, el código completo.

Un consejo antes de elegir: en una feria pesa más una pregunta bien medida que un circuito complicado. Un robot que se mueve impresiona un minuto, pero el jurado se queda con el grupo que midió algo, repitió la prueba y puede explicar por qué le salió ese resultado.

Antes de empezar: qué necesitas

Todos los proyectos usan la misma base: una placa Arduino, una protoboard para conectar sin soldar, cables y resistencias. Usamos el Arduino Nano, pero un Uno funciona igual porque los nombres de los pines (D2, A0, A4, etc.) son los mismos.

También necesitas una computadora con el Arduino IDE, que es gratuito. Si Windows no reconoce la placa, instala el driver CH340. Para subir un programa, conecta el Arduino, elige la placa y el puerto en el menú Herramientas y presiona la flecha de "Subir".

Tres reglas que evitan casi todos los problemas:

  • Todo LED lleva una resistencia de 220 Ω en serie. Sin ella, el LED o el pin del Arduino se pueden quemar.
  • Arma el circuito con el cable USB desconectado y revisa las conexiones antes de enchufar.
  • Si usas pilas para motores o una bomba, une el GND de las pilas con el GND del Arduino (salvo cuando un relé separa los circuitos, como en el proyecto 9).

Si la feria es la Feria Escolar Nacional de Ciencia y Tecnología Eureka, que organiza el Minedu y en 2026 convoca desde 1.º de primaria hasta 5.º de secundaria, revisa las bases de tu UGEL: allí se indica la categoría según el grado y lo que debe incluir el informe.

Proyectos fáciles (primaria alta y 1.º y 2.º de secundaria)

Usan uno o dos componentes además de la base, un código de menos de 30 líneas y se arman en una o dos sesiones.

1. Semáforo con cruce peatonal

Nivel: 5.º y 6.º de primaria, 1.º de secundaria. Dificultad: fácil.

Qué demuestra: cómo funciona un circuito cerrado y la ley de Ohm. Con 5 V, un LED rojo (que consume unos 2 V) y una resistencia de 220 Ω, pasa una corriente de (5 − 2) / 220 ≈ 0.014 A, es decir, 14 mA. Los alumnos pueden comprobarlo con un multímetro y probar qué pasa con una resistencia de 1 kΩ: la corriente baja y el LED brilla menos. Para la feria se puede plantear como un proyecto de seguridad vial en la puerta del colegio.

Componente Conexión Pin del Arduino
LED rojo Pata larga, con resistencia de 220 Ω D10
LED amarillo Pata larga, con resistencia de 220 Ω D9
LED verde Pata larga, con resistencia de 220 Ω D8
Los tres LEDs Pata corta GND
Pulsador Dos patas en diagonal D2 y GND
Buzzer pasivo Positivo, con resistencia de 220 Ω D6
Buzzer pasivo Negativo GND

Los autos tienen verde hasta que un peatón presiona el botón. Entonces el semáforo pasa a amarillo, luego a rojo, y el buzzer pita para avisar que se puede cruzar.

const int ROJO = 10, AMARILLO = 9, VERDE = 8;
const int BOTON = 2, BUZZER = 6;

void setup() {
  pinMode(ROJO, OUTPUT);
  pinMode(AMARILLO, OUTPUT);
  pinMode(VERDE, OUTPUT);
  pinMode(BOTON, INPUT_PULLUP);    // sin presionar se lee HIGH
  digitalWrite(VERDE, HIGH);       // los autos pasan
}

void loop() {
  if (digitalRead(BOTON) == LOW) { // un peaton pidio cruzar
    digitalWrite(VERDE, LOW);
    digitalWrite(AMARILLO, HIGH);
    delay(2000);
    digitalWrite(AMARILLO, LOW);
    digitalWrite(ROJO, HIGH);
    for (int i = 0; i < 10; i++) { // 5 segundos de pitidos para cruzar
      tone(BUZZER, 1000, 200);
      delay(500);
    }
    digitalWrite(ROJO, LOW);
    digitalWrite(VERDE, HIGH);
  }
}

2. Theremin de luz

Nivel: 5.º y 6.º de primaria. Dificultad: fácil.

Qué demuestra: dos ideas a la vez. La primera es que la fotorresistencia (LDR) cambia su resistencia con la luz: a más luz, menos resistencia. La segunda es que el sonido es una vibración y que su frecuencia define si escuchamos un tono grave o agudo. El instrumento suena más agudo cuando le apuntas con una linterna y más grave cuando lo tapas con la mano.

Componente Conexión Pin del Arduino
LDR Una pata 5V
LDR Otra pata A0
Resistencia de 10 kΩ Entre A0 y tierra GND
Buzzer pasivo Positivo, con resistencia de 220 Ω D8
Buzzer pasivo Negativo GND

La LDR y la resistencia de 10 kΩ forman un divisor de voltaje: con más luz, el voltaje en A0 sube.

void setup() {}

void loop() {
  int luz = analogRead(A0);                       // 0 (oscuro) a 1023 (mucha luz)
  int frecuencia = map(luz, 0, 1023, 120, 1500);  // de grave a agudo, en Hz
  tone(8, frecuencia);
  delay(10);
}

Para el informe, midan con el Monitor Serie el valor de luz en el aula, junto a la ventana y con el sensor tapado, y armen una tabla.

3. Medidor de tiempo de reacción

Nivel: 6.º de primaria a 3.º de secundaria. Dificultad: fácil.

Qué demuestra: cuánto tarda el sistema nervioso en reaccionar a un estímulo visual. Es uno de los mejores proyectos con Arduino para colegio porque deja hacer un experimento completo: ¿reaccionamos más rápido con la mano dominante? ¿Antes o después del recreo? ¿Los que juegan videojuegos reaccionan más rápido? Con cinco intentos por persona y diez compañeros ya hay datos para un gráfico.

Componente Conexión Pin del Arduino
LED Pata larga, con resistencia de 220 Ω D7
LED Pata corta GND
Pulsador Dos patas en diagonal D2 y GND

El LED se enciende después de una espera al azar y el programa mide los milisegundos hasta que presionas el botón. Si alguien presiona antes de tiempo, la prueba no cuenta.

const int LED = 7, BOTON = 2;

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(BOTON, INPUT_PULLUP);
  Serial.begin(9600);
  randomSeed(analogRead(A0));            // A0 sin conectar: espera distinta cada vez
}

void loop() {
  Serial.println("Atento a la luz...");
  unsigned long inicio = millis();
  unsigned long espera = random(2000, 5000);
  while (millis() - inicio < espera) {
    if (digitalRead(BOTON) == LOW) {     // presiono antes de tiempo
      Serial.println("Muy pronto. Intenta otra vez.");
      delay(1500);
      return;
    }
  }
  digitalWrite(LED, HIGH);
  unsigned long encendido = millis();
  while (digitalRead(BOTON) == HIGH) {}  // espera el clic
  unsigned long reaccion = millis() - encendido;
  digitalWrite(LED, LOW);
  Serial.print("Tiempo de reaccion: ");
  Serial.print(reaccion);
  Serial.println(" ms");
  delay(2000);
}

Abre el Monitor Serie a 9600 baudios para ver los resultados y copia cada tiempo a una hoja de cálculo.

4. Sensor de humedad para plantas

Nivel: 5.º y 6.º de primaria. Dificultad: fácil.

Qué demuestra: que el agua en el suelo conduce la electricidad. El sensor tiene dos puntas metálicas, y cuanto más húmeda está la tierra, más corriente pasa entre ellas. El experimento: tres macetas con arena, tierra de chacra y tierra con compost, regadas con la misma cantidad de agua. ¿Cuál retiene la humedad más días?

Componente Conexión Pin del Arduino
Módulo FC-28 VCC 5V
Módulo FC-28 GND GND
Módulo FC-28 AO (salida analógica) A0
LED rojo Pata larga, con resistencia de 220 Ω D7
LED verde Pata larga, con resistencia de 220 Ω D6
Ambos LEDs Pata corta GND

Con este módulo el valor sube cuando la tierra está más seca. Antes de programar la alarma, mide el sensor en tierra seca y en tierra recién regada, y usa el punto medio como límite: por encima, enciende el LED rojo; por debajo, el verde. Las puntas se corroen si pasan semanas enterradas con corriente, así que sácalas de la maceta entre una medición y otra.

5. Alarma con sensor de movimiento

Nivel: 5.º de primaria a 2.º de secundaria. Dificultad: fácil.

Qué demuestra: que todo cuerpo caliente emite radiación infrarroja, aunque no la veamos. El sensor PIR detecta los cambios de esa radiación cuando alguien se mueve delante de él. Una prueba que sorprende en la feria: pongan una lámina de vidrio delante del sensor y verán que deja de detectar, porque el vidrio común bloquea casi todo el infrarrojo que emite el cuerpo humano.

Componente Conexión Pin del Arduino
Sensor PIR HC-SR501 VCC 5V
Sensor PIR HC-SR501 OUT D2
Sensor PIR HC-SR501 GND GND
LED rojo Pata larga, con resistencia de 220 Ω D7
Buzzer pasivo Positivo, con resistencia de 220 Ω D8
LED y buzzer Negativo GND

El programa lee D2: si está en HIGH, enciende el LED y hace sonar tone(8, 2000); si está en LOW, apaga ambos con noTone(8). El PIR necesita alrededor de un minuto después de conectarlo para estabilizarse. Tiene dos tornillos de ajuste: uno cambia la distancia de detección y el otro cuánto tiempo se mantiene activa la salida.

Manos de un estudiante conectan cables en una protoboard con un Arduino Nano, tres LEDs de colores, un buzzer y un pulsador
El semáforo con cruce peatonal se arma con el Kit Explorador más un pulsador.

Proyectos intermedios (secundaria)

Estos proyectos con Arduino para secundaria usan sensores digitales, librerías o un actuador externo. Funcionan bien para 2.º a 4.º de secundaria y dan para un informe con tablas y gráficos.

6. Medir la velocidad del sonido con ultrasonido

Nivel: 3.º a 5.º de secundaria. Dificultad: intermedia.

Qué demuestra: que el sonido viaja a una velocidad que se puede medir en el aula. El sensor HC-SR04 emite un pulso de ultrasonido y mide cuánto tarda en volver después de rebotar en una pared. Si la distancia la mides con wincha, puedes calcular la velocidad: v = 2d / t (el 2 es porque el sonido va y vuelve). En aire seco a 20 °C el valor esperado ronda los 343 m/s. Repetir la medición a 20, 40, 60, 80 y 100 cm y graficar tiempo contra distancia da una recta; con su pendiente se calcula la velocidad.

Componente Conexión Pin del Arduino
HC-SR04 VCC 5V
HC-SR04 Trig D9
HC-SR04 Echo D10
HC-SR04 GND GND
const int TRIG = 9, ECHO = 10;
const float DISTANCIA_M = 0.50;   // medida con wincha hasta la pared, en metros

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);       // pulso de 10 microsegundos
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  unsigned long t = pulseIn(ECHO, HIGH, 30000UL);   // ida y vuelta, en microsegundos
  if (t > 0) {
    float v = 2.0 * DISTANCIA_M / (t / 1000000.0);  // metros por segundo
    Serial.print("Tiempo: ");
    Serial.print(t);
    Serial.print(" us   Velocidad: ");
    Serial.print(v);
    Serial.println(" m/s");
  }
  delay(500);
}

No esperes exactamente 343 m/s. Discutir por qué sale distinto (la temperatura del aula, la precisión del sensor, dónde está el "cero" de la wincha) es justamente lo que el jurado quiere escuchar.

7. Estación meteorológica con pantalla

Nivel: 2.º a 4.º de secundaria. Dificultad: intermedia.

Qué demuestra: la relación entre temperatura y humedad relativa a lo largo del día. Con la estación en el aula se puede registrar cada hora y comparar un aula con ventanas abiertas y otra cerrada, o el aula llena y vacía. El DHT11 tiene una precisión de ±2 °C, suficiente para ver tendencias, y conviene mencionarlo en el informe.

Componente Conexión Pin del Arduino
DHT11 (módulo de 3 pines) VCC 5V
DHT11 DATA D2
DHT11 GND GND
Pantalla OLED VCC 5V
Pantalla OLED GND GND
Pantalla OLED SDA A4
Pantalla OLED SCL A5

Desde el gestor de librerías del Arduino IDE instala "DHT sensor library" y "Adafruit SSD1306" (con sus dependencias). La pantalla suele usar la dirección I2C 0x3C. Si tu DHT11 viene suelto, con cuatro patas y sin placa, agrega una resistencia de 10 kΩ entre DATA y 5V. Este es uno de los proyectos del ebook del Kit Inventor, que trae el código completo.

8. Ley de enfriamiento de Newton

Nivel: 3.º a 5.º de secundaria. Dificultad: intermedia.

Qué demuestra: que un líquido caliente se enfría rápido al principio y cada vez más lento a medida que se acerca a la temperatura ambiente. Es la ley de enfriamiento de Newton, y la curva que sale es una exponencial. El experimento compara la misma agua caliente en una taza de vidrio, una de cerámica y un termo, o en la misma taza con y sin tapa.

Componente Conexión Pin del Arduino
DS18B20, cable rojo VDD 5V
DS18B20, cable negro GND GND
DS18B20, cable amarillo DATA D2
Resistencia de 4.7 kΩ Entre DATA (D2) y 5V —

Los colores de cable son los más comunes, pero revisa los de tu sensor. Instala las librerías "OneWire" y "DallasTemperature".

#include <OneWire.h>
#include <DallasTemperature.h>

OneWire bus(2);
DallasTemperature sensor(&bus);

void setup() {
  Serial.begin(9600);
  sensor.begin();
  Serial.println("segundos,temperatura");
}

void loop() {
  sensor.requestTemperatures();
  float t = sensor.getTempCByIndex(0);
  Serial.print(millis() / 1000);
  Serial.print(",");
  Serial.println(t);
  delay(10000);                  // una medicion cada 10 segundos
}

El Monitor Serie muestra los datos separados por comas: cópialos a Excel o Google Sheets y grafica. Usen agua caliente de la tetera, no hirviendo, y que un adulto la sirva.

9. Riego automático

Nivel: 3.º a 5.º de secundaria. Dificultad: intermedia.

Qué demuestra: un sistema de control en lazo cerrado. El sensor mide, el Arduino decide y la bomba actúa, y el resultado vuelve a medirse. Para la feria se puede medir cuánta agua usa el riego automático durante una semana frente a regar "a ojo" todos los días, un tema que conecta con el cuidado del agua en Lima.

Componente Conexión Pin del Arduino
Módulo FC-28 VCC, GND, AO 5V, GND, A0
Módulo relé VCC 5V
Módulo relé GND GND
Módulo relé IN D7
Portapilas 4 AA (+) Borne COM del relé —
Bomba (+) Borne NO del relé —
Bomba (−) Negativo del portapilas —

La bomba se alimenta con las pilas, no con el Arduino. El relé funciona como un interruptor que el Arduino abre y cierra, y mantiene separados los dos circuitos.

const int SENSOR = A0, RELE = 7;
const int UMBRAL_SECO = 700;     // ajustalo con tus propias mediciones

void setup() {
  digitalWrite(RELE, HIGH);      // primero HIGH para que la bomba no arranque sola
  pinMode(RELE, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int humedad = analogRead(SENSOR);   // mas alto = mas seco
  Serial.println(humedad);
  if (humedad > UMBRAL_SECO) {
    digitalWrite(RELE, LOW);     // enciende la bomba 3 segundos
    delay(3000);
    digitalWrite(RELE, HIGH);
  }
  delay(30000);                  // espera a que el agua se absorba
}

La mayoría de módulos de relé se activan con LOW, como en este código. Si el tuyo se activa con HIGH, invierte los dos valores. Prueba primero sin agua: debes escuchar el "clic" del relé.

10. Detector de gas y alcohol

Nivel: 3.º a 5.º de secundaria. Dificultad: intermedia.

Qué demuestra: cómo un material semiconductor (dióxido de estaño) cambia su resistencia cuando hay gases combustibles en el aire. El MQ-2 detecta GLP, propano, metano y vapores de alcohol. Para probarlo en clase, acerquen un algodón con alcohol medicinal, nunca un balón de gas abierto ni un encendedor.

Componente Conexión Pin del Arduino
MQ-2 VCC 5V
MQ-2 GND GND
MQ-2 AO A0
LED rojo Pata larga, con resistencia de 220 Ω D7
Buzzer pasivo Positivo, con resistencia de 220 Ω D8
LED y buzzer Negativo GND

El sensor tiene un calefactor interno: déjalo encendido unos minutos antes de medir y anota el valor del aire limpio del aula. La alarma se activa cuando la lectura supera ese valor con margen. Las lecturas sirven para comparar, no para medir concentraciones exactas, y el prototipo no reemplaza a un detector de gas certificado para casa.

Proyectos avanzados (3.º a 5.º de secundaria)

Combinan varios sensores, un actuador y más física o matemática en el análisis. Son los que mejor encajan cuando la feria pide proyectos innovadores, porque responden un problema real con datos propios.

11. Seguidor solar

Nivel: 3.º a 5.º de secundaria. Dificultad: avanzada.

Qué demuestra: que una superficie recibe más energía cuando la luz le llega de frente. Es la razón por la que los paneles solares grandes giran durante el día. Dos LDR separadas por un tabique de cartón comparan la luz que llega a cada lado, y un servomotor gira la base hasta que las dos reciben lo mismo.

Componente Conexión Pin del Arduino
LDR izquierda Entre 5V y A0 A0
Resistencia de 10 kΩ Entre A0 y GND GND
LDR derecha Entre 5V y A1 A1
Resistencia de 10 kΩ Entre A1 y GND GND
Servo SG90, cable marrón Tierra GND
Servo SG90, cable rojo Alimentación 5V
Servo SG90, cable naranja Señal D9
#include <Servo.h>

Servo motor;
int angulo = 90;

void setup() {
  motor.attach(9);
  motor.write(angulo);
}

void loop() {
  int izquierda = analogRead(A0);
  int derecha = analogRead(A1);
  int diferencia = izquierda - derecha;
  if (diferencia > 30 && angulo < 180) angulo++;        // mas luz a la izquierda
  else if (diferencia < -30 && angulo > 0) angulo--;    // mas luz a la derecha
  motor.write(angulo);
  delay(15);
}

Si el servo gira hacia el lado contrario, intercambia los cables de A0 y A1. El margen de 30 evita que tiemble cuando la luz es pareja. Para el informe, comparen la lectura de una LDR fija con la de una montada en el seguidor, cada media hora durante la mañana.

12. Sismógrafo y mesa vibratoria

Nivel: 3.º a 5.º de secundaria. Dificultad: avanzada.

Qué demuestra: cómo se mide un movimiento sísmico con un acelerómetro y cómo un aislamiento en la base reduce lo que siente un edificio. Perú está en una zona de alta actividad sísmica, así que el tema conecta con cualquier jurado. El experimento: dos maquetas iguales de palitos de helado sobre una mesa vibratoria (dos tablas con canicas en medio), una fija a la tabla y otra apoyada sobre bolitas o esponjas. El sensor va en el último piso.

Componente Conexión Pin del Arduino
MPU-6050 VCC 5V
MPU-6050 GND GND
MPU-6050 SDA A4
MPU-6050 SCL A5

El código lee el sensor directamente, sin librerías externas:

#include <Wire.h>
const int MPU = 0x68;

int16_t leer16() {
  uint8_t alto = Wire.read();
  uint8_t bajo = Wire.read();
  return (int16_t)(((uint16_t)alto << 8) | bajo);
}

void setup() {
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);              // registro de energia
  Wire.write(0);                 // despierta el sensor
  Wire.endTransmission();
  Serial.begin(115200);
}

void loop() {
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);              // primer registro de aceleracion
  Wire.endTransmission(false);
  Wire.requestFrom(MPU, 6);
  int16_t ax = leer16();
  int16_t ay = leer16();
  int16_t az = leer16();
  Serial.print(ax);
  Serial.print(",");
  Serial.print(ay);
  Serial.print(",");
  Serial.println(az);
  delay(10);
}

Abre el Serial Plotter a 115200 baudios para ver las tres ondas en vivo. Con la configuración de fábrica, 16384 unidades equivalen a 1 g (9.8 m/s²), así que en reposo el eje vertical marca cerca de 16384. Comparen la amplitud máxima de las dos maquetas con el mismo empujón.

Alumna empuja una mesa vibratoria con una maqueta de edificio de palitos y un acelerómetro conectado a un Arduino, con la gráfica en una laptop
La mesa vibratoria se hace con dos tablas y canicas; el acelerómetro va en el último piso de la maqueta.

13. Robot seguidor de línea

Nivel: 3.º a 5.º de secundaria. Dificultad: avanzada.

Qué demuestra: que las superficies oscuras absorben la luz infrarroja y las claras la reflejan. Cada sensor emite infrarrojo y detecta cuánto rebota. Con esa información el robot corrige su rumbo, que es la base de cualquier sistema de control.

Componente Conexión Pin del Arduino
Sensor izquierdo OUT D2
Sensor derecho OUT D3
Ambos sensores VCC y GND 5V y GND
L298N ENA (sin el puente) D5
L298N IN1 e IN2 (motor izquierdo) D7 y D8
L298N IN3 e IN4 (motor derecho) D9 y D10
L298N ENB (sin el puente) D6
L298N Borne de 12V + del portapilas
L298N GND − del portapilas y GND del Arduino

La línea negra (cinta aislante sobre cartulina blanca) queda entre los dos sensores. La lógica es simple: si los dos ven blanco, el robot avanza; si el izquierdo ve negro, el robot se desvió a la derecha y debe frenar el motor izquierdo para girar; si el derecho ve negro, al revés. Ajusta el tornillo de cada sensor mirando su LED indicador sobre blanco y sobre negro.

Alimenta el Arduino con su cable USB conectado a un power bank y no olvides unir los GND. Con 4 pilas AA el L298N entrega unos 4 V a los motores, suficiente para una pista en el piso del aula. El Kit Inventor trae la versión con control PID, que sigue la línea más rápido y con menos zigzag.

14. Monitor del aula con ESP32 y WiFi

Nivel: 4.º y 5.º de secundaria. Dificultad: avanzada.

Qué demuestra: el concepto de Internet de las cosas (IoT) aplicado a una pregunta concreta: ¿cuándo hace más calor en nuestro salón y cuánto ayuda abrir las ventanas? El ESP32 mide con el DHT11 y publica una página web que cualquiera abre desde su celular, conectado a la misma red.

Componente Conexión Pin del ESP32
DHT11 VCC 3V3
DHT11 DATA GPIO 4
DHT11 GND GND

El ESP32 trabaja a 3.3 V. Alimenta el DHT11 desde 3V3 para que su señal no supere ese voltaje, y nunca conectes una salida de 5 V a sus pines. En el Arduino IDE instala el soporte para ESP32 desde el gestor de placas y la librería "DHT sensor library".

#include <WiFi.h>
#include <WebServer.h>
#include <DHT.h>

const char* RED = "NombreDeTuRed";
const char* CLAVE = "TuClave";

DHT dht(4, DHT11);
WebServer server(80);

void pagina() {
  float t = dht.readTemperature();
  float h = dht.readHumidity();
  String html = "<meta name='viewport' content='width=device-width'>"
                "<meta http-equiv='refresh' content='10'>"
                "<h1>Nuestra aula</h1><p>Temperatura: " + String(t, 1) +
                " &deg;C</p><p>Humedad: " + String(h, 0) + " %</p>";
  server.send(200, "text/html", html);
}

void setup() {
  Serial.begin(115200);
  dht.begin();
  WiFi.begin(RED, CLAVE);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  Serial.println(WiFi.localIP());   // abre esta direccion en el celular
  server.on("/", pagina);
  server.begin();
}

void loop() {
  server.handleClient();
}

El ESP32 solo se conecta a redes de 2.4 GHz. Muchas redes de colegio piden iniciar sesión en una página, y con ellas no funciona: en la feria es más simple compartir internet desde un celular.

15. Péndulo para medir la gravedad

Nivel: 4.º y 5.º de secundaria. Dificultad: avanzada.

Qué demuestra: que con un hilo, una masa y un sensor se puede calcular la aceleración de la gravedad. Para oscilaciones pequeñas (menos de 15°), el periodo de un péndulo es T = 2π√(L/g), así que g = 4π²L / T². El valor esperado en Lima ronda los 9.78 m/s². El experimento clásico es cambiar el largo del hilo y comprobar que el periodo no depende de la masa.

Componente Conexión Pin del Arduino
Sensor FC-51 VCC 5V
Sensor FC-51 GND GND
Sensor FC-51 OUT D2

Coloca el sensor debajo del punto más bajo del recorrido, a 2 o 3 cm de la masa, y ajusta su tornillo hasta que el LED del módulo se encienda solo cuando pasa la masa. La salida se pone en LOW mientras detecta algo.

const int SENSOR = 2;
const float L = 0.50;          // largo en metros, del punto de giro al centro de la masa
unsigned long pasos[3];
int n = 0;
int anterior = HIGH;

void setup() {
  pinMode(SENSOR, INPUT);
  Serial.begin(9600);
}

void loop() {
  int actual = digitalRead(SENSOR);
  if (anterior == HIGH && actual == LOW) {          // la masa entra al sensor
    unsigned long ahora = millis();
    if (n == 0 || ahora - pasos[n - 1] > 150) {     // ignora lecturas dobles
      pasos[n++] = ahora;
      if (n == 3) {                                 // 3 pasadas = 1 periodo completo
        float T = (pasos[2] - pasos[0]) / 1000.0;
        float g = 4 * PI * PI * L / (T * T);
        Serial.print("T = ");
        Serial.print(T, 3);
        Serial.print(" s   g = ");
        Serial.print(g, 2);
        Serial.println(" m/s2");
        pasos[0] = pasos[2];
        n = 1;
      }
    }
  }
  anterior = actual;
}

La masa pasa por el centro dos veces en cada oscilación, por eso un periodo completo va de la primera pasada a la tercera. Midan con al menos cuatro largos distintos y grafiquen T² contra L: debe salir una recta.

Cómo convertir el circuito en un proyecto de feria

Un circuito que funciona todavía no es un proyecto de feria de ciencias. Lo que lo convierte en uno es la pregunta y los datos. Este orden les sirve a primaria y secundaria:

  1. Pregunta. Concreta y medible: "¿Qué tipo de suelo retiene más agua?" funciona; "¿Cómo funciona el Arduino?" no.
  2. Hipótesis. Lo que creen que va a pasar y por qué, escrito antes de medir.
  3. Variables. Qué cambian (el tipo de suelo), qué miden (la lectura del sensor) y qué mantienen igual (la cantidad de agua, la maceta, el lugar).
  4. Mediciones repetidas. Al menos tres repeticiones por condición. Un solo dato no prueba nada.
  5. Tabla y gráfico. Hechos con sus datos, no con datos de internet.
  6. Conclusión. ¿Se cumplió la hipótesis? ¿Qué falló? ¿Qué harían distinto?

Para el día de la feria, lleven el proyecto funcionando, una laptop o celular con el código abierto y una bitácora con las mediciones a mano. Cada integrante debe poder explicar una parte del circuito y una línea del código. Graben también un video corto del proyecto funcionando, por si algo falla el día de la presentación.

Errores que arruinan un proyecto el día de la feria

  • Cables sueltos en el traslado. La protoboard se mueve en la mochila. Fijen la placa a una base de cartón o madera y revisen todo al llegar.
  • Pilas de 9 V para motores. Se descargan en minutos. Usen 4 pilas AA o un power bank.
  • Olvidar el GND común. Si el Arduino y el driver de motores no comparten tierra, el robot hace cosas raras.
  • 5 V en un ESP32. Sus pines trabajan a 3.3 V. Revisen cada sensor antes de conectarlo.
  • Copiar el código sin entenderlo. El jurado pregunta. Comenten cada línea con sus propias palabras.
  • No llevar repuestos. Un LED, una resistencia y un cable extra caben en un sobre.

Qué kit conviene según el proyecto

Si van a hacer más de un proyecto, o si el colegio quiere que toda la sección participe, un kit sale más barato que las piezas sueltas y trae el ebook con el código y los diagramas.

Kit Precio por alumno Proyectos de esta lista que cubre
Explorador S/ 55 1 y 3 (más un pulsador); 2, 4, 5, 6, 8, 10, 12 y 15 sumando su sensor
Inventor S/ 120 Todo lo anterior, más el 7 completo y la base del 13 (sensor de línea, motor y L298N)
Ingeniero S/ 200 Todo lo anterior, más el ESP32 del 14 y el chasis 2WD para el 13

Para colegios que quieren llevar Arduino a toda una sección, el paquete Aula Explorador trae 30 kits con capacitación docente por S/ 1,200. En la guía para implementar un aula de robótica explicamos cómo elegir equipos por nivel y armar el presupuesto, y en educación STEAM con ejemplos por grado mostramos cómo un proyecto como estos se trabaja junto con otras áreas. Para los grados menores de primaria, los 6 proyectos con kit tipo WeDo 2.0 se arman con piezas y se programan por bloques.

Los componentes de esta lista están en nuestras tiendas de Surco y San Miguel. Si tienes dudas con un circuito, escríbenos por WhatsApp al 923 692 807 con el número del proyecto.

Preguntas frecuentes

¿Qué proyecto con Arduino es fácil para una feria de ciencias?

El medidor de tiempo de reacción y el semáforo con cruce peatonal se arman en una tarde con el Kit Explorador. El medidor de reacción tiene ventaja en la feria porque permite hacer un experimento real: medir a varios compañeros, comparar la mano derecha con la izquierda y sacar promedios.

¿Arduino sirve para alumnos de primaria?

Sí, desde 5.º y 6.º de primaria con acompañamiento de un adulto, empezando por los proyectos fáciles de esta lista, que usan pocos cables y un código corto. Para grados menores recomendamos el kit compatible tipo WeDo 2.0, que se arma con piezas y se programa por bloques.

¿Cuánto cuesta hacer un proyecto con Arduino para la feria?

La base (Arduino Nano, protoboard, cables y resistencias) cuesta S/ 51 en piezas sueltas, o S/ 55 en el Kit Explorador, que además trae LEDs, buzzer y el ebook. A eso se suman los componentes de cada proyecto: la mayoría de sensores de esta lista cuesta entre S/ 5 y S/ 14.

¿Qué hace innovador a un proyecto de feria de ciencias?

Que responda una pregunta concreta de tu entorno y que tenga datos medidos por ustedes. Un sismógrafo casero que compara maquetas con y sin aislamiento, o un riego automático que mide cuánta agua ahorra, pesan más ante el jurado que un robot que solo se mueve.

¿Necesito saber programar para hacer estos proyectos?

No para los fáciles: el código viene completo y cada línea está comentada. Lo importante es entender qué hace cada parte, porque el jurado lo va a preguntar. Para los intermedios y avanzados ayuda haber hecho antes uno o dos proyectos fáciles.

¿Dónde compro los materiales en Lima?

En nuestras tiendas de Surco (Av. Primavera 2261, stand 217) y San Miguel (Av. La Marina 2910, stand E1), o por WhatsApp al 923 692 807. Todos los componentes de esta lista tienen precio de nuestro catálogo.

Arma tu proyecto de feria con un kit completo

El Kit Explorador (S/ 55) alcanza para los proyectos fáciles, el Inventor (S/ 120) para los intermedios y el Ingeniero (S/ 200) para los avanzados. Para colegios armamos aulas completas con capacitación docente.