반응형
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
}
반응형
'ESP32' 카테고리의 다른 글
ESP32 Bluetooth Low Energy(BLE) 시작하기 (1) | 2025.01.06 |
---|---|
ESP32 LoRa 송신 수신기 제작 방법 (0) | 2025.01.06 |
ESP32 웨이크업 소스를 사용한 Deep Sleep (1) | 2025.01.03 |
ESP32 인터럽트와 타이머를 사용한 PIR 모션 센서 (3) | 2025.01.03 |
ESP32 ADC 읽기 Arduino IDE (2) | 2024.12.24 |
ESP32 PWM 아날로그 출력 Arduino IDE (3) | 2024.12.23 |
ESP32 디지털 입력 및 디지털 출력(Arduino IDE) (2) | 2024.12.20 |
ESP32 Pinout 참조: 어떤 GPIO 핀을 사용해야 합니까? (1) | 2024.12.19 |
더욱 좋은 정보를 제공하겠습니다.~ ^^