การสร้างการตรวจสอบอุณหภูมิและความชื้นด้วย DHT11/DHT22 และ Arduino

Monitoring environmental conditions like temperature and humidity is essential for various applications, from home automation to greenhouse management. With the versatile Arduino platform and sensors like the DHT11 or DHT22, creating a reliable temperature and humidity monitor is both affordable and straightforward. ในคู่มือนี้เราจะนำคุณผ่านส่วนประกอบที่จำเป็นกระบวนการตั้งค่าและการเข้ารหัสที่จำเป็นในการทำให้จอภาพของคุณมีชีวิต

ส่วนประกอบที่คุณต้องการ

  • Arduino uno
  • เซ็นเซอร์ DHT11 หรือ DHT22
  • ตัวต้านทาน 10k โอห์ม
  • เครื่องหั่นขนมปังและสายจัมเปอร์
  • จอแสดงผล LCD (ไม่บังคับ)
  • สาย USB

ทำความเข้าใจเซ็นเซอร์ DHT11/DHT22

DHT11 และ DHT22 เป็นเซ็นเซอร์ยอดนิยมสำหรับการวัดอุณหภูมิและความชื้น DHT11 นั้นประหยัดต้นทุนและเหมาะสำหรับการใช้งานขั้นพื้นฐานโดยมีช่วงอุณหภูมิ 0-50 ° C ที่มีความแม่นยำ± 2 ° C และช่วงความชื้น 20-80% ด้วยความแม่นยำ± 5% The DHT22, on the other hand, provides a wider temperature range of -40 to 80°C with ±0.5°C accuracy and humidity range of 0-100% with ±2-5% accuracy, making it ideal for more demanding projects.

Wiring the Sensor to Arduino

ทำตามขั้นตอนเหล่านี้เพื่อเชื่อมต่อเซ็นเซอร์ DHT ของคุณกับ Arduino:

  1. การเชื่อมต่อพลังงาน: เชื่อมต่อพิน VCC ของเซ็นเซอร์ DHT เข้ากับพิน 5V บน Arduino และพิน GND กับพื้น (GND)
  2. พินข้อมูล: เชื่อมต่อพินข้อมูลของเซ็นเซอร์ DHT เข้ากับพินอินพุตดิจิตอลบน Arduino (โดยทั่วไป Pin 2)
  3. ตัวต้านทานแบบดึงขึ้น: วางตัวต้านทาน 10K โอห์มระหว่าง VCC และพินข้อมูลเพื่อให้แน่ใจว่าการส่งข้อมูลที่เสถียร
  4. จอแสดงผล LCD (ไม่บังคับ): หากใช้ LCD ให้เชื่อมต่อกับหมุด Arduino ที่เหมาะสมเพื่อแสดงการอ่าน

การเขียนโปรแกรม Arduino

ในการอ่านข้อมูลจากเซ็นเซอร์ DHT เราจะใช้ไฟล์ DHT.h ห้องสมุดซึ่งทำให้กระบวนการง่ายขึ้น ด้านล่างนี้เป็นตัวอย่างโค้ดตัวอย่างเพื่อให้คุณเริ่มต้น:

// Include the DHT library
#include <DHT.h>

// Define the sensor type and the pin it's connected to
#define DHTPIN 2
#define DHTTYPE DHT22 // Change to DHT11 if you're using that model

// Initialize the DHT sensor
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  // Start serial communication
  Serial.begin(9600);
  // Initialize the DHT sensor
  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements
  delay(2000);

  // Read humidity and temperature
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

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

  // Print the results to the Serial Monitor
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C");
}

คำอธิบายของรหัส:

  • ที่ DHT.h ห้องสมุดถูกรวมไว้เพื่ออำนวยความสะดวกในการสื่อสารกับเซ็นเซอร์
  • เรากำหนดหมุดข้อมูลและประเภทเซ็นเซอร์โดยใช้ #define.
  • ใน setup() ฟังก์ชั่นเราเริ่มต้นการสื่อสารแบบอนุกรมและเซ็นเซอร์ DHT
  • ที่ loop() ฟังก์ชั่นอ่านความชื้นและอุณหภูมิทุกสองวินาทีและพิมพ์ลงในจอภาพอนุกรม

การแสดงข้อมูล

For a more user-friendly setup, you can display the readings on an LCD. แก้ไขรหัสเพื่อส่งข้อมูลไปยัง LCD แทนการตรวจสอบอนุกรม ตรวจสอบให้แน่ใจว่าคุณมีไลบรารี LCD ที่เหมาะสมที่ติดตั้งและกำหนดค่าพินตามนั้น

รหัสตัวอย่างสำหรับการแสดง LCD:

// Include necessary libraries
#include <DHT.h>
#include <LiquidCrystal.h>

// Define sensor and LCD pins
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// Initialize the LCD (adjust pin numbers as needed)
LiquidCrystal lcd(12, 11, 5, 4, 3, 6);

void setup() {
  // Start serial communication
  Serial.begin(9600);
  dht.begin();
  // Initialize the LCD
  lcd.begin(16, 2);
  lcd.print("Temp & Humidity");
}

void loop() {
  delay(2000);

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  if (isnan(humidity) || isnan(temperature)) {
    lcd.clear();
    lcd.print("Sensor Error");
    return;
  }

  // Display on LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(temperature);
  lcd.print(" C");
  lcd.setCursor(0, 1);
  lcd.print("Humidity: ");
  lcd.print(humidity);
  lcd.print(" %");
}

ทดสอบการตั้งค่าของคุณ

หลังจากอัปโหลดรหัสไปยัง Arduino ของคุณให้เปิดมอนิเตอร์อนุกรม (หากใช้เอาต์พุตอนุกรม) หรือสังเกตการแสดง LCD คุณควรเห็นการอ่านอุณหภูมิและความชื้นแบบเรียลไทม์ ตรวจสอบให้แน่ใจว่าการเชื่อมต่อของคุณปลอดภัยและเซ็นเซอร์ทำงานได้อย่างถูกต้อง หากคุณพบปัญหาให้ตรวจสอบการเดินสายและตรวจสอบอีกครั้งว่าประเภทเซ็นเซอร์ที่ถูกต้องถูกกำหนดไว้ในรหัสของคุณ

การปรับปรุงและขั้นตอนต่อไป

ตอนนี้คุณมีการตรวจสอบอุณหภูมิและความชื้นพื้นฐานให้พิจารณาการปรับปรุงดังต่อไปนี้:

  • การบันทึกข้อมูล: เชื่อมต่อ Arduino ของคุณกับโมดูลการ์ด SD เพื่อบันทึกข้อมูลเมื่อเวลาผ่านไปสำหรับการวิเคราะห์
  • การตรวจสอบไร้สาย: ใช้โมดูลเช่น ESP8266 หรือบลูทู ธ เพื่อส่งข้อมูลไปยังสมาร์ทโฟนหรือบริการคลาวด์ของคุณ
  • การแจ้งเตือน: ใช้การแจ้งเตือนตามเกณฑ์โดยใช้ LED หรือ Buzzers เพื่อแจ้งให้คุณทราบถึงเงื่อนไขที่รุนแรง
  • เซ็นเซอร์หลายตัว: ขยายการตั้งค่าของคุณเพื่อรวมเซ็นเซอร์เพิ่มเติมสำหรับพารามิเตอร์เช่นคุณภาพอากาศหรือความเข้มแสง

บทสรุป

การสร้างการตรวจสอบอุณหภูมิและความชื้นด้วย DHT11/DHT22 และ Arduino เป็นโครงการที่ยอดเยี่ยมสำหรับผู้เริ่มต้นและผู้ที่ชื่นชอบ มันให้ประสบการณ์จริงด้วยการรวมเซ็นเซอร์การประมวลผลข้อมูลและเทคนิคการแสดงผล ไม่ว่าจะเป็นการใช้งานส่วนตัวหรือเป็นรากฐานสำหรับระบบที่ซับซ้อนมากขึ้นโครงการนี้แสดงพลังและความยืดหยุ่นของระบบนิเวศ Arduino อาคารมีความสุข!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.