Tutorial – Usar el Sensor KY-015 y Arduino + Programación

Tutorial – Usar el Sensor KY-015 y Arduino + Programación

Un sensor con la capacidad de medir temperatura y humedad es una pieza elemental ante cualquier proyecto que requiera medir estas variables. La temperatura juega un papel importante en casi cualquier cosa por ejemplo los diferentes componentes de un proyecto o sistema son sensibles a las altas temperaturas por tal se debe tener un control y esto se logran censando la temperatura para luego aplicar correcciones al ambiente encendiendo aires acondicionado o sistemas HVAC.

Por otro lado la Humedad puede dañar a cualquier elemento que funcione con electricidad osea un panel de control, circuitos que controlen el encendido de otros sistemas como motores, etc. Por lo cual se requiere controlar esta magnitud o cuando menos tener una medición correcta para saber hasta que punto nuestro sistemas puede mantenerse estable y no ser afectada por la humedad.

Modulo KY-015

Conexiones:

  • El pin 8 de Arduino va conectado al Pin S del modulo
  • El pin GND de Arduino va conectado al Pin –
  • La salida de 5V del Arduino va conectada al Pin central del modulo

Nota: La programación que se da a continuación puede ser reflejada en la ventana serial del programa arduino o  simplemente puede ser reflejada en un Dispaly LCD 16×2

Programación para usar el Sensor KY-015 y Arduino

//KY015 DHT11 Temperature and humidity sensor 
int DHpin = 8;
byte dat [5];
byte read_data () {
 byte data;
 for (int i = 0; i < 8; i ++) {
 if (digitalRead (DHpin) == LOW) {
 while (digitalRead (DHpin) == LOW); // wait for 50us
 delayMicroseconds (30); // determine the duration of the high level to determine the data is '0 'or '1'
 if (digitalRead (DHpin) == HIGH)
 data |= (1 << (7-i)); // high front and low in the post
 while (digitalRead (DHpin) == HIGH); // data '1 ', wait for the next one receiver
 }
 }
return data;
}
 
void start_test () {
 digitalWrite (DHpin, LOW); // bus down, send start signal
 delay (30); // delay greater than 18ms, so DHT11 start signal can be detected
 
 digitalWrite (DHpin, HIGH);
 delayMicroseconds (40); // Wait for DHT11 response
 
 pinMode (DHpin, INPUT);
 while (digitalRead (DHpin) == HIGH);
 delayMicroseconds (80); // DHT11 response, pulled the bus 80us
 if (digitalRead (DHpin) == LOW);
 delayMicroseconds (80); // DHT11 80us after the bus pulled to start sending data
 
 for (int i = 0; i < 4; i ++) // receive temperature and humidity data, the parity bit is not considered
 dat[i] = read_data ();
 
 pinMode (DHpin, OUTPUT);
 digitalWrite (DHpin, HIGH); // send data once after releasing the bus, wait for the host to open the next Start signal
}
 
void setup () {
 Serial.begin (9600);
 pinMode (DHpin, OUTPUT);
}
 
void loop () {
 start_test ();
 Serial.print ("Current humdity =");
 Serial.print (dat [0], DEC); // display the humidity-bit integer;
 Serial.print ('.');
 Serial.print (dat [1], DEC); // display the humidity decimal places;
 Serial.println ('%');
 Serial.print ("Current temperature =");
 Serial.print (dat [2], DEC); // display the temperature of integer bits;
 Serial.print ('.');
 Serial.print (dat [3], DEC); // display the temperature of decimal places;
 Serial.println ('C');
 delay (700);
}

Acabas de añadir este producto a su carrito: