Medidor de temperatura e umidade no controlador Arduino com exibição de valores no visor LCD

Recentemente, comecei a estudar a programação do microcontrolador Arduino. Depois de concluir vários exercícios básicos (LEDs piscando, trabalhando com entradas discretas e analógicas, exibindo informações em um monitor de cristal líquido etc.), eu queria criar algum tipo de dispositivo útil para o lar.

Decidi fazer um medidor de temperatura e umidade na sala, com uma indicação dos parâmetros no LCD. Também fiz uma luz de fundo de tela adaptável, que altera o brilho, dependendo do nível de iluminação da sala. Isso permite reduzir o consumo de energia do dispositivo e, assim, aumentar a vida útil da bateria.

No projeto, usei os seguintes componentes:

1. Placa Arduino Uno

imagem

2. Tela LCD1602 com módulo de suporte ao protocolo I2C. Para reduzir o número de fios e simplificar a conexão do monitor, decidi conectá-lo através do protocolo I2C. Para isso, soldamos um módulo conversor especial no monitor LCD.

"

3. Sensor de temperatura e umidade DHT11. Permite determinar a umidade de 20-80% e a temperatura de 0-50˚C. O sensor possui 4 saídas, mas apenas 3 são usadas. Um resistor de 10k ohm deve ser instalado entre a saída de potência e a saída de dados. I Usei um sensor pronto montado na placa com um resistor conectado, para que você possa conectá-lo com segurança à placa Arduino

" .

4. Fotoresistor. É conectado à placa Arduino com um pull-up para GND, através de um resistor de 10kΩ.



O diagrama de conexão é o seguinte: O



fotorresistor está conectado à entrada analógica A0 da placa Arduino. A linha de dados do sensor DHT11 é conectada ao pino discreto 2, o pino de alimentação é conectado ao + 5V Arduino, respectivamente, o pino GND é conectado no terra da placa Arduino. O visor LCD está conectado à energia da placa, o pino SDA está conectado ao A4, o pino SCL está ao A5. A linha de controle de brilho da luz de fundo está conectada ao pino 9, no qual o sinal PWM é gerado.

Abaixo está o código fonte:

#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);

}


Depois de compilar esse código, obtemos um dispositivo tão funcional:



no futuro, pretendo criar dispositivos mais interessantes e mais complexos no Arduino.

Também fiz um vídeo onde mostrei como o dispositivo funciona:


All Articles