การอ่านค่าเซ็นเซอร์ DHT22 ด้วย Arduino Nano บนจอ LCD1602



 การอ่านค่าเซ็นเซอร์ DHT22 ด้วย Arduino Nano บนจอ LCD1602

Arduino Nano: เป็นบอร์ดไมโครคอนโทรลเลอร์ที่นิยมใช้สำหรับงานอิเล็กทรอนิกส์พื้นฐาน

DHT22: เซ็นเซอร์วัดอุณหภูมิแบบดิจิทัล ที่มีความแม่นยำสูง สามารถวัดอุณหภูมิได้ในช่วงกว้าง 

และสามารถต่อเชื่อมกันได้หลายตัวบนสายเดียว

อุปกรณ์ที่จำเป็น

1.บอร์ด Arduino Nano

2.เซ็นเซอร์ DHT22 

3.Breadboard (ถ้ามี)

4.สาย Jumper

5.แหล่งจ่ายไฟ (ถ้าไม่ใช้จาก Arduino power) usb ต่อคอมพิวเตอร์

6.จอ LCD 1602 I2C



การทำงานของเซ็นเซอร์ DHT22

DHT22 เป็นเซ็นเซอร์ที่นิยมใช้ในการวัดอุณหภูมิและความชื้นสัมพัทธ์ในอากาศ มีโครงสร้างที่เรียบง่าย 

ประกอบด้วยส่วนหลักคือเซ็นเซอร์วัดอุณหภูมิและความชื้น และส่วนอิเล็กทรอนิกส์สำหรับประมวลผลข้อมูล

และสื่อสารกับไมโครคอนโทรลเลอร์


หลักการทำงานโดยสรุป

การวัด: เซ็นเซอร์จะทำการวัดอุณหภูมิและความชื้นในอากาศโดยรอบ

การแปลงสัญญาณ: ค่าที่วัดได้จะถูกแปลงเป็นสัญญาณดิจิทัล

การส่งข้อมูล: สัญญาณดิจิทัลจะถูกส่งผ่านขาข้อมูล (data pin) ไปยังไมโครคอนโทรลเลอร์

การประมวลผล: ไมโครคอนโทรลเลอร์จะทำการอ่านค่าและประมวลผลข้อมูลเพื่อแสดงผลหรือนำไปใช้ในการควบคุมอุปกรณ์อื่นๆ

ข้อดีของ DHT22

ราคาถูก: มีราคาไม่แพง ทำให้สามารถนำไปใช้งานได้อย่างกว้างขวาง

ขนาดเล็ก: มีขนาดเล็ก ทำให้ติดตั้งได้ง่าย

การใช้งานง่าย: มีไลบรารีสำหรับใช้งานกับไมโครคอนโทรลเลอร์ต่างๆ มากมาย 

ทำให้การเขียนโปรแกรมเพื่ออ่านค่าจากเซ็นเซอร์ทำได้ง่าย

ความแม่นยำ: ให้ค่าที่ค่อนข้างแม่นยำเมื่อเทียบกับราคา

การใช้งาน DHT22

DHT22 สามารถนำไปประยุกต์ใช้งานได้หลากหลาย เช่น


ระบบควบคุมอุณหภูมิและความชื้น: เช่น ตู้เพาะเลี้ยง ตู้ปลา โรงเรือนเพาะปลูก

เครื่องวัดสภาพอากาศ: สามารถนำไปใช้เป็นส่วนประกอบในการสร้างเครื่องวัดสภาพอากาศแบบง่ายๆ

อุปกรณ์สมาร์ทโฮม: เช่น ระบบควบคุมความชื้นในห้อง ระบบควบคุมพัดลม

โครงงานอิเล็กทรอนิกส์: สามารถนำไปใช้ในโครงงานอิเล็กทรอนิกส์ต่างๆ ได้มากมาย

สิ่งที่ควรพิจารณาเมื่อใช้งาน DHT22

ระยะห่าง: ควรติดตั้งเซ็นเซอร์ในตำแหน่งที่อากาศถ่ายเทสะดวก และห่างจากแหล่งความร้อนหรือความเย็น

ความชื้นสัมพัทธ์: เซ็นเซอร์ DHT22 อาจมีความคลาดเคลื่อนในการวัดความชื้นสัมพัทธ์ที่ต่ำมาก

อัตราการสุ่มตัวอย่าง: เซ็นเซอร์มีอัตราการสุ่มตัวอย่าง ที่จำกัด ควรเลือกใช้เซ็นเซอร์รุ่น อื่น 

ที่มีอัตราการสุ่มตัวอย่างสูงขึ้นหากต้องการความแม่นยำสูง

เชื่อมต่อ DHT22 กับ Arduino  Nano

VCC ----> +5V  

GND ----> - GND 

DATA----> D2

เชื่อมต่อ DHT22 กับ Arduino  Nano




ติดตั้ง ไลบราลี่ใน Arduio IDE 

Tools->Manage Libraries->DHT เลือก DHT sensor library by Adafruit

ติดตั้งไลบรารี LiquidCrystal ให้ไปที่ Arduino IDE:

ไปที่เมนู Sketch > Include Library > Manage Libraries...

ค้นหา LiquidCrystal I2C และติดตั้ง



โค้ดตัวอย่าง:

#include <DHT.h>

#include <Wire.h> 

#include <LiquidCrystal_I2C.h>

#define DHTPIN 2     // Digital pin connected to the DHT sensor

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

LiquidCrystal_I2C lcd(0x27,16,2);  

DHT dht(DHTPIN, DHTTYPE);


void setup()

{

  dht.begin();  

  lcd.begin(16,2);                      

  lcd.init();                      

  lcd.backlight();

  lcd.clear();  

  lcd.setCursor(0,0);

  lcd.print("Arduino Nano");

  lcd.setCursor(0,1);

  lcd.print("LCD1602 DHT22");

  delay(3000);

}



void loop()

{

  float h = dht.readHumidity();

  // Read temperature as Celsius (the default)

  float t = dht.readTemperature();

  // Read temperature as Fahrenheit (isFahrenheit = true)

  float f = dht.readTemperature(true);


  // Check if any reads failed and exit early (to try again).

  if (isnan(h) || isnan(t) || isnan(f)) {

    Serial.println(F("Failed to read from DHT sensor!"));

    return;

  }


  // Compute heat index in Fahrenheit (the default)

  float hif = dht.computeHeatIndex(f, h);

  // Compute heat index in Celsius (isFahreheit = false)

  float hic = dht.computeHeatIndex(t, h, false);  



  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("Temp:");

  lcd.print(t);

  lcd.print(" C");  

  lcd.setCursor(0, 1);  

  lcd.print("Humidity ");

  lcd.print(h);

  lcd.print(" %");  

  delay(5000);


  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("Heat Index:");

  lcd.setCursor(0, 1);  

  lcd.print(hic);

  lcd.print(" C:");  

  lcd.print(hif);

  lcd.print(" F");  

  delay(5000);

}




////////////////////////////

Humidity: 64.20%  Temperature: 32.90°C 91.22°F  Heat index: 40.81°C 105.46°F

แปลและอธิบายค่าต่างๆ

ค่าที่ให้มาทั้งหมดมีความหมายเกี่ยวกับสภาพอากาศในขณะนั้น ดังนี้:

ความชื้นสัมพัทธ์ (Humidity): 64.20%

หมายถึง ปริมาณไอน้ำในอากาศเทียบกับปริมาณไอน้ำสูงสุด ที่อากาศจะอุ้มได้ที่อุณหภูมิเดียวกัน ค่านี้บ่งบอกถึงความชื้นในอากาศ หากค่าสูง 

แสดงว่าอากาศชื้น หากค่าต่ำ แสดงว่าอากาศแห้ง ในที่นี้ ค่า 64.20% หมายถึง อากาศค่อนข้างชื้น

อุณหภูมิ (Temperature): 32.90°C (91.22°F)

คือ ค่าที่บอกระดับความร้อนของอากาศ โดยทั่วไปจะวัดเป็นองศาเซลเซียส (°C) หรือองศาฟาเรนไฮต์ (°F) ในที่นี้ อุณหภูมิ 32.90°C ถือว่าร้อน

ดัชนีความร้อน (Heat index): 40.81°C (105.46°F)

คือ ค่าที่คำนวณจากอุณหภูมิและความชื้นสัมพัทธ์ เพื่อบอกความรู้สึกของอุณหภูมิที่ร่างกายคนเราสัมผัสได้จริง เมื่ออุณหภูมิสูงและความชื้นสูง 

ร่างกายจะระบายเหงื่อได้ยาก ทำให้อุณหภูมิภายในร่างกายสูงขึ้น จึงรู้สึกว่าอากาศร้อนมากขึ้น ดัชนีความร้อน 40.81°C หมายความว่า 

แม้จะวัดอุณหภูมิได้ 32.90°C แต่ร่างกายจะรู้สึก เหมือนโดนความร้อนถึง 40.81°C ซึ่งถือว่าร้อนมากและอาจเป็นอันตรายต่อสุขภาพได้

สรุปความหมายโดยรวม

สภาพอากาศในขณะนั้นค่อนข้างร้อนและชื้นมาก อุณหภูมิจริงอยู่ที่ 32.9 องศาเซลเซียส แต่เมื่อพิจารณาจากดัชนีความร้อนแล้ว 

รู้สึกเหมือนอากาศร้อนถึง 40.81 องศาเซลเซียส ซึ่งเป็นอุณหภูมิที่สูงมาก และอาจทำให้เกิดอาการอ่อนเพลีย คลื่นไส้ 

หรือแม้แต่โรคลมแดดได้ หากต้องออกไปข้างนอก ควรดื่มน้ำเยอะๆ สวมใส่เสื้อผ้าที่เบาบาง 

และหลีกเลี่ยงการทำกิจกรรมกลางแจ้งในช่วงเวลาที่อากาศร้อนที่สุด

หมายเหตุ: ดัชนีความร้อนเป็นเพียงค่าประมาณการ และความรู้สึกของแต่ละบุคคลต่อความร้อนอาจแตกต่างกันไป



Relate Link :




ความคิดเห็น