SISTEMA DE RELAJAMIENTO CON ARDUINO

 DESCRIPCION DEL PROYECTO

La idea consta de usar un sensor de temperatura para medir el calor en una casa o en algún otro lugar, y con un ventilador poder regularla (para esta cuestión utilizaremos un motor de corriente directa para hacer la ventilación).

El funcionamiento del motor estará dado de la siguiente manera:

si la temperatura medida es mas de 30 grado centígrados, se le mandara al motor datos de 500 bits para hacerlo funcionar. En cambio, si es menor o igual a 30°C, se le mandará datos, de acuerdo a la temperatura, o sea que a medida que baje o suba la temperatura, el funcionamiento del motor será proporcional a ese cambio.

Se contará también con un sensor PIR el cual nos detecta si hay movimientos, si los hubiera, un led rojo se encenderá parpadeando a dos segundos y se va a proceder a medir la distancia. Para ello se utilizará el sensor ultrasónico HC-SR04.

Si la distancia obtenida por el sensor, es menor o igual a 10 metros, entonces, una bocina empezará a hacer sonidos, de 1 segundo de duración, a modo de alerta para el usuario, a que alguien se acerca, y de igual manera el led rojo, estará parpadeando, pero ahora a 1 segundo de duración.

Los datos de la temperatura medida, los movimientos y la distancia se mostrarán en una pantalla LCD de 16*2.


PROCESO DE DIAGRAMACION EN TINKERCAD

  1. Sensor de temperatura

El primer elemento que colocaremos, será el sensor de temperatura tmp36, la primera pata la conectamos al positivo, la segunda será la que nos proporcionara el dato detectado, para ello lo conectamos al pin analógico 5, y la última pata es tierra. Cabe mencionar que, si utilizamos un protoboard, ya previamente es necesario conectar el ground y los 5V del Arduino a ello.



  1. Motor DC

Seguidamente procedemos a poner el motor de corriente directa, para ello necesitamos por aparte una batería de 9v para alimentarla, utilizaremos una resistencia de 1K para conectarla al motor. Mediante el uso de un transistor NPN conectamos al motor a la placa, el control a través de la placa Arduino, se realizara mediante la base del transistor y el pin digital 3 del mismo microcontrolador.


  1. SENSOR PIR

El tercer elemento a colocar, será el sensor de movimiento PIR, el cual consta de 3 pines, el primero que es el de datos, lo conectamos a un pin del Arduino, en este caso utilizamos el pin digital 4; el segundo pin, que es el de potencia, va para el positivo, y el ultimo es tierra.

  1. LED ROJO

La conexión del led es simple, la pata negativa la conectamos a tierra utilizando una resistencia de 220 ohms, y la otra pata la utilizaremos para controlarla con el pin 12 del Arduino.

  1. Zumbador

Hacemos la conexión del zumbador, en tinkercad, lo encontramos como Piezo, donde la pata que corresponde al negativo va para tierra, y la otra la utilizaremos para control a través de del pin digital 11.

  1. Sensor ultrasónico

La herramienta para hacer el calculo de distancia, la conectamos de la siguiente manera; la que corresponde a tierra, va para tierra, la de potencia, a los 5v y la ultima que sirve de echo y trigger, la conectamos al pin 13 del Arduino.

  1. LCD 16x2

La pantalla LCD, La conectamos de la siguiente manera, tal como aparece en la imagen.


La parte de la codificación es esta:

#include<LiquidCrystal.h>

const int rs=10,en=9,d4=8,d5=7,d6=6,d7=5;

LiquidCrystal lcd(rs,en,d4,d5,d6,d7);

int cm=0;

int sensortemp=5;

int pir=4;


int lectura=0;

float grados=0;

void setup() {

  pinMode(3,OUTPUT);

  pinMode(12,OUTPUT);

  pinMode(11,OUTPUT);

  pinMode(4,INPUT);

  pinMode(13,INPUT);

  lcd.begin(16,2);

  analogWrite(2,(50*255)/100);

}


void loop() {

  grados=temperatura();

  if(grados>30){

    analogWrite(3,400);

  }

  else{

    analogWrite(3,map(grados,0,30,0,399));

  }

  movimiento();

}

float temperatura(){

  lectura=analogRead(sensortemp);

  float voltaje=5.0/1024*lectura;

  float temp=voltaje*100-50;


  lcd.setCursor(0,0);

  lcd.print("Temp: ");

  lcd.print(temp);

  lcd.print(" °C");

  delay(1000);

  return(temp);

}

void movimiento(){

  digitalWrite(12,LOW);

  if(digitalRead(pir)==HIGH){

    impresiondedatos();

  }

  else{

    lcd.setCursor(0,1);

    lcd.print("No hay movimiento");

  }

}

long leerultrasonico(int pin){

  pinMode(pin,OUTPUT);

  digitalWrite(pin,LOW);

  delayMicroseconds(2);

  digitalWrite(pin,HIGH);

  delayMicroseconds(10);

  digitalWrite(pin,LOW);

  pinMode(pin,INPUT);

  return pulseIn(pin,HIGH);

}

void impresiondedatos(){

  cm=0.01723*leerultrasonico(13);

  if(cm<=1000){

    digitalWrite(12,HIGH);

    tone(11,200);

    delay(1000);

    digitalWrite(12,LOW);

    noTone(11);

    delay(1000);

  }

  else{

    noTone(11);

    digitalWrite(12,HIGH);

    delay(2000);

    digitalWrite(12,LOW);

  }

  lcd.setCursor(0,1);

  lcd.print("Mov. a ");

  lcd.print(cm);

  lcd.print(" cm");

  delay(1000);

}



Puede ver el Proyecto en tinkercad

AKI PUEDE VER EL VIDEO



Comentarios

Entradas más populares de este blog

Como ser romántico nivel programador

Felicitaciones de cumpleaños para un programador [tomado de frasesparacumpleaños.com]

INDICADOR LUMINOSO DE VOLUMEN DE UN EQUIPO DE SONIDO (PROGRAMACIÓN EN ARDUINO)