jueves, 27 de marzo de 2025

Construcción de maqueta de coche propulsado con motor y programación de CuteBot (micro:bit)

Proyecto realizado por los alumnos y alumnas de 2º ESO que han realizado el estudio y análisis de un coche propulsado a partir de tres medios posibles:

- Motor conectado directamente al eje de las ruedas, con circuito eléctrico

- Coche autopropulsado: movimiento indirecto a partir de hélice conectada a un motor (circuito eléctrico)

- CuteBot (micro:bit): estudio de la velocidad de un coche cuyo movimiento programaran los alumnos. 


Los pasados meses de febrero y marzo se ha propuesto a los alumnos y alumnas de 2º un proyecto  que ha significado un reto para cada uno de los grupos conformados para su realización. En primer lugar, se ha expuesto las condiciones que tiene cada uno de los medios que se necesitan para solucionarlo: materiales, herramientas, circuitos eléctricos, documentación a entregar,...todo ello trabajado durante los ejes temáticos marcados durante la primera evaluación y el primer tramo de la segunda (temas como "materiales", "expresión gráfica" y "circuitos eléctricos", por ejemplo).


Para los alumnos de 2º ESO A se han propuesto soluciones relacionadas con la Programación y la Robótica, es decir, programar en primer lugar la placa micro:bit y después trabajar con ellos y ellas el movimiento de un coche  como puede ser un cuteBot. Una vez definido qué es, han realizado un diseño del mismo y han desarrollado un chasis adaptado, para que después se implemente con la propia placa y con el chasis / motor. Estos alumnos trabajarían el punto 3, señalado anteriormente.


En la clase de 2º ESO B, se ha desarrollado desde cero el diseño de un vehículo, que en uno de los casos será propulsado gracias a un motor que forma parte de un circuito eléctrico (diseñado con el programa de software específico "Tinkercad") y la forma del propio vehículo (diseñado desde el programa de Dibujo Asistido "Sketchup for Schools"). Estos alumnos trabajarían el punto 1.



Por último, tres grupos analizarán el diseño para que el vehículo sea autopropulsado gracias a una hélice adaptada al eje del motor, en la parte posterior. Es fundamental que en todos los casos el vehículo circule hacia adelante y poder medir así una velocidad aproximada.




El objetivo de la programación del cutebot (microbit) es que el coche avance y cuando encuentra un objeto cambia de dirección. En la Programación, se establece una velocidad del 40% para ambas ruedas, así el vehículo tendrá un avance lento en línea recta. Cuando el sensor de ultrasonido detecta un obstáculo a una distancia inferior a 15 cm, el vehículo gira hacia la derecha medio segundo



miércoles, 26 de marzo de 2025

Dispositivo de reflejos con Arduino: programación, electrónica y aprendizaje activo

Como parte del proyecto NorbaIDC, los alumnos han desarrollado un dispositivo capaz de medir los reflejos de los jugadores, aplicando conocimientos de programación, electrónica y diseño interactivo. A pesar de su aparente sencillez, este trabajo encierra un alto valor pedagógico y se ha convertido en un excelente ejemplo del tipo de aprendizaje competencial que promovemos en el proyecto.

¿Cómo funciona el dispositivo?

El sistema está basado en una placa Arduino, y hace uso de diversos componentes electrónicos:

  • Pantalla OLED para mostrar instrucciones y resultados.

  • Altavoz con módulo DFPlayer Mini para emitir sonidos de aviso.

  • LED indicador que se apaga como señal de inicio.

  • Cuatro pulsadores, uno por jugador.

  • Potenciómetro para controlar el volumen de audio.





El funcionamiento es sencillo:

  1. Se muestra un mensaje inicial en pantalla invitando a comenzar.

  2. Tras una espera aleatoria, se apaga el LED (señal visual) y suena un audio (señal sonora).

  3. Los jugadores deben pulsar su botón lo más rápido posible.

  4. El sistema mide el tiempo de reacción de cada jugador en milisegundos y lo muestra ordenado en pantalla.

  5. Si nadie pulsa, se informa también en pantalla y por voz.

Este comportamiento, completamente programado por los alumnos, incluye detección simultánea de eventos, medición de tiempos, control condicional, gestión de entradas analógicas y digitales, y salida de datos tanto visual como auditiva.

/************************************************* * Código creado para el control del dispositivo * *************************************************/ unsigned long tiempoLed; unsigned long tiempoinicio = 0; unsigned long tiempo1 = 0; unsigned long tiempo2 = 0; unsigned long tiempo3 = 0; unsigned long tiempo4 = 0; const int pinVolumen = A0; int volumen; int boton1pin = 4; int boton2pin = 5; int boton3pin = 6; int boton4pin = 7; int ledrojopin = 9; #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <SoftwareSerial.h> #include <DFRobotDFPlayerMini.h> #define ANCHO 128 // reemplaza ocurrencia de ANCHO por 128 #define ALTO 64 // reemplaza ocurrencia de ALTO por 64 #define OLED_RESET 4 // necesario por la libreria pero no usado Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET); // crea objeto SoftwareSerial mySerial(11, 12); // RX en 11, TX en 12 DFRobotDFPlayerMini myDFPlayer; /* Conexión de OLED Arduino UNO y NANO: SCL (ó SCK): A5; SDA: A4 Arduino MEGA: SCL (ó SCK): 21; SDA: 20 */ struct Numero { int valor; // Número original int id; // Identificador interno (1 para n1, 2 para n2, etc.) const char* alias; // Alias a mostrar (J1, J2, etc.) }; void setup() { // Para DFPLAYER Serial.begin(115200); mySerial.begin(9600); // Inicializa DFPlayer Mini if (!myDFPlayer.begin(mySerial)) { //Serial.println("Error con el DFPlayer Mini"); delay(100); //while (true) // Detiene el código si no se puede inicializar } myDFPlayer.volume(30); // Ajusta el volumen (0-30) // Serial.println("DFPlayer Mini listo para reproducir"); // Para Oled Wire.begin(); // inicializa bus I2C oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); // inicializa pantalla con direccion 0x3C oled.ssd1306_command(SSD1306_SETCONTRAST); // Ajustar el contraste (brillo) oled.ssd1306_command(70); // Ajustar a un nivel bajo (prueba entre 0 y 255) oled.clearDisplay(); // limpia pantalla oled.setTextColor(WHITE); // establece color al unico disponible (pantalla monocromo) oled.display(); digitalWrite(ledrojopin, LOW); pinMode(boton1pin, INPUT_PULLUP); pinMode(boton2pin, INPUT_PULLUP); pinMode(boton3pin, INPUT_PULLUP); pinMode(boton4pin, INPUT_PULLUP); } void loop() { int pinVolumen = analogRead(A0); volumen = map(pinVolumen, 0, 675, 0, 30); myDFPlayer.volume(volumen); oled.clearDisplay(); oled.display(); oled.setTextSize(2); oled.setCursor(0, 0); // ubica cursor en inicio de coordenadas 0,0 oled.print("TOCA"); oled.setCursor(0, 17); oled.print("CUALQUIER"); oled.setCursor(0, 34); oled.print("BOTON PARA"); //oled.setCursor(0, 51); // ubica cursor en inicio de coordenadas 0,0 oled.print("JUGAR "); oled.display(); myDFPlayer.volume(volumen); myDFPlayer.play(7); while ((digitalRead(boton1pin) == HIGH) && (digitalRead(boton2pin) == HIGH) && (digitalRead(boton3pin) == HIGH) && (digitalRead(boton4pin) == HIGH)) tiempoLed = (random(5, 11)) * 1000; analogWrite(ledrojopin, 3); oled.clearDisplay(); oled.display(); oled.setTextSize(2); oled.setCursor(0, 0); // ubica cursor en inicio de coordenadas 0,0 oled.print(" PULSA"); oled.setCursor(0, 17); oled.print(" CUANDO SE"); oled.setCursor(0, 34); oled.print(" APAGUE"); oled.setCursor(0, 51); // ubica cursor en inicio de coordenadas 0,0 oled.print(" EL LED "); oled.display(); myDFPlayer.volume(volumen); myDFPlayer.play(5); delay(tiempoLed); //¡SE APAGA EL LED! analogWrite(ledrojopin, 0); tiempo1 = 0; tiempo2 = 0; tiempo3 = 0; tiempo4 = 0; tiempoinicio = millis(); while (tiempo1 == 0 || tiempo2 == 0 || tiempo3 == 0 || tiempo4 == 0) { if (millis() - tiempoinicio > 3000) { break; } if (digitalRead(boton1pin) == LOW) { if (tiempo1 == 0) { tiempo1 = millis() - tiempoinicio; } } if (digitalRead(boton2pin) == LOW) { if (tiempo2 == 0) { tiempo2 = millis() - tiempoinicio; } } if (digitalRead(boton3pin) == LOW) { if (tiempo3 == 0) { tiempo3 = millis() - tiempoinicio; } } if (digitalRead(boton4pin) == LOW) { if (tiempo4 == 0) { tiempo4 = millis() - tiempoinicio; } } } if (tiempo1 <= 2) { tiempo1 = 3000; } if (tiempo2 <= 2) { tiempo2 = 3000; } if (tiempo3 <= 2) { tiempo3 = 3000; } if (tiempo4 <= 2) { tiempo4 = 3000; } Numero numeros[] = { { tiempo1, 1, "J1" }, { tiempo2, 2, "J2" }, { tiempo3, 3, "J3" }, { tiempo4, 4, "J4" } }; // Algoritmo de burbuja para ordenar según el valor for (int i = 0; i < 3; i++) { for (int j = 0; j < 3 - i; j++) { if (numeros[j].valor > numeros[j + 1].valor) { Numero temp = numeros[j]; numeros[j] = numeros[j + 1]; numeros[j + 1] = temp; } } } // Asignar valores ordenados int A = numeros[0].valor; int B = numeros[1].valor; int C = numeros[2].valor; int D = numeros[3].valor; oled.clearDisplay(); oled.display(); oled.setTextSize(2); if (A != 3000) { oled.setCursor(0, 0); // ubica cursor en inicio de coordenadas 0,0 oled.print("1 "); oled.setCursor(25, 0); oled.print(numeros[0].alias); oled.setCursor(60, 0); oled.print(A); oled.setCursor(110, 0); // ubica cursor en inicio de coordenadas 0,0 oled.print("m"); int pinVolumen = analogRead(A0); volumen = map(pinVolumen, 0, 675, 0, 30); myDFPlayer.volume(volumen); myDFPlayer.play(numeros[0].id); } else { oled.setCursor(0, 0); // ubica cursor en inicio de coordenadas 0,0 oled.print(numeros[0].alias); oled.setCursor(25, 0); oled.print(" no puls"); } if (B != 3000) { oled.setCursor(0, 17); // ubica cursor en inicio de coordenadas 0,0 oled.print("2 "); oled.setCursor(25, 17); oled.print(numeros[1].alias); oled.setCursor(60, 17); oled.print(B); oled.setCursor(110, 17); // ubica cursor en inicio de coordenadas 0,0 oled.print("m"); } else { oled.setCursor(0, 17); // ubica cursor en inicio de coordenadas 0,0 oled.print(numeros[1].alias); oled.setCursor(25, 17); oled.print(" no puls"); } if (C != 3000) { oled.setCursor(0, 34); // ubica cursor en inicio de coordenadas 0,0 oled.print("3 "); oled.setCursor(25, 34); oled.print(numeros[2].alias); oled.setCursor(60, 34); oled.print(C); oled.setCursor(110, 34); // ubica cursor en inicio de coordenadas 0,0 oled.print("m"); } else { oled.setCursor(0, 34); // ubica cursor en inicio de coordenadas 0,0 oled.print(numeros[2].alias); oled.setCursor(25, 34); oled.print(" no puls"); } if (D != 3000) { oled.setCursor(0, 51); // ubica cursor en inicio de coordenadas 0,0 oled.print("4 "); oled.setCursor(25, 51); oled.print(numeros[3].alias); oled.setCursor(60, 51); oled.print(D); oled.setCursor(110, 51); // ubica cursor en inicio de coordenadas 0,0 oled.print("m"); } else { oled.setCursor(0, 51); // ubica cursor en inicio de coordenadas 0,0 oled.print(numeros[3].alias); oled.setCursor(25, 51); oled.print(" no puls"); } if (A == 3000 && B == 3000 && C == 3000 && D == 3000) { oled.clearDisplay(); oled.display(); oled.setCursor(0, 10); oled.print(" NO HA"); oled.setCursor(0, 30); oled.print(" PULSADO"); oled.setCursor(0, 50); oled.print(" NADIE"); int pinVolumen = analogRead(A0); volumen = map(pinVolumen, 0, 675, 0, 30); myDFPlayer.volume(volumen); myDFPlayer.play(6); } oled.display(); digitalWrite(ledrojopin, LOW); delay(6000); oled.clearDisplay(); oled.display(); }

¿Qué han aprendido los alumnos con este proyecto?

Este trabajo va mucho más allá de montar un circuito:

  • Han aprendido a estructurar un programa completo en C, incluyendo la definición y uso de estructuras (struct), ordenamiento de datos (burbujas), manejo de múltiples entradas simultáneas, control de librerías externas (OLED, DFPlayer).

  • Han comprendido cómo se interactúa con hardware real: uso de resistencias de pull-up, lectura analógica para mapear valores de un potenciómetro, escritura PWM en un LED, sincronización entre software y señales físicas.

  • Han desarrollado habilidades de diseño centrado en el usuario: cómo mostrar información clara en pantalla, cómo diseñar una interfaz simple pero efectiva, cómo proporcionar retroalimentación sonora adecuada.

Relación con los objetivos de NorbaIDC

El dispositivo responde directamente a los principios fundamentales del proyecto:

  • Aprendizaje activo y significativo: El alumnado no ha seguido instrucciones cerradas, sino que ha comprendido y adaptado cada parte del diseño.

  • Trabajo cooperativo y por proyectos: Ha sido necesario organizarse, planificar tareas y colaborar para llegar a una solución funcional.

  • Desarrollo competencial: Además de conocimientos técnicos, han ejercitado habilidades clave como la resolución de problemas, la perseverancia, la creatividad o la comunicación.

¿Por qué es mejor que una clase teórica?

Este tipo de experiencias tienen claras ventajas frente al modelo tradicional:

  • Los conocimientos se consolidan mejor al aplicarse en un contexto real.

  • El error se convierte en una fuente de aprendizaje, no en algo que penaliza.

  • Se fomenta la motivación intrínseca: aprender deja de ser una obligación para convertirse en un reto.

  • Los alumnos ven de forma tangible el impacto de lo que hacen: sus decisiones en código afectan al comportamiento del dispositivo.


Conclusión

Proyectos como este no solo hacen que los alumnos aprendan más, sino que aprendan mejor. Desde cómo organizar su lógica hasta cómo presentar los resultados al usuario, han pasado por todo el ciclo de desarrollo de un producto funcional. Y lo han hecho desde cero, tomando decisiones, probando, equivocándose y mejorando.

Este es el tipo de aprendizaje que buscamos con NorbaIDC: auténtico, práctico, autónomo y con sentido.


Profesora: Rosalía González García
Alumnos de 4º de ESO


martes, 25 de marzo de 2025

Proyecto de temporizador eléctrico con Arduino y pantalla OLED

 

Introducción

Dentro de las actividades prácticas realizadas en el aula-taller de Tecnología, se ha desarrollado un proyecto funcional que responde a una necesidad concreta y cotidiana: controlar de forma automática el encendido y apagado de un enchufe eléctrico. Para ello, el alumnado ha construido un programador eléctrico basado en Arduino, capaz de gestionar un temporizador configurable por el usuario y que actúa sobre un relé conectado a una carga eléctrica.

El dispositivo ha sido diseñado y ensamblado por los propios alumnos como parte de un bloque de prácticas orientado a la automatización básica. Durante su desarrollo, se han trabajado competencias clave en programación, montaje electrónico, diseño funcional y documentación de proyectos.

Objetivos del proyecto

Este proyecto persigue múltiples objetivos formativos que van más allá del montaje técnico:

  • Comprender el uso práctico de la automatización sencilla: El dispositivo simula el funcionamiento de un temporizador comercial, algo común en el ámbito doméstico e industrial.

  • Fomentar el pensamiento lógico: A través del desarrollo del código, los estudiantes han debido razonar condiciones, tiempos, estructuras de control y funcionamiento en tiempo real.

  • Relacionar la teoría con un producto tangible: Se aplican contenidos vistos en clase, como estructuras condicionales, variables, entradas y salidas digitales, uso de bibliotecas y gestión de eventos.

  • Trabajar la documentación y la presentación: El alumnado ha elaborado esquemas, listados de materiales y explicaciones que acompañan su prototipo.

  • Fomentar la autonomía y el trabajo en equipo: Cada grupo ha adaptado y ensamblado el sistema, enfrentándose a errores reales de montaje y programación.

Necesidad a la que responde

En la vida diaria existen múltiples situaciones en las que se necesita controlar el encendido de un aparato eléctrico por un tiempo determinado. Por ejemplo:

  • Encender una lámpara durante la noche y que se apague sola.

  • Activar un sistema de ventilación o calefacción de forma temporal.

  • Cargar un dispositivo por un tiempo específico sin riesgo de sobrecarga.

  • Controlar un riego eléctrico que solo debe funcionar ciertos minutos.

Los programadores comerciales cumplen esta función, pero su lógica es cerrada y poco adaptable. Mediante este proyecto, los estudiantes aprenden cómo se diseña uno desde cero, entendiendo las decisiones de diseño que lo hacen fiable y funcional.

Componentes y diseño

Para construir el dispositivo se han utilizado los siguientes componentes:

  • Placa Arduino UNO o Nano: Microcontrolador que gestiona el sistema completo.

  • Pantalla OLED 128x64: Permite mostrar la cuenta regresiva y los mensajes de estado.

  • Dos pulsadores: Uno para incrementar las horas y otro para incrementar los minutos.

  • Módulo relé de 5V: Activa o desactiva físicamente el enchufe conectado.

  • LED indicador: Muestra el estado de funcionamiento.

  • Cables, resistencias internas y protoboard: Permiten interconectar los elementos.

Implementación con Arduino UNO

Implementación con Arduino nano

Implementación con Arduino nano

El funcionamiento se basa en la detección de pulsaciones. Cada vez que el usuario pulsa un botón, se añade una cantidad de tiempo al temporizador. Este tiempo se muestra en la pantalla OLED y se descuenta segundo a segundo hasta llegar a cero. Al finalizar, el relé se apaga y corta la corriente al enchufe.

Además, si el sistema detecta inactividad prolongada, se apaga de forma preventiva como medida de ahorro energético y seguridad.

unsigned long tiempo = 0UL; unsigned long tiempo1 = 0UL; unsigned long tiempo2 = 0UL; unsigned long tiempo3 = 0UL; unsigned long tiempoActual1 = 0UL; unsigned long tiempoActual2 = 0UL; unsigned long nhoras = 0UL; unsigned long nminutos = 0UL; unsigned long decremento; bool contadorActivo = false; unsigned long horas; unsigned long minutos; unsigned long segundos; int relepin = 10; int ledpin = 9; int buttonApin = 5; int buttonBpin = 4; // PARA OLED #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define ANCHO 128 #define ALTO 64 #define OLED_RESET 4 Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET); /* Conexión de OLED Arduino UNO y NANO: SCL (ó SCK): A5; SDA: A4 Arduino MEGA: SCL (ó SCK): 21; SDA: 20 */ void setup() { Serial.begin(9600); Wire.begin(); oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); oled.ssd1306_command(SSD1306_SETCONTRAST); oled.ssd1306_command(70); pinMode(relepin, OUTPUT); pinMode(ledpin, OUTPUT); digitalWrite(relepin, HIGH); analogWrite(ledpin, 2); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); oled.clearDisplay(); oled.setTextColor(WHITE); oled.setCursor(0, 0); oled.setTextSize(2); oled.print("Tiempo:"); oled.setCursor(3, 20); oled.setTextSize(3); oled.print("Elige Tiempo"); oled.display(); } void loop() { tiempoActual2 = millis(); tiempo3 = tiempoActual2 - tiempo2; if (digitalRead(buttonApin) == LOW) { tiempo2 = tiempoActual2; nhoras += 3600000UL; if (tiempo > 4 * 3600000) { nhoras = 0; } tiempo = nhoras + nminutos; contadorActivo = true; delay(200); } if (digitalRead(buttonBpin) == LOW) { tiempo2 = tiempoActual2; nminutos += 900000UL; if (nminutos > 4 * 900000) { nminutos = 0; } tiempo = nhoras + nminutos; contadorActivo = true; delay(200); } if (contadorActivo && tiempo > 0) { tiempoActual1 = millis(); if (tiempoActual1 - tiempo1 > 1000) { tiempo -= 1000; tiempo1 = tiempoActual1; } horas = tiempo / 3600000; minutos = (tiempo % 3600000) / 60000; segundos = (tiempo % 60000) / 1000; oled.clearDisplay(); oled.setTextColor(WHITE); oled.setCursor(0, 0); oled.setTextSize(2); oled.print("Tiempo:"); oled.setCursor(2, 30); oled.setTextSize(3); if (horas < 10) { oled.print("0"); } oled.print(horas); oled.print(":"); if (minutos < 10) { oled.print("0"); } oled.print(minutos); oled.setTextSize(2); oled.print(":"); if (segundos < 10) { oled.print("0"); } oled.print(segundos); oled.display(); } if (tiempo <= 0 && tiempo3 > 15000UL || (!contadorActivo && tiempo3 > 15000UL)) { oled.clearDisplay(); oled.setTextColor(WHITE); oled.setCursor(0, 0); oled.setTextSize(2); oled.print("Tiempo:"); oled.setCursor(12, 30); oled.setTextSize(2); oled.print("BYE, BYE!"); oled.display(); digitalWrite(relepin, LOW); analogWrite(ledpin, LOW); } }

Ventajas sobre la clase teórica

Aunque los contenidos técnicos de este proyecto podrían explicarse mediante teoría, su implementación práctica ofrece ventajas evidentes:

  • Aplicación directa: Los alumnos no solo ven cómo funciona un temporizador, sino que lo crean, configuran y comprenden sus limitaciones.

  • Aprendizaje significativo: El conocimiento adquirido tiene sentido porque se pone en contexto con un objetivo funcional.

  • Mayor retención: Al enfrentarse a problemas reales (como errores de conexión, errores de compilación o falta de respuesta), se ven obligados a comprender los conceptos para solucionarlos.

  • Motivación: El hecho de que el proyecto tenga una utilidad real aumenta el interés del alumnado y la implicación en su desarrollo.

  • Evaluación objetiva: El funcionamiento del dispositivo es un criterio claro y objetivo para comprobar la comprensión del alumno.

Además, los estudiantes desarrollan habilidades transversales como la planificación, la toma de decisiones, el análisis de errores y la mejora continua, habilidades difíciles de adquirir en una clase puramente expositiva.

Relación con el currículo y NorbaIDC

Este proyecto se enmarca claramente dentro del currículo oficial de la asignatura de Tecnología, ya que se abordan los siguientes bloques de contenido:

  • Tecnología de control y robótica: Programación de dispositivos físicos, uso de sensores y actuadores, control de procesos.

  • Diseño y prototipado: Construcción de un sistema funcional mediante componentes electrónicos y estructura modular.

  • Cultura tecnológica y sostenibilidad: Aplicación de tecnologías que permiten un uso más eficiente de la energía.

  • Comunicación técnica: Uso de esquemas, documentación, y exposición del proyecto con soporte digital.

Por otro lado, este tipo de práctica se alinea perfectamente con el enfoque metodológico de NorbaIDC, que apuesta por una enseñanza activa, basada en la resolución de problemas, el aprendizaje cooperativo y la conexión con el entorno. En particular:

  • Aprendizaje por proyectos: El alumnado trabaja sobre un reto concreto, con un producto final visible y funcional.

  • Competencia digital: Se fomenta el uso de herramientas digitales tanto en la programación como en la documentación del proceso.

  • Evaluación competencial: La valoración del proyecto se basa no solo en el resultado final, sino en el proceso seguido, las decisiones tomadas y la capacidad de explicarlo.

Este tipo de experiencias reflejan el espíritu de NorbaIDC: una educación técnica aplicada, crítica, participativa y alineada con el siglo XXI.

Posibles mejoras y ampliaciones

El dispositivo, tal como ha sido implementado, cumple su función, pero abre la puerta a múltiples mejoras que podrían explorarse en futuras prácticas o como proyecto personal por parte del alumnado:

  • Uso de una interfaz con más botones o un teclado numérico para facilitar la introducción del tiempo.

  • Implementación de una memoria EEPROM para recordar el último tiempo configurado.

  • Añadir un módulo de reloj en tiempo real (RTC) para programar horas exactas de encendido/apagado.

  • Incorporar control por Bluetooth o por app móvil para activarlo remotamente.

  • Diseño de una caja impresa en 3D que proteja los componentes y lo haga visualmente más atractivo.

Estas posibles ampliaciones permiten a cada estudiante o grupo seguir explorando y personalizando su proyecto, aplicando nuevas ideas y conocimientos adquiridos en otras unidades.

Conclusión

El proyecto de programador eléctrico con Arduino no es simplemente una actividad puntual en el aula de Tecnología. Representa una experiencia de aprendizaje completa que integra teoría, práctica, resolución de problemas, creatividad y utilidad real.

El alumnado no solo aprende cómo funciona un temporizador, sino que adquiere una comprensión profunda del proceso de diseño, construcción y programación de un dispositivo tecnológico. Además, lo hace en un entorno colaborativo, con libertad para experimentar, equivocarse y mejorar.

Este tipo de experiencias consolidan el aprendizaje, motivan y dotan de sentido a los contenidos curriculares. También forman ciudadanos con capacidad crítica y técnica, preparados para afrontar retos reales en un mundo cada vez más automatizado y digitalizado.


Profesora: Rosalía González García
Alumnos: 4º ESO

lunes, 3 de marzo de 2025

Automatización y reciclaje: diseñando una barrera de acceso inteligente

En NorbaIDC seguimos apostando por la innovación aplicada al aprendizaje. En esta ocasión, los alumnos de 2º de Bachillerato se enfrentarán a un reto tecnológico y sostenible: el diseño y construcción de una barrera de acceso automatizada, con la idea de ordenar el tráfico de la entrada en el Centro. Este proyecto no solo combina conocimientos de programación, electrónica y mecánica, sino que también fomenta el trabajo en equipo y el uso responsable de materiales reciclados.
Prototipo creado por alumnos

Vista detalle del mecanismo y motor

Vista detalle de la barrera y la fuente de alimentación

Un reto con aplicación real

El objetivo es claro: desarrollar un sistema de control de acceso que regule de manera eficiente el paso de vehículos y peatones, asegurando un tránsito ordenado y seguro. Para ello, los alumnos diseñarán una barrera que se active de forma automática, integrando sensores capaces de detectar la presencia de vehículos y proporcionar información sobre el estado del estacionamiento, como “ocupado” o “vacío”.

La estructura y el sistema de automatización estarán guiados por las indicaciones del siguiente recurso técnico: microlog.es/mininoticias/4000/4226-parking-arduino.pdf. Sin embargo, la creatividad y la capacidad de adaptación de los estudiantes jugarán un papel fundamental en la personalización del proyecto.

Contenido del pdf de referencia usado por los alumnos

Tecnología, sostenibilidad y aprendizaje práctico

Uno de los valores fundamentales de NorbaIDC es el enfoque interdisciplinar y sostenible de los proyectos. En este caso, la barrera se construirá mayoritariamente con materiales reutilizados y reciclables, reduciendo así el impacto ambiental y el coste del prototipo.

Desde el punto de vista técnico, los alumnos trabajarán con sensores y sistemas de control para optimizar el funcionamiento de la barrera, adquiriendo conocimientos aplicados sobre electrónica y automatización. Además, la actividad fomenta habilidades esenciales como el pensamiento lógico, la resolución de problemas y la organización de proyectos.

Más allá de la construcción: evaluación y presentación

El proyecto no termina con la construcción de la barrera. Una vez verificado su funcionamiento, cada equipo deberá exponer su trabajo ante la clase, explicando:

  • El proceso de diseño y construcción
  • Las dificultades encontradas y cómo las resolvieron
  • Los resultados obtenidos
  • Una rúbrica de evaluación del trabajo en equipo y una autoevaluación individual

Este paso final no solo permite reflexionar sobre el aprendizaje adquirido, sino que también ayuda a desarrollar la competencia comunicativa y la capacidad de análisis.

Conclusión: tecnología con propósito

Este proyecto es un claro ejemplo de cómo la tecnología puede aplicarse a la vida real desde un enfoque didáctico y sostenible. La combinación de automatización, reciclaje y aprendizaje práctico convierte esta experiencia en una oportunidad única para que los alumnos de 2º de Bachillerato pongan en práctica sus conocimientos de una forma creativa y significativa.

Con cada nuevo desafío, en NorbaIDC seguimos demostrando que la mejor manera de aprender es haciendo. Este es solo uno de los muchos proyectos que llevamos a cabo para que la educación no se limite a los libros, sino que trascienda al mundo real.

Autora: Manuela Alfaro Sánchez
Alumnos de 1º de Bachillerato