การอ่านค่าจากเซ็นเซอร์ DHT22 ด้วย Arduino Nano อ่านค่าอุณหภูมิ



 การอ่านค่าจากเซ็นเซอร์ DHT22 ด้วย Arduino Nano อ่านค่าอุณหภูมิ

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

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

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

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

บอร์ด Arduino Nano

เซ็นเซอร์ DHT22 Module

บอร์ดขนมปัง (ถ้ามี)

สาย Jumper

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

DHT22 มีสเปคดังนี้:

แรงดันไฟฟ้าที่ทำงาน: 3.5V ถึง 5.5V

กระแสไฟที่ใช้: 0.3mA (ขณะวัด) และ 60µA (โหมดสแตนด์บาย)

ช่วงการวัดความชื้น: 0-100% RH

ช่วงการวัดอุณหภูมิ: -40 ถึง 80 องศาเซลเซียส

ความแม่นยำ: ความชื้น ±2% RH (สูงสุด ±5% RH) และอุณหภูมิ ±0.5 องศาเซลเซียส

สัญญาณเอาท์พุต: ข้อมูลแบบอนุกรม

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

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

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

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


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

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

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

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

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

ข้อดีของ DHT22

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

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

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

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

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

การใช้งาน DHT22

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


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

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

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

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

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

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

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

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

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


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

VCC ----> +5V  

GND ----> - GND 

DATA----> D2



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

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



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

#include "DHT.h"


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

// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --

// Pin 15 can work but DHT must be disconnected during program upload.


// Uncomment whatever type you're using!

//#define DHTTYPE DHT11   // DHT 11

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

//#define DHTTYPE DHT21   // DHT 21 (AM2301)


// Connect pin 1 (on the left) of the sensor to +5V

// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1

// to 3.3V instead of 5V!

// Connect pin 2 of the sensor to whatever your DHTPIN is

// Connect pin 3 (on the right) of the sensor to GROUND (if your sensor has 3 pins)

// Connect pin 4 (on the right) of the sensor to GROUND and leave the pin 3 EMPTY (if your sensor has 4 pins)

// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor


// Initialize DHT sensor.

// Note that older versions of this library took an optional third parameter to

// tweak the timings for faster processors.  This parameter is no longer needed

// as the current DHT reading algorithm adjusts itself to work on faster procs.

DHT dht(DHTPIN, DHTTYPE);


void setup() {

  Serial.begin(9600);

  Serial.println(F("DHTxx test!"));


  dht.begin();

}


void loop() {

  // Wait a few seconds between measurements.

  delay(2000);


  // Reading temperature or humidity takes about 250 milliseconds!

  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)

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


  Serial.print(F("Humidity: "));

  Serial.print(h);

  Serial.print(F("%  Temperature: "));

  Serial.print(t);

  Serial.print(F("°C "));

  Serial.print(f);

  Serial.print(F("°F  Heat index: "));

  Serial.print(hic);

  Serial.print(F("°C "));

  Serial.print(hif);

  Serial.println(F("°F"));

}


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

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 :

https://newbiely.com/tutorials/arduino-nano/arduino-nano-dht22#google_vignette


ความคิดเห็น