본문 바로가기

ESP32

ESP32 DHT22 센서 및 OLED 디스플레이를 사용한 온도 및 습도 모니터링

반응형

 

ESP32 | DHT22 센서 및 OLED 디스플레이를 사용한 온도 및 습도 모니터링 

 

정확한 온도 모니터링 및 습도 센서 판독을 위해 ESP32, DHT22 및 OLED 디스플레이를 사용하여 실시간 모니터링 시스템을 만드는 방법을 알아보세요. 이 IoT 프로젝트는 홈 오토메이션 또는 개인용 아두이노 기상 관측소를 위한 실용적인 아두이노 ESP32 솔루션을 구축하는 방법을 보여주는 DIY 전자제품 애호가에게 완벽한 프로젝트입니다. 따라 하기 쉬운 이 가이드를 통해 실시간 데이터의 세계로 뛰어들어 기술을 향상해 보세요!

 

이 프로젝트에서는 ESP32, DHT22 센서 및 OLED 디스플레이를 사용하여 온도 및 습도 수준을 모니터링하는 방법을 보여 드리겠습니다. 실시간 데이터가 OLED 화면에 표시되므로 홈 오토메이션, 온실 또는 기상 관측소에서 실용적이고 쉽게 구축할 수 있는 프로젝트입니다. 

 

 

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "DHT.h" // Include the DHT library

// DHT22 Configuration
#define DHTPIN 18    // Pin connected to the DHT sensor
#define DHTTYPE DHT22 // Specify DHT22 sensor
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT22 sensor

// OLED Display Configuration
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT);

void setup() {
  // Initialize Serial Monitor
  Serial.begin(115200);
  Serial.println(F("DHT22 + OLED test!"));

  // Initialize the DHT sensor
  dht.begin();

  // Initialize the OLED display
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);
  }
  delay(2000);
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
}

void loop() {
  // Read humidity and temperature from DHT22 sensor
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  // Check if any readings failed
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Display the readings on the OLED screen
  display.clearDisplay();

  // Display temperature
  display.setTextSize(1);
  display.setCursor(0, 7);
  display.print("Temperature: ");
  display.setTextSize(2);
  display.setCursor(0, 16);
  display.print(temperature);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true); // Enable extended ASCII for the degree symbol
  display.write(167);  // Degree symbol
  display.setTextSize(2);
  display.print("C");

  // Display humidity
  display.setTextSize(1);
  display.setCursor(0, 37);
  display.print("Humidity: ");
  display.setTextSize(2);
  display.setCursor(0, 50);
  display.print(humidity);
  display.print(" %");

  display.display();

  // Print values to Serial Monitor
  Serial.print(F("Temperature: "));
  Serial.print(temperature);
  Serial.print(F("°C  Humidity: "));
  Serial.print(humidity);
  Serial.println(F("%"));

  delay(2000); // Wait 2 seconds between readings
}

 

 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^