Pengukur suhu dan kelembaban pada pengontrol Arduino dengan tampilan nilai pada layar LCD

Baru-baru ini, saya mulai mempelajari pemrograman mikrokontroler Arduino. Setelah saya menyelesaikan beberapa latihan dasar (LED berkedip, bekerja dengan input diskrit dan analog, menampilkan informasi pada layar LCD, dll.), Saya ingin membuat semacam perangkat yang berguna untuk rumah.

Saya memutuskan untuk membuat pengukur suhu dan kelembaban di dalam ruangan, dengan indikasi parameter pada LCD. Saya juga membuat backlight tampilan adaptif, yang mengubah kecerahan tergantung pada tingkat pencahayaan di ruangan. Ini memungkinkan Anda mengurangi konsumsi daya perangkat, dan dengan demikian meningkatkan masa pakai baterai.

Dalam proyek ini, saya menggunakan komponen-komponen berikut:

1. Arduino Uno board

gambar

2. Layar LCD1602 dengan modul dukungan protokol I2C. Untuk mengurangi jumlah kabel dan menyederhanakan koneksi layar, saya memutuskan untuk menghubungkannya melalui protokol I2C, untuk ini saya menyolder modul konverter khusus ke layar LCD.

"

3. Sensor suhu dan kelembaban DHT11. Memungkinkan Anda untuk menentukan kelembaban dari 20-80% dan suhu dari 0-50˚C. Sensor ini memiliki 4 output, tetapi hanya 3 yang digunakan. Sebuah resistor 10kΩ harus dipasang antara output daya dan output data. Saya Saya menggunakan sensor yang sudah jadi yang terpasang di papan dengan resistor yang terhubung, sehingga Anda dapat dengan aman menghubungkannya ke papan Arduino.

"

4. Photoresistor. Terhubung ke papan Arduino dengan pull-up ke GND, melalui resistor 10kΩ.



Diagram koneksi adalah sebagai berikut:



Fotoresistor terhubung ke input analog A0 dari papan Arduino. Garis data sensor DHT11 terhubung ke pin diskrit 2, pin daya terhubung ke + 5V Arduino, masing-masing, pin GND terhubung di tanah papan Arduino. Layar LCD terhubung ke daya papan, pin SDA terhubung ke A4, pin SCL ke A5. Garis kontrol kecerahan lampu latar terhubung ke pin 9, di mana sinyal PWM dihasilkan.

Di bawah ini adalah kode sumber:

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

}


Setelah mengkompilasi kode ini, kami mendapatkan perangkat yang berfungsi:



Di masa depan saya berencana untuk membuat beberapa perangkat yang lebih menarik dan lebih kompleks di Arduino.

Saya juga membuat video tempat saya menunjukkan cara kerja perangkat:


All Articles