Ventilador Inteligente

Diviértete con esta actividad STEAM construyendo y programando un ventilador inteligente para estar fresquito con el Maker Control Kit y los componentes adicionales incluidos con la promoción de verano, motor con hélice, sensor PIR y sensor de temperatura

NIVEL DE DIFICULTAD: Principiante.

DURACIÓN DEL EJERCICIO:  30 min.

MATERIALES:

¿Qué es un sensor PIR?

El sensor PIR detecta movimiento.

Lo usaremos para que nuestro ventilador sólo funcione cuando estés delante y la temperatura sea suficientemente alta, de este modo será más eficiente y no gastaras las pilas si no estás disfrutando de él.

CONEXIONES:

  • DIO Pin 3 – Sensor PIR
  • DIO Pin5 – Botón
  • DIO Pin9 – Motor
  • DIO Pin12 – LED
  • A0 – Sensor temperatura

1. CONSTRUYE:

Descarga nuestra plantilla y sigue los pasos del vídeo para montar tu ventilador. ¡¡Recuerda que lo puedes personalizar a tu gusto!!

2. PROGRAMA:

Descárgarte el progama para mBlock 5 y para Arduino IDE 

Cárgalo en la placa 4in1 basada en Arduino ¡y ya lo tendrás listo! Si necesitas ayuda, revisa nuestra página de primeros pasos

A continuación te mostramos el código que hace funcionar tu ventilador. Revisa los comentarios para entender que hace cada parte y juega modificando los parámetros. ¡Explora y aprende!

Abre el programa y copia el siguiente código:

Te recomendamos cargar y subir el código para que tu ventilador funcione de forma autónoma, aunque también funcionará “en vivo” mientras esté conectado al PC.

De forma autónoma lo puedes conectar y te mostrará información sobre la temperatura a través del puerto serie. Para poder visualizarlo deberás usar el monitorizador de puertos de Arduino IDE ya que mBlock no dispone de esta funcionalidad.

Abre el programa Arduino y, una vez en él, copia el siguiente programa:

 int activo;
  float temperatura;
  float temporal;
  int i;
  int  movimiento;

void setup() {

  pinMode(5,INPUT);   // Botón
  pinMode(11,OUTPUT); // LED
  pinMode(3,INPUT);   // PIR
  pinMode(9,OUTPUT);  // Motor
  pinMode(A0+0,INPUT); // Sensor temperatura
  Serial.begin(115200);

  // Inicializamos variables

  activo = 0;
  temperatura = 0;
  i = 0;
  movimiento = 0;
  temporal = 0;

}

// Funcion para leer temperatura y sacar datos por puerto serie
void readtemp_N (double iteracion){

  // Leemos temperatura. Hacemos 100 lecturas del sensor, promediamos y sacamos valor de temperatura más estable
  if(iteracion < 100){ temporal += analogRead(A0+0); i += 1; }else{ temporal = temporal / i; temporal = (temporal * 5) / 1024; temporal = ((temporal - 0.57)) * 100; temperatura = ((temperatura + temporal)) / 2; temporal = 0; i = 0; if((activo == 1) && (movimiento > 0)){
          Serial.println(String("Sistema encendido - Movimiento detectado - ") + String(String(temperatura) + String(" grados")));
      }else{
          if(activo == 1){
              Serial.println(String("Sistema encendido - No movimiento - ") + String(String(temperatura) + String(" grados")));
          }else{
              Serial.println(String("Sistema desactivado - ") + String(String(temperatura) + String(" grados")));
          }
      }
  }
}

void loop() {
      // función con bloques para leer temperatura
      readtemp_N(i);

      // Sistema activo
      if(activo == 1){
          // Vigilamos botón, si se pulsa desactivamos sistema y apagamos led indicador
          if(digitalRead(5)){
              delay(200);
              activo = 0;
              digitalWrite(11,0);

          }
          if(temperatura > 20){
              // Si temperatura mayor de 20º y detectamos movimiento se debe enceder motor. Definimos un cuenta atras que se
              // inicializa cada vez que se detecta movimiento y mantiene el motor en marcha unos segundos tras no detectar movimiento
              if(digitalRead(3)){
                  movimiento = 300;
              }else{
                  movimiento += -1;
              }
              if(movimiento > 0){
                  digitalWrite(9,1);
              }else{
                  digitalWrite(9,0);
              }

          }else{
              // Temperatura menor de 20º. Paramos motor
              digitalWrite(9,0);
          }
      }else{
          // Sistema inactivo, Apagamos motor y vigilamos botÓn.
          digitalWrite(9,0);
          if(digitalRead(5)){
              delay(200);
              activo = 1;
              digitalWrite(11,1);
          }
      }
}

Carga el código y ¡disfruta de tu ventilador!
Puedes ver la temperatura que indica el sensor mediante el monitor serie de Arduino IDE (herramientas), a la velocidad de 115200 baudios.

RESULTADO DEL EJERCICIO:

0 0

0