LEGO, Arduino e Impresión 3D: barrera automática

En muchos proyectos con Arduino, ya sea para aprender o simplemente por diversión, solemos usar materiales como acrílico, plástico o incluso piezas recicladas. Sin embargo, una alternativa cada vez más popular y creativa es usar LEGO.

Aunque LEGO no es naturalmente compatible con componentes electrónicos, hoy en día existen muchos modelos 3D en sitios como Instructables o Thingiverse que permiten adaptar sensores y piezas electrónicas a los bloques. Por ejemplo, te comparto aquí un archivo STL que facilita el montaje de un sensor ultrasónico sobre una estructura LEGO, lo que hace mucho más sencillo y estético armar nuestros proyectos.

Este proyecto en particular está pensado para quienes alguna vez han querido automatizar una barrera o pluma de acceso con electrónica. Utilizando Arduino, un sensor ultrasónico, un servo, un buzzer y LEDs, diseñamos una barrera automática que se activa al detectar un objeto a una distancia determinada. Además, cuenta con un contador de activaciones y una alerta sonora con buzzer. Todo esto montado sobre estructura de LEGO, con el sensor ultrasónico bien fijado gracias a una pieza impresa en 3D, y el resto del circuito discretamente colocado detrás.

Te comparto todo el proyecto, junto con fotos del armado, para que puedas inspirarte y comenzar a construir tu propia versión.

Materiales

  • Arduino Uno (o compatible)
  • Sensor ultrasónico HC-SR04
  • Servo SG90 o MG995
  • Display LCD 16×2 con interfaz I2C
  • Buzzer pasivo o activo
  • Cables de conexión (jumper wires)
  • Protoboard o placa de pruebas

Circuito

3D

Código

#include <Wire.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>  

#define TRIG_PIN 7
#define ECHO_PIN 6
#define SERVO_PIN 9
#define BUZZER_PIN 8  // Pin donde conectamos el buzzer

Servo miServo;
LiquidCrystal_I2C lcd(0x27, 16, 2);  // Dirección I2C 0x27 (puede variar)

int contadorAperturas = 0;
bool barreraAbierta = false;

void setup() {
    Serial.begin(9600);
    
    pinMode(TRIG_PIN, OUTPUT);
    pinMode(ECHO_PIN, INPUT);
    
    miServo.attach(SERVO_PIN);
    miServo.write(0);  // Barrera cerrada por defecto
    
    
    pinMode(BUZZER_PIN, OUTPUT); // Configurar buzzer como salida

    lcd.init();  
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("Distancia:");
    lcd.setCursor(0, 1);
    lcd.print("Aperturas: 0");
}

void loop() {
    long duracion;
    int distancia;

    // Medición del sensor ultrasónico
    digitalWrite(TRIG_PIN, LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN, LOW);

    duracion = pulseIn(ECHO_PIN, HIGH);
    distancia = duracion * 0.034 / 2;

    // Mostrar distancia en LCD
    lcd.setCursor(10, 0);
    lcd.print("    ");  // Limpiar valores anteriores
    lcd.setCursor(10, 0);
    lcd.print(distancia);
    lcd.print("cm");

    Serial.print("Distancia: ");
    Serial.print(distancia);
    Serial.println(" cm");

    if (distancia > 0 && distancia <= 20) {
        if (!barreraAbierta) { // Solo cuenta si la barrera estaba cerrada
            contadorAperturas++;

            // Mostrar en LCD
            lcd.setCursor(11, 1);
            lcd.print("    ");  // Limpiar valores anteriores
            lcd.setCursor(11, 1);
            lcd.print(contadorAperturas);

            // Sonido del buzzer cuando se abre la barrera
            tone(BUZZER_PIN, 1000); // Frecuencia de 1000 Hz
            delay(500); // Sonido de 0.5s
            noTone(BUZZER_PIN); // Apagar buzzer

            barreraAbierta = true;
        }
        miServo.write(90);
        delay(3000);
    } else {
        miServo.write(0);
        barreraAbierta = false;
    }

    delay(500);
}

Mi versión

Aplicaciones

  • 🚗 Control de accesos
  • 🚶‍♂️ Barrera de entrada para personas
  • 🎮 Automatización de juegos con LEGO
  • 🎓 Proyectos educativos de electrónica y programación

Versiones y mejoras posibles

  • Agregar comunicación Bluetooth o WiFi para monitorear aperturas en tiempo real.
  • Usar una batería recargable para hacerlo portátil.
  • Integrar reconocimiento NFC o RFID para permitir acceso solo a tarjetas autorizadas.