Matrix - Temperature and Humidity Sensor

From FriendlyELEC WiKi
Revision as of 08:47, 5 August 2015 by Yftan (Talk | contribs) (Features)

Jump to: navigation, search

查看中文

1 Introduction

Temperature and Humidity Sensor

This module utilizes the DHT11 temperature and humidity sensor. The DHT11 sensor's relative humidity range is 20%-80% ±5% and its temperature range is 0℃-50℃ ±2℃. DHT11 uses a single bus communication which needs only one data line. Its DATA line is used for communication and synchronization between the microprocessor and DHT11. Its data format consists of the 8bit humidity integer data and 8bit the Humidity decimal data, and 8 bit temperature integer data and 8bit fractional temperature data and 8 bit parity bit. Its application of a dedicated digital modules collection technology and the temperature and humidity sensing technology, to ensure that the product has high reliability, excellent long-term stability, low cost and long distance (up to 20 meters) signal transmission. We simplified the DHT11's 4-pin to 3-pin.

2 Features

  • Humidity range: 20-80%RH, temperature range: 0~50℃
  • Humidity accuracy:±5%RH, temperature accuracy: ±2℃
  • 一线协议
  • 2.54 mm spacing pin

3 使用方法

3.1 连接

  • 连接到Tiny4412 SDK (1506)
GND针脚: 接地
VCC: 接5V
S针脚:接GPIO PIN1, 必须使用中断引脚,可用引脚(1、2、3、4、9、10)

3.2 Linux下的C示例

#include <stdio.h>
#include <stdlib.h>
#include "libfahw.h"
 
void parseCmd(int argc, char **argv, int *pin)
{
    int num = atoi(argv[1]);
    switch(num) {
    case 1:
        *pin = TINY4412_GPIO_PIN1;
        break;
    case 2:
        *pin = TINY4412_GPIO_PIN2;
        break;
    case 3:
        *pin = TINY4412_GPIO_PIN3;
        break;
    case 4:
        *pin = TINY4412_GPIO_PIN4;
        break;
    case 9:
        *pin = TINY4412_GPIO_PIN9;
        break;
    case 10:
        *pin = TINY4412_GPIO_PIN10;
        break;
    default:
        printf("Unsupported pin TINY4412_GPIO_PIN%d\n", num);
        num = 1;
        *pin = TINY4412_GPIO_PIN1;
    }
    printf("Using pin TINY4412_GPIO_PIN%d\n", num);
}
 
int main(int argc, char ** argv)
{
    int ret = -1;
    int dhtTemp = 0;
    int dhtHdty = 0;
    int devFD = -1;
    int pin = TINY4412_GPIO_PIN1;
 
    if (argc == 2) {
        parseCmd(argc, argv, &pin);
    } else {
        printf("Using default pin TINY4412_GPIO_PIN1\n");
    }
    if ((devFD = dht11Init(pin)) == -1) {
        printf("Fail to init dht11\n");
        return -1;
    }
 
    if ((ret = dht11Read(DHT_HUMIDITY, &dhtHdty)) != -1) {
        printf("Get humidity : %d\n", dhtHdty);
    } else {
        printf("Faided to get humidity\n");
    }
 
    if ((ret = dht11Read(DHT_TEMP, &dhtTemp)) != -1) {
        printf("Get temperature : %d\n", dhtTemp);
    } else {
        printf("Faided to get temperature\n");
    }
 
    dht11DeInit(devFD);
    return ret;
}

3.3 编译并运行示例

git clone http://github.com/friendlyarm/fa-hardware.git
cd fa-hardware
cd demo
cd matrix-temperature_and_humidity_sensor
make

将编译生成的dht11通过ftp上传到开发板上运行即可测试。

4 相关资料