Medidor de temperatura y humedad en el controlador Arduino con la visualización de valores en la pantalla LCD

Recientemente, comencé a estudiar la programación del microcontrolador Arduino. Después de completar algunos ejercicios básicos (LED parpadeantes, trabajar con entradas discretas y analógicas, mostrar información en una pantalla LCD, etc.), quería hacer algún tipo de dispositivo útil para el hogar.

Decidí hacer un medidor de temperatura y humedad en la habitación, con una indicación de los parámetros en la pantalla LCD. También hice una retroiluminación de pantalla adaptativa, que cambia el brillo según el nivel de iluminación de la habitación. Esto le permite reducir el consumo de energía del dispositivo y, por lo tanto, aumentar la vida útil de la batería.

En el proyecto, utilicé los siguientes componentes:

1. Placa Arduino Uno

imagen

2. Pantalla LCD1602 con módulo de soporte de protocolo I2C. Con el fin de reducir la cantidad de cables y simplificar la conexión de la pantalla, decidí conectarlo a través del protocolo I2C, para ello solde un módulo convertidor especial a la pantalla LCD.

"

3. Sensor de temperatura y humedad DHT11. Le permite determinar la humedad del 20-80% y la temperatura de 0-50˚C. El sensor tiene 4 salidas, pero solo se utiliza 3. Se debe instalar una resistencia de 10k ohmios entre la salida de potencia y la salida de datos. I Utilicé un sensor listo para usar montado en la placa con una resistencia conectada, para que pueda conectarlo de manera segura a la placa Arduino

" .

4. Fotoresistor. Está conectado a la placa Arduino con un pull-up a GND, a través de una resistencia de 10kΩ.



El diagrama de conexión es el siguiente: el



fotorresistor está conectado a la entrada analógica A0 de la placa Arduino. La línea de datos del sensor DHT11 está conectada al pin 2 discreto, el pin de alimentación está conectado a + 5V Arduino, respectivamente, el pin GND está conectado a la tierra de la placa Arduino. La pantalla LCD está conectada a la alimentación de la placa, el pin SDA está conectado a A4, el pin SCL está a A5. La línea de control de brillo de la luz de fondo está conectada al pin 9, en el que se genera la señal PWM.

A continuación se muestra el código fuente:

#include "DHT.h"                  //      DHT11
#include "Wire.h"               
#include "LiquidCrystal_I2C.h"    //     LCD 

int LD;                           //  

#define DHTPIN 2                  // PIN    DHT11
#define LED 9                     // PIN   -
#define FOTO 0                    // PIN   

DHT dht(DHTPIN, DHT11);           //  DHT11
LiquidCrystal_I2C lcd(0x27,16,2); // 


void setup() {
 pinMode(LED, OUTPUT);            // PIN LED  
 
 dht.begin();                     //    
 
 lcd.init();                      // LCD 
 lcd.backlight();
}


int light(int svet)               //  
{                                 //    
  if (svet<25)                    //  -
  {
    return 255;
  }

  if(svet>1020)
  {
    return 2;
  }
  else
  {
    int L=(int)(-0.2*svet+261.262);
    return L;
  }
}


void loop() {
   int f = analogRead(FOTO);              //    
   LD=light(f);
   delay(2000);
   analogWrite(LED, LD);                  //   
   
   float h=dht.readHumidity();            //  
   float t=dht.readTemperature();         //  

    lcd.setCursor(0,0);                   //      
    lcd.print("Temp ");                   //  
    lcd.print(t);
    
    lcd.setCursor(0,1);                   //      
    lcd.print("Hum ");                    //  
    lcd.print(h);

}


Una vez compilado este código, obtenemos un dispositivo que funciona:



en el futuro planeo hacer algunos dispositivos más interesantes y más complejos en Arduino.

También hice un video donde mostré cómo funciona el dispositivo:


All Articles