This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Mostrando las entradas con la etiqueta Arduino Uno. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Arduino Uno. Mostrar todas las entradas

lunes, 2 de septiembre de 2024

Proyecto Inicial: Alarma de Proximidad para el Hogar con Arduino y Sensor PIR - Paso a Paso Educativo.

Proyecto Inicial: Alarma de Proximidad para el Hogar con Arduino y Sensor PIR - Proyecto Educativo

¡Crea una Alarma de Proximidad para tu Hogar con Arduino y un Sensor PIR! Un Proyecto Educativo y Seguro

¡Bienvenidos a un emocionante proyecto educativo de electrónica! Hoy vamos a crear una Alarma de Proximidad para el Hogar usando Arduino y un Sensor de Movimiento PIR. Esta alarma es perfecta para aprender cómo funcionan los sistemas de seguridad modernos y cómo los podemos implementar fácilmente en nuestros hogares. Además, entenderemos cómo programar en Arduino y a interactuar con sensores y otros componentes electrónicos. ¡Vamos allá! 🚀

/>

Alarma de Proximidad con Sensor PIR y Arduino: Aprende a crear un sistema de seguridad con Arduino para tu hogar.

Enlace al Proyecto en Tinkercad - Alarma de Proximidad

Explora cómo funciona este proyecto y experimenta con el circuito interactivo en Tinkercad. Haz clic en el siguiente enlace para acceder: Alarma de Proximidad - Proyecto en Tinkercad.

Componentes Necesarios

Para realizar este proyecto, necesitarás los siguientes componentes:

  • 1 x Arduino Uno R3
  • 1 x Sensor de Movimiento PIR
  • 1 x Buzzer o Bocina
  • 2 x LEDs (indicadores visuales)
  • 2 x Resistencias de 220 Ω (para los LEDs)
  • Cables de Conexión
  • 1 x Protoboard
  • Fuente de Alimentación (USB de PC o batería externa)

Todos los materiales necesarios los encontrarás en los siguientes enlaces:

Configuración del Circuito

Diagrama de Conexión

Conexiones:

  • Sensor PIR:
    • Conecta VCC a 5V del Arduino.
    • Conecta GND a GND del Arduino.
    • Conecta OUT al pin A0 de Arduino.
  • Buzzer o Bocina:
    • Conecta un pin del buzzer al pin 6 de Arduino.
    • Conecta el otro pin del buzzer a GND.
  • LEDs:
    • LED1: Ánodo al pin digital 5 de Arduino, cátodo a GND a través de una resistencia de 220Ω.
    • LED2: Ánodo al pin digital 7 de Arduino, cátodo a GND a través de una resistencia de 220Ω.

Código para la Alarma de Proximidad con Arduino

¡Es hora de programar! Aquí tienes el código completo para tu proyecto de alarma de proximidad. Simplemente copia y pega este código en tu Arduino IDE para empezar:


int codigo;
bool estado = false;  // Cambiado a tipo booleano para mayor claridad
const int led1 = 5;
const int led2 = 7;
const int bocina = 6;
const int sensor = A0;
const int contra = 1234;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(sensor, INPUT);
  pinMode(bocina, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (!estado) {  // Si la alarma no está activada
    Serial.println("🔒 INGRESA CÓDIGO DE ACTIVACIÓN");
    while (Serial.available() == 0) {}  // Esperar hasta que haya datos disponibles
    codigo = Serial.parseInt();
    if (codigo == contra) {  // Si el código es correcto
      Serial.println("✅ ALARMA ACTIVADA");
      estado = true;  // Cambia el estado a activado
    }
  }

  if (estado) {  // Si la alarma está activada
    Serial.println("🔔 ALARMA ACTIVADA - INGRESE CÓDIGO PARA DESACTIVAR");
    if (Serial.available() > 0) {
      codigo = Serial.parseInt();
      if (codigo == contra) {  // Si el código es correcto
        Serial.println("🛑 ALARMA DESACTIVADA SIN MOVIMIENTO");
        estado = false;  // Cambia el estado a desactivado
        noTone(bocina);  // Apagar la bocina
        digitalWrite(led1, LOW);  // Apagar LED1
        digitalWrite(led2, LOW);  // Apagar LED2
      }
    }
  }

  if (estado && digitalRead(sensor) == HIGH) {  // Si la alarma está activada y se detecta movimiento
    Serial.println("🚨 MOVIMIENTO DETECTADO");
    Serial.println("⏳ INGRESE EL CÓDIGO PARA DESACTIVAR LA ALARMA");

    while (estado) {  // Mientras la alarma esté activada
      tone(bocina, 2500);  // Sonar la bocina
      digitalWrite(led1, LOW);  // Parpadear LED1 y LED2
      digitalWrite(led2, HIGH);
      delay(1000);
      digitalWrite(led1, HIGH);
      digitalWrite(led2, LOW);
      delay(1000);

      if (Serial.available() > 0) {  // Si se ingresa un código
        codigo = Serial.parseInt();
        if (codigo == contra) {  // Si el código es correcto
          Serial.println("🔕 ALARMA DESACTIVADA");
          noTone(bocina);  // Apagar la bocina
          digitalWrite(led1, LOW);  // Apagar LED1
          digitalWrite(led2, LOW);  // Apagar LED2
          estado = false;  // Cambiar el estado a desactivado
        }
      }
    }
  }
}

        

Explicación del Código

A continuación, explicamos cada línea del código para ayudarte a comprender su funcionamiento y a desarrollar un pensamiento crítico sobre su estructura y lógica:

  1. Variables Globales: Se declaran las variables globales como codigo, estado, led1, led2, bocina, sensor, y contra, que controlan el comportamiento de la alarma y su activación/desactivación.
  2. void setup() { ... }: La función setup() configura los pines de los LEDs, el buzzer y el sensor como entradas o salidas y también inicia la comunicación serial para interactuar con el usuario a través del monitor serie.
  3. void loop() { ... }: La función loop() se ejecuta repetidamente en un bucle infinito. Dentro del bucle, se realizan las siguientes tareas:
    • Activación de Alarma: Si la alarma no está activada, solicita un código de activación a través del monitor serie.
    • Desactivación de Alarma: Una vez activada la alarma, puede desactivarse introduciendo el código correcto.
    • Detección de Movimiento: Si la alarma está activada y el sensor PIR detecta movimiento, la bocina suena y los LEDs parpadean. La alarma puede desactivarse introduciendo el código correcto.

Problemas Comunes y Soluciones

  • El buzzer no suena: Verifica que las conexiones del buzzer sean correctas y que el pin de control esté correctamente asignado en el código.
  • El sensor PIR no detecta movimiento: Asegúrate de que el sensor esté conectado correctamente y de que esté bien orientado para detectar movimiento en el área deseada.
  • El código no se registra en el monitor serie: Verifica que la velocidad de baudios en el monitor serie esté configurada a 9600 y que el puerto serie correcto esté seleccionado.

Desafío para el Usuario

¿Cómo podrías modificar el proyecto para agregar un segundo sensor PIR para cubrir un área más amplia? ¡Déjanos tu idea en los comentarios!

Puedes agregar otro sensor PIR en una posición diferente y modificar el código para verificar ambos sensores. Aquí tienes un ejemplo de cómo hacerlo:


// Añade estas líneas al código existente

const int sensor2 = A1; // Segundo sensor PIR

void setup() {
  pinMode(sensor2, INPUT); // Configura el segundo sensor como entrada
}

void loop() {
  // Si cualquiera de los dos sensores detecta movimiento
  if (estado && (digitalRead(sensor) == HIGH || digitalRead(sensor2) == HIGH)) {
    // El resto del código de detección se mantiene igual
  }
}

        

¡Espero que disfrutes creando este proyecto tanto como yo disfruto compartiéndolo contigo! Recuerda que la práctica hace al maestro, así que sigue experimentando y adaptando este código a nuevas ideas. ¡Nos encantaría ver tus creaciones! 🚀

Si te ha gustado este artículo, por favor compártelo y suscríbete a nuestro blog para más proyectos interesantes. ¡Hasta la próxima aventura tecnológica!

domingo, 18 de agosto de 2024

Proyecto Inicial - Ventana Automatizada - Aprende a automatizar sistemas a través de servomotores , fotoresistencia LDR y Arduino UNO.

Ventana Automatizada con Fotoresistencia y Arduino - Proyecto Educativo

¡Automatiza tu Ventana con Arduino! Un Proyecto Inteligente y Divertido

¡Hola, entusiasta de la tecnología! Hoy te traigo un proyecto innovador que te ayudará a mejorar la eficiencia energética y la comodidad en tu hogar: Ventana Automatizada. Utilizaremos un Arduino Uno, un servomotor y una fotoresistencia para abrir o cerrar una ventana automáticamente en función de la cantidad de luz en la habitación. ¡Es una manera genial de poner la tecnología al servicio de tu vida diaria! 😄

Automatización de Ventanas con Arduino y Fotoresistencia: Proyecto educativo con Arduino para controlar una ventana según la luz ambiental.

Enlace al Proyecto en Tinkercad - Ventana Automatizada

Explora cómo funciona este proyecto y experimenta con el circuito interactivo en Tinkercad. Haz clic en el siguiente enlace para acceder: Ventana Automatizada - Proyecto en Tinkercad.

Componentes Necesarios

  • Arduino UNO
  • Servomotor
  • Fotoresistencia (LDR)
  • Resistencia fija (10K ohm)
  • Cables y protoboard

Todos los materiales necesarios los encontrarás en los siguientes enlaces:

Diagrama de Conexión

Componentes Necesarios:

  • Arduino UNO
  • Servomotor
  • Fotoresistencia (LDR)
  • Resistencia fija (10K ohm)
  • Cables y protoboard

Conexiones:

  • Fotoresistencia:
    • Conecta un terminal de la fotoresistencia a 5V.
    • Conecta el otro terminal de la fotoresistencia a un terminal de la resistencia fija de 10K ohm.
    • Conecta el otro terminal de la resistencia fija a GND.
    • Conecta el punto medio (entre la fotoresistencia y la resistencia fija) al pin A0 de Arduino.
  • Servomotor:
    • Conecta el cable de señal del servomotor al pin digital 3 de Arduino.
    • Conecta el cable de alimentación del servomotor a 5V.
    • Conecta el cable de tierra del servomotor a GND.

Código para Control de Ventanas con Fotoresistencia

¡Aquí tienes el código completo! Puedes copiarlo fácilmente haciendo clic en el botón "Copiar Código".


// Incluimos la librería Servo para controlar el servomotor
#include 

// Creamos un objeto Servo para controlar el servomotor
Servo servo_3;
int lightSensorPin = A0; // Pin donde está conectada la fotoresistencia
int threshold = 500; // Umbral para la luz (ajustar según sea necesario)

void setup() {
  pinMode(lightSensorPin, INPUT); // Configuramos el pin del sensor de luz como entrada
  Serial.begin(9600); // Iniciamos la comunicación serie a 9600 baudios
  servo_3.attach(3, 500, 2500); // Adjuntamos el servomotor al pin 3 con un rango de pulsos
}

void loop() {
  int lightLevel = analogRead(lightSensorPin); // Leemos el nivel de luz del sensor
  Serial.println(lightLevel); // Mostramos el nivel de luz en el Monitor Serie

  if (lightLevel < threshold) {
    // Oscuridad - Cerrar la ventana
    servo_3.write(180);
  } else {
    // Luz - Abrir la ventana
    servo_3.write(0);
  }
  delay(10); // Retardo para mejorar el rendimiento de la simulación
}

        

Explicación del Código

A continuación, explicamos cada línea del código para ayudarte a comprender su funcionamiento y a desarrollar un pensamiento crítico sobre su estructura y lógica:

  1. #include <Servo.h>: Esta línea incluye la librería Servo.h, que proporciona las funciones necesarias para controlar un servomotor con Arduino. Esta librería es esencial para manipular el servomotor mediante comandos sencillos.
  2. Servo servo_3;: Aquí creamos un objeto llamado servo_3 de tipo Servo. Este objeto representará el servomotor que controlaremos en el código, permitiéndonos manejarlo como una entidad con propiedades y métodos.
  3. int lightSensorPin = A0;: Definimos una variable entera lightSensorPin que almacena el número del pin de Arduino al que está conectada la fotoresistencia. En este caso, usamos el pin A0, que es un pin analógico capaz de leer señales variables.
  4. int threshold = 500;: Esta línea establece el umbral de luz con el que el sistema decidirá si abrir o cerrar la ventana. Si el nivel de luz es menor que 500, consideramos que es "oscuro" y el servomotor cerrará la ventana.
  5. void setup() { ... }: La función setup() se ejecuta una sola vez al iniciar el Arduino. Aquí se configuran las entradas y salidas, y se establece la comunicación serial:
    • pinMode(lightSensorPin, INPUT); configura el pin lightSensorPin como una entrada, para que pueda leer valores de la fotoresistencia.
    • Serial.begin(9600); inicia la comunicación serial a 9600 baudios, lo que permite enviar datos al monitor serie para monitoreo en tiempo real.
    • servo_3.attach(3, 500, 2500); vincula el servomotor al pin digital 3 de Arduino, con un rango de pulso específico que determina su movimiento.
  6. void loop() { ... }: La función loop() se ejecuta repetidamente en un bucle infinito. Aquí es donde se realizan las lecturas del sensor y los movimientos del servomotor:
    • int lightLevel = analogRead(lightSensorPin); lee el nivel de luz de la fotoresistencia y lo guarda en la variable lightLevel. Este valor puede variar de 0 (oscuridad total) a 1023 (luz máxima).
    • Serial.println(lightLevel); imprime el valor de lightLevel en el Monitor Serie, permitiendo visualizar los cambios de luz en tiempo real.
    • if (lightLevel < threshold) { ... } verifica si el nivel de luz es inferior al umbral (threshold). Si es así, el código dentro del bloque se ejecuta:
      • servo_3.write(180); mueve el servomotor a 180 grados, cerrando la ventana porque se considera "oscuro".
    • else { ... } Si el nivel de luz es igual o superior al umbral, se ejecuta el bloque de código en else:
      • servo_3.write(0); mueve el servomotor a 0 grados, abriendo la ventana porque se considera "luz".
    • delay(10); introduce una pausa de 10 milisegundos antes de la siguiente iteración del bucle, mejorando el rendimiento de la simulación y evitando lecturas inestables del sensor.

Problemas Comunes y Soluciones

  • El servomotor no se mueve: Verifica que las conexiones sean correctas y que el servomotor esté recibiendo suficiente alimentación. Revisa el pin de control y asegúrate de que esté conectado al pin 3 de Arduino.
  • El sensor de luz no responde: Asegúrate de que la fotoresistencia esté conectada correctamente y de que el divisor de voltaje esté funcionando. Revisa las conexiones a 5V, GND, y el pin A0 de Arduino.
  • El valor de luz en el monitor serie no cambia: Puede ser que el umbral esté configurado incorrectamente. Ajusta el valor del umbral (threshold) para adaptarlo a las condiciones de luz de tu entorno.

Desafío para el Usuario

¿Cómo podrías modificar el proyecto para incluir un segundo servomotor que controle otra ventana al mismo tiempo, pero con un umbral de luz diferente? ¡Déjanos tu idea en los comentarios!

Podrías declarar otro objeto Servo y un nuevo umbral para el segundo servomotor. Luego, duplicarías la lógica en el loop() para controlar cada servo de manera independiente:


// Añade estas líneas al código existente

Servo servo_4; // Segundo servomotor
int threshold2 = 700; // Umbral diferente para el segundo servomotor

// En el setup():
servo_4.attach(4, 500, 2500); // Adjuntamos el segundo servomotor al pin 4

// En el loop():
if (lightLevel < threshold2) {
  servo_4.write(180); // Control del segundo servomotor
} else {
  servo_4.write(0);
}

        

¡Espero que disfrutes creando este proyecto tanto como yo disfruto compartiéndolo contigo! Recuerda que la práctica hace al maestro, así que sigue experimentando y adaptando este código a nuevas ideas. ¡Nos encantaría ver tus creaciones! 🚀

Si te ha gustado este artículo, por favor compártelo y suscríbete a nuestro blog para más proyectos interesantes. ¡Hasta la próxima aventura tecnológica!