“(SKU:SEN030000)DHT11数字温湿度传感器”的版本间的差异
来自YwRobot Studio Wiki
YWrobot WB2(讨论 | 贡献) (→产品参数) |
YWrobot WB1(讨论 | 贡献) (→连接图) |
||
| 第25行: | 第25行: | ||
===连接图=== | ===连接图=== | ||
| − | [[File: | + | [[File:Dht11接线图-02.jpg |400px|]] |
| + | [[File:Dht11接线图-03.jpg |400px|]] | ||
===样例代码=== | ===样例代码=== | ||
2019年1月30日 (三) 14:21的版本
简介
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
传感器通过3P数字线直插Arduino。单线制串行接口,使系统集成变得简易快捷。配合控制器及代码,可以快速搭建产品。超小的体积、极低的功耗。
产品参数
- 尺寸:30*21mm
- 重量:4g
- 固定孔:3mm
- 孔距:15mm
- 电压:3.3V、5V
- 端口:数字双向单总线
- 温度范围:0-50℃ ±2℃
- 湿度范围:20-90%RH ±5%RH
- 平台:Arduino、单片机、ARM、树莓派
使用教程
连接图
样例代码
#define DHT11_PIN 0 // ADC0
byte read_dht11_dat()
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++)
{
while(!(PINC & _BV(DHT11_PIN))); // wait for 50us
delayMicroseconds(30);
if(PINC & _BV(DHT11_PIN))
result |=(1<<(7-i));
while((PINC & _BV(DHT11_PIN))); // wait '1' finish
}
return result;
}
void setup()
{
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
Serial.begin(9600);
Serial.println("Ready");
}
void loop()
{
byte dht11_dat[5];
byte dht11_in;
byte i;// start condition
// 1. pull-down i/o pin from 18ms
PORTC &= ~_BV(DHT11_PIN);
delay(18);
PORTC |= _BV(DHT11_PIN);
delayMicroseconds(40);
DDRC &= ~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in = PINC & _BV(DHT11_PIN);
if(dht11_in)
{
Serial.println("dht11 start condition 1 not met");
return;
}
delayMicroseconds(80);
dht11_in = PINC & _BV(DHT11_PIN);
if(!dht11_in)
{
Serial.println("dht11 start condition 2 not met");
return;
}
delayMicroseconds(80);// now ready for data reception
for (i=0; i<5; i++)
dht11_dat[i] = read_dht11_dat();
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];// check check_sum
if(dht11_dat[4]!= dht11_check_sum)
{
Serial.println("DHT11 checksum error");
}
Serial.print("Current humdity = ");
Serial.print(dht11_dat[0], DEC);
Serial.print(".");
Serial.print(dht11_dat[1], DEC);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(dht11_dat[2], DEC);
Serial.print(".");
Serial.print(dht11_dat[3], DEC);
Serial.println("C ");
delay(2000);
}