lnwshop logo

DHT22 เซนเซอร์อุณหภูมิและความชื้นสัมพัทธ์

DHT22 เซนเซอร์อุณหภูมิและความชื้นสัมพัทธ์
DHT22 เซนเซอร์อุณหภูมิและความชื้นสัมพัทธ์ thumbnail 1DHT22 เซนเซอร์อุณหภูมิและความชื้นสัมพัทธ์ thumbnail 2DHT22 เซนเซอร์อุณหภูมิและความชื้นสัมพัทธ์ thumbnail 3DHT22 เซนเซอร์อุณหภูมิและความชื้นสัมพัทธ์ thumbnail 4
หมวดหมู่ เซนเซอร์วัดอุณหภูมิ ความชื้น
ราคาปกติ 150.00 บาท
ลดเหลือ 110.00 บาท
อัพเดทล่าสุด 13 ม.ค. 2560
ความพึงพอใจ ยังไม่มีความคิดเห็น
สั่งซื้อได้ 0 ชิ้น
ขออภัย สินค้าหมดค่ะ
Share :
Tags : arduino

การใช้งาน

จากการเขียนโปรแกรมข้างล่าง หรือ sketch แสดงวิธีการเรียกใช้ library เพื่อใช้งานวัดอุณหภูมิและความชื้นโดยเซนเซอร์ DHT22 ซึ่งมีความแม่นยำสูงกว่า DHT11

Note: ความถี่สูงสุดของเซนเซอร์สามารถอ่านได้ 2 วินาทีต่อครั้ง

1. Code ไฟล์ ".ino" ใช้สำหรับคอมไพล์โปรแกรมลงในบอร์ด Arduino สามารถ copy ไปใช้งานได้ทันที

//
// FILE: dht_test.ino
// AUTHOR: Rob Tillaart
// VERSION: 0.1.07
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
// URL: http://arduino.cc/playground/Main/DHTLib
//
// Released to the public domain
//

#include

dht DHT;

#define DHT11_PIN 4
#define DHT21_PIN 5
#define DHT22_PIN 6

void setup()
{
Serial.begin(115200);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}

void loop()
{
// READ DATA
Serial.print("DHT22, \t");
int chk = DHT.read22(DHT22_PIN);
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// DISPLAY DATA
Serial.print(DHT.humidity, 1);
Serial.print(",\t");
Serial.println(DHT.temperature, 1);

delay(1000);


// READ DATA
Serial.print("DHT21, \t");
chk = DHT.read21(DHT21_PIN);
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// DISPLAY DATA
Serial.print(DHT.humidity, 1);
Serial.print(",\t");
Serial.println(DHT.temperature, 1);

delay(1000);

// READ DATA
Serial.print("DHT11, \t");
chk = DHT.read11(DHT11_PIN);
switch (chk)
{
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// DISPLAY DATA
Serial.print(DHT.humidity,1);
Serial.print(",\t");
Serial.println(DHT.temperature,1);

delay(1000);
}
//
// END OF FILE
//


คำอธิบาย

In setup() The version of the library (a define) is displayed. This is for debugging purpose only.

In loop() a DHT22, a DHT21 and a DHT11 sensor are read and the fields temperature and humidity are filled. The return value of the readXX function is checked and displayed. Then the temperature and humidity are shown.

Library

การใช้งาน Library, สร้างโฟล์เดอร์ของคุณใน part ดังนี้ ....\libaries โดยตั้งชื่อว่า DHT พร้อมกับใส่ .h และ .cpp ลงในโฟลเดอร์นี้โดยดาวน์ Copy จากไฟล์ dht.h cและ dht.c ด้านล่าง

dht.h

//
// FILE: dht.h
// AUTHOR: Rob Tillaart
// VERSION: 0.1.14
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
// URL: http://arduino.cc/playground/Main/DHTLib
//
// HISTORY:
// see dht.cpp file
//

#ifndef dht_h
#define dht_h

#if ARDUINO < 100
#include
#else
#include
#endif

#define DHT_LIB_VERSION "0.1.14"

#define DHTLIB_OK 0
#define DHTLIB_ERROR_CHECKSUM -1
#define DHTLIB_ERROR_TIMEOUT -2
#define DHTLIB_INVALID_VALUE -999

#define DHTLIB_DHT11_WAKEUP 18
#define DHTLIB_DHT_WAKEUP 1

// max timeout is 100 usec.
// For a 16 Mhz proc 100 usec is 1600 clock cycles
// loops using DHTLIB_TIMEOUT use at least 4 clock cycli
// so 100 us takes max 400 loops
// so by dividing F_CPU by 40000 we "fail" as fast as possible
#define DHTLIB_TIMEOUT (F_CPU/40000)

class dht
{
public:
// return values:
// DHTLIB_OK
// DHTLIB_ERROR_CHECKSUM
// DHTLIB_ERROR_TIMEOUT
int read11(uint8_t pin);
int read(uint8_t pin);

inline int read21(uint8_t pin) { return read(pin); };
inline int read22(uint8_t pin) { return read(pin); };
inline int read33(uint8_t pin) { return read(pin); };
inline int read44(uint8_t pin) { return read(pin); };

double humidity;
double temperature;

private:
uint8_t bits[5]; // buffer to receive data
int _readSensor(uint8_t pin, uint8_t wakeupDelay);
};
#endif
//
// END OF FILE
//

dht.cpp

//
// FILE: dht.cpp
// AUTHOR: Rob Tillaart
// VERSION: 0.1.14
// PURPOSE: DHT Temperature & Humidity Sensor library for Arduino
// URL: http://arduino.cc/playground/Main/DHTLib
//
// HISTORY:
// 0.1.14 replace digital read with faster (~3x) code => more robust low MHz machines.
// 0.1.13 fix negative temperature
// 0.1.12 support DHT33 and DHT44 initial version
// 0.1.11 renamed DHTLIB_TIMEOUT
// 0.1.10 optimized faster WAKEUP + TIMEOUT
// 0.1.09 optimize size: timeout check + use of mask
// 0.1.08 added formula for timeout based upon clockspeed
// 0.1.07 added support for DHT21
// 0.1.06 minimize footprint (2012-12-27)
// 0.1.05 fixed negative temperature bug (thanks to Roseman)
// 0.1.04 improved readability of code using DHTLIB_OK in code
// 0.1.03 added error values for temp and humidity when read failed
// 0.1.02 added error codes
// 0.1.01 added support for Arduino 1.0, fixed typos (31/12/2011)
// 0.1.00 by Rob Tillaart (01/04/2011)
//
// inspired by DHT11 library
//
// Released to the public domain
//

#include "dht.h"

/////////////////////////////////////////////////////
//
// PUBLIC
//

// return values:
// DHTLIB_OK
// DHTLIB_ERROR_CHECKSUM
// DHTLIB_ERROR_TIMEOUT
int dht::read11(uint8_t pin)
{
// READ VALUES
int rv = _readSensor(pin, DHTLIB_DHT11_WAKEUP);
if (rv != DHTLIB_OK)
{
humidity = DHTLIB_INVALID_VALUE; // invalid value, or is NaN prefered?
temperature = DHTLIB_INVALID_VALUE; // invalid value
return rv;
}

// CONVERT AND STORE
humidity = bits[0]; // bits[1] == 0;
temperature = bits[2]; // bits[3] == 0;

// TEST CHECKSUM
// bits[1] && bits[3] both 0
uint8_t sum = bits[0] + bits[2];
if (bits[4] != sum) return DHTLIB_ERROR_CHECKSUM;

return DHTLIB_OK;
}


// return values:
// DHTLIB_OK
// DHTLIB_ERROR_CHECKSUM
// DHTLIB_ERROR_TIMEOUT
int dht::read(uint8_t pin)
{
// READ VALUES
int rv = _readSensor(pin, DHTLIB_DHT_WAKEUP);
if (rv != DHTLIB_OK)
{
humidity = DHTLIB_INVALID_VALUE; // invalid value, or is NaN prefered?
temperature = DHTLIB_INVALID_VALUE; // invalid value
return rv; // propagate error value
}

// CONVERT AND STORE
humidity = word(bits[0], bits[1]) * 0.1;
temperature = word(bits[2] & 0x7F, bits[3]) * 0.1;
if (bits[2] & 0x80) // negative temperature
{
temperature = -temperature;
}

// TEST CHECKSUM
uint8_t sum = bits[0] + bits[1] + bits[2] + bits[3];
if (bits[4] != sum)
{
return DHTLIB_ERROR_CHECKSUM;
}
return DHTLIB_OK;
}

/////////////////////////////////////////////////////
//
// PRIVATE
//

// return values:
// DHTLIB_OK
// DHTLIB_ERROR_TIMEOUT
int dht::_readSensor(uint8_t pin, uint8_t wakeupDelay)
{
// INIT BUFFERVAR TO RECEIVE DATA
uint8_t mask = 128;
uint8_t idx = 0;

// replace digitalRead() with Direct Port Reads.
// reduces footprint ~100 bytes => portability issue?
// direct port read is about 3x faster
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
volatile uint8_t *PIR = portInputRegister(port);

// EMPTY BUFFER
for (uint8_t i = 0; i < 5; i++) bits[i] = 0;

// REQUEST SAMPLE
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW); // T-be
delay(wakeupDelay);
digitalWrite(pin, HIGH); // T-go
delayMicroseconds(40);
pinMode(pin, INPUT);

// GET ACKNOWLEDGE or TIMEOUT
uint16_t loopCntLOW = DHTLIB_TIMEOUT;
while ((*PIR & bit) == LOW ) // T-rel
{
if (--loopCntLOW == 0) return DHTLIB_ERROR_TIMEOUT;
}

uint16_t loopCntHIGH = DHTLIB_TIMEOUT;
while ((*PIR & bit) != LOW ) // T-reh
{
if (--loopCntHIGH == 0) return DHTLIB_ERROR_TIMEOUT;
}

// READ THE OUTPUT - 40 BITS => 5 BYTES
for (uint8_t i = 40; i != 0; i--)
{
loopCntLOW = DHTLIB_TIMEOUT;
while ((*PIR & bit) == LOW )
{
if (--loopCntLOW == 0) return DHTLIB_ERROR_TIMEOUT;
}

uint32_t t = micros();

loopCntHIGH = DHTLIB_TIMEOUT;
while ((*PIR & bit) != LOW )
{
if (--loopCntHIGH == 0) return DHTLIB_ERROR_TIMEOUT;
}

if ((micros() - t) > 40)
{
bits[idx] |= mask;
}
mask >>= 1;
if (mask == 0) // next byte?
{
mask = 128;
idx++;
}
}
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);

return DHTLIB_OK;
}
//
// END OF FILE
//

สินค้านี้ยังไม่มีคนรีวิว
คำถาม
รายละเอียด
ชื่อผู้ถาม
ข้อมูลสำหรับการติดต่อกลับ (ไม่เปิดเผย เห็นเฉพาะเจ้าของร้าน)
อีเมล
เบอร์มือถือ
  • ถาม
สินค้านี้ยังไม่มีคนถามคำถาม
ธนาคาร เลขที่บัญชี ชื่อบัญชี สาขา ประเภทบัญชี
ธ.กรุงไทย 1620203219 นายธนากร อินทสุทธิ์ สาขาจามจุรีสแควร์ ออมทรัพย์
ธ.ไทยพาณิชย์ 0455654894 นายธนากร อินทสุทธิ์ สาขาสภากาชาดไทย ออมทรัพย์
ธ.กสิกรไทย 6302246449 นายธนากร อินทสุทธิ์ สาขาจามจุรีสแควร์ ออมทรัพย์
ธ.กรุงศรีอยุธยา 5111214369 นายธนากร อินทสุทธิ์ สาขาเซ็นทรัลเวิลด์ ออมทรัพย์
ธ.กรุงเทพ 8790262391 นายธนากร อินทสุทธิ์ สาขาเซ็นทรัลเวิลด์ สะสมทรัพย์
ธ.ออมสิน 020148733478 นายธนากร อินทสุทธิ์ สาขาเซ็นทรัลเวิลด์ เผื่อเรียก
ธ.ทหารไทย 2162372227 นายธนากร อินทสุทธิ์ สาขาเซ็นทรัลเวิลด์ ออมทรัพย์
  • ค่าธรรมเนียม 3.9% + 11 THB
  • การชำระผ่าน PayPal คุณไม่จำเป็นต้องแจ้งชำระเงิน เนื่องจากระบบจะจัดการให้คุณทันที ที่คุณชำระเงินเสร็จสมบูรณ์
เพื่อความเข้าใจตรงกันระหว่างผู้ซื้อและผู้ขายและมิตรภาพที่ดีต่อกัน กรุณาทำความเข้าใจเงื่อนไข

NEW PRODUCTS

รหัสสินค้า
200.00 บาท
  • สั่งซื้อ
รหัสสินค้า
600.00 บาท
  • สั่งซื้อ
รหัสสินค้า
40.00 บาท
25.00 บาท
  • สั่งซื้อ
รหัสสินค้า
200.00 บาท
80.00 บาท
สินค้าหมด
รหัสสินค้า
30.00 บาท
25.90 บาท
  • สั่งซื้อ
รหัสสินค้า
70.00 บาท
เร็วๆนี้
รหัสสินค้า
75.00 บาท
สินค้าหมด
รหัสสินค้า
45.00 บาท
40.00 บาท
สินค้าหมด
รหัสสินค้า
100.00 บาท
70.00 บาท
  • สั่งซื้อ
รหัสสินค้า
300.00 บาท
240.00 บาท
  • สั่งซื้อ
รหัสสินค้า
200.00 บาท
130.00 บาท
  • สั่งซื้อ
รหัสสินค้า
600.00 บาท
480.00 บาท
  • สั่งซื้อ
รหัสสินค้า
600.00 บาท
  • สั่งซื้อ
รหัสสินค้า
1,000.00 บาท
  • สั่งซื้อ
รหัสสินค้า
220.00 บาท
  • สั่งซื้อ

MEMBER

เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)

STATISTICS

หน้าที่เข้าชม135,206 ครั้ง
ผู้ชมทั้งหมด44,154 ครั้ง
เปิดร้าน21 ก.พ. 2558
ร้านค้าอัพเดท15 ก.ค. 2560

CONTACT US

facebook

RECOMMENDED

รหัสสินค้า
100.00 บาท
60.00 บาท
  • สั่งซื้อ
รหัสสินค้า
200.00 บาท
  • สั่งซื้อ
รหัสสินค้า
150.00 บาท
100.00 บาท
สินค้าหมด
รหัสสินค้า
85.00 บาท
สินค้าหมด
รหัสสินค้า
300.00 บาท
  • สั่งซื้อ
รหัสสินค้า
45.00 บาท
สินค้าหมด
รหัสสินค้า
40.00 บาท
25.00 บาท
  • สั่งซื้อ
รหัสสินค้า
100.00 บาท
25.00 บาท
  • สั่งซื้อ
รหัสสินค้า
350.00 บาท
สินค้าหมด
รหัสสินค้า
60.00 บาท
  • สั่งซื้อ
รหัสสินค้า
490.00 บาท
  • สั่งซื้อ
รหัสสินค้า
250.00 บาท
  • สั่งซื้อ

BEST SELLER

รหัสสินค้า
5.00 บาท
  • สั่งซื้อ
รหัสสินค้า
100.00 บาท
40.00 บาท
  • สั่งซื้อ
รหัสสินค้า
100.00 บาท
  • สั่งซื้อ
รหัสสินค้า
170.00 บาท
70.00 บาท
สินค้าหมด
รหัสสินค้า
60.00 บาท
  • สั่งซื้อ
รหัสสินค้า
200.00 บาท
135.00 บาท
  • สั่งซื้อ
รหัสสินค้า
80.00 บาท
  • สั่งซื้อ
รหัสสินค้า
100.00 บาท
30.00 บาท
  • สั่งซื้อ
รหัสสินค้า
600.00 บาท
480.00 บาท
  • สั่งซื้อ
รหัสสินค้า
600.00 บาท
  • สั่งซื้อ
รหัสสินค้า
150.00 บาท
80.00 บาท
  • สั่งซื้อ
รหัสสินค้า
300.00 บาท
  • สั่งซื้อ
รหัสสินค้า
45.00 บาท
40.00 บาท
สินค้าหมด
รหัสสินค้า
200.00 บาท
45.00 บาท
  • สั่งซื้อ
รหัสสินค้า
150.00 บาท
  • สั่งซื้อ
ตะกร้าของฉัน (0)
มีสินค้าทั้งหมด 0 ชนิด 0 ชิ้น
0 บาทราคาสินค้าทั้งหมด
(ยังไม่รวมค่าจัดส่ง)
สั่งซื้อสินค้า
ตะกร้า
( 0 )
รายการสั่งซื้อของฉัน
เข้าสู่ระบบด้วย
เข้าสู่ระบบ
สมัครสมาชิก

ยังไม่มีบัญชีเทพ สร้างบัญชีใหม่ ไม่เกิน 5 นาที
สมัครสมาชิก (ฟรี)
รายการสั่งซื้อของฉัน
ข้อมูลร้านค้านี้
ร้านArduiThai
ArduiThai
ขายบอร์ด Arduino และสินค้าที่เกี่ยวข้องกับระบบอัตโนมัติ
เบอร์โทร :
อีเมล : tanakorn.in@gmail.com
ส่งข้อความติดต่อร้าน
เกี่ยวกับร้านค้านี้
บันทึกเป็นร้านโปรด
Join (สมัครสมาชิกร้าน)
แชร์หน้านี้
แชร์หน้านี้
พูดคุยกับร้านนี้

TOP เลื่อนขึ้นบนสุด
Go to Top