Difference between revisions of "Matrix - Temperature and Humidity Sensor"

From FriendlyELEC WiKi
Jump to: navigation, search
(相关资料)
(Feb-23-2016)
 
(21 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Matrix - Temperature and Humidity Sensor/zh|查看中文]]
 
[[Matrix - Temperature and Humidity Sensor/zh|查看中文]]
  
 +
==Introduction==
 +
[[File:TemperatureAndHumiditySensor01.png|thumb|Temperature and Humidity Sensor]]
 +
* The Matrix-Temperature_and_Humidity_Sensor module is used to detect temperature and humidity.
 +
* It utilizes the DHT11 temperature and humidity sensor. Its humidity range is 20% - 80% and the accuracy is 5%. Its temperature range is 0℃ - 50℃ and the accuracy is ±2℃.
 +
 +
==Features==
 +
* Humidity range: 20 - 80%RH, Temperature range 0 ~ 50℃
 +
* Accuracy of humidity: +-5%RH, accuracy of temperature: +-2℃
 +
* One wire communication
 +
* 2.54 mm spacing pin
 +
* PCB dimension (mm): 16 x 32
 +
[[File:dht11pcb.png|frameless|400px|温湿度传感器PCB]]
 +
 +
Pin Description: <br>
 +
{| class="wikitable"
 +
|-
 +
|Pin || Description
 +
|-
 +
|S    || GPIO
 +
|-
 +
|V    || Supply Voltage 5V
 +
|-
 +
|G    || Ground
 +
|}
 +
 +
==Basic Device Operation==
 +
The DHT11 module uses a simplified single-bus serial communication. DATA controls communication and synchronization between the microprocessor and DHT11. A data transfer takes 4ms. The data format contains an integer part and a decimal part. The basic operation is as follows:
 +
* a transmission of 40 data, the high first-out
 +
* data format: 8bit humidity integer data + 8bit the Humidity decimal data <br>
 +
* 8bit temperature integer data + 8bit fractional temperature data <br>
 +
* 8 bit parity bit <br>
 +
* If a transmission is successful the “8bit humidity integer data + 8bit humidity decimal data +8 bit temperature integer data + 8bit temperature fractional data” 8bit checksum is equal to the results of the last eight. <br>
 +
* After the user host (MCU) sends a signal DHT11 is converted from low-power mode to high-speed mode, until the host begins to signal the end. Then DHT11 sends a response signal to send 40bit data, and trigger a letter collection. If DHT11 doesn't receive a signal from the host it will not begin a letter collection. After the letter collection is done DHT11 will turn to low power mode.
 +
 +
 +
==Applications==
 +
===Connect to NanoPi M1===
 +
Refer to the following connection diagram to connect the module to the NanoPi M1:<br>
 +
[[File:Matrix-Temperature_and_Humidity_Sensor_nanopi_m1.jpg|frameless|600px|Matrix-Temperature_and_Humidity_Sensor_nanopi_m1]]
 +
 +
Connection Details:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Temperature_and_Humidity_Sensor || NanoPi M1
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 +
===Connect to NanoPi 2===
 +
Refer to the following connection diagram to connect the module to the NanoPi 2:<br>
 +
[[File:Matrix-Temperature_and_Humidity_Sensor_nanopi_2.jpg|frameless|600px|Matrix-Temperature_and_Humidity_Sensor_nanopi_2]]
 +
 +
Connection Details:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Temperature_and_Humidity_Sensor || NanoPi 2
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 +
===Connect to NanoPi M2 / NanoPi 2 Fire===
 +
Refer to the following connection diagram to connect the module to the NanoPi M2/ NanoPi 2 Fire:<br>
 +
[[File:Matrix-Temperature_and_Humidity_Sensor_nanopi_m2.jpg|frameless|600px|Matrix-Temperature_and_Humidity_Sensor_nanopi_m2]]
 +
 +
Connection Details:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Temperature_and_Humidity_Sensor || NanoPi M2
 +
|-
 +
|S    || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G    || Pin6
 +
|}
 +
 +
===Connect to NanoPC-T2===
 +
Refer to the following connection diagram to connect the module to the NanoPC-T2:<br>
 +
[[File:Matrix-Temperature_and_Humidity_Sensor_NanoPC-T2.jpg|frameless|600px|Matrix-Temperature_and_Humidity_Sensor_NanoPC-T2]]
 +
 +
Connection Details:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Temperature_and_Humidity_Sensor || NanoPC-T2
 +
|-
 +
|S    || Pin15
 +
|-
 +
|V    || Pin29
 +
|-
 +
|G    || Pin30
 +
|}
 +
 +
==Compile & Run Test Program==
 +
Boot your ARM board with Debian and copy the matrix code:
 +
<syntaxhighlight lang="bash">
 +
$ apt-get update && apt-get install git
 +
$ git clone https://github.com/friendlyarm/matrix.git
 +
</syntaxhighlight>
 +
If your cloning is done successfully a "matrix" directory will be generated.
 +
 +
Compile and install Matrix:
 +
<syntaxhighlight lang="bash">
 +
$ cd matrix
 +
$ make && make install
 +
</syntaxhighlight>
 +
 +
Run test program:
 +
<syntaxhighlight lang="bash">
 +
$ matrix-temp_humidity
 +
</syntaxhighlight>
 +
Note: this module is not plug and play therefore before running the module please make sure it is connected to an ARM board.<br>
 +
Here is what you should observe:<br>
 +
<syntaxhighlight lang="bash">
 +
The humidity is 35000
 +
The temperature is 26000
 +
</syntaxhighlight>
 +
The module successfully read the environment's humidity and temperature values.
 +
 +
==Code Sample==
 +
This Matrix code sample can work with all the ARM boards mentioned in this module's wiki. The name of this code sample is "matrix-temperature_and_humidity_sensor". Here is its source code:
 +
<syntaxhighlight lang="c">
 +
int main(int argc, char ** argv)
 +
{
 +
    int ret = -1;
 +
    int dhtTemp=0, dhtHdty=0, board;
 +
    char modStr[BUF_SIZE];
 +
    int pin = GPIO_PIN(7);
 +
 +
    if ((board = boardInit()) < 0) {
 +
        printf("Fail to init board\n");
 +
        return -1;
 +
    }   
 +
    if (board == BOARD_NANOPI_T2)
 +
        pin = GPIO_PIN(15);
 +
   
 +
    sprintf(modStr, "modprobe %s gpio=%d", DRIVER_MODULE, pintoGPIO(pin));
 +
    system(modStr);
 +
    if ((ret = dht11Read(DHT_HUMIDITY, &dhtHdty)) != -1) {
 +
        printf("The humidity is %d\n", dhtHdty);
 +
    } else {
 +
        printf("Faided to get humidity\n");
 +
    }
 +
    if ((ret = dht11Read(DHT_TEMP, &dhtTemp)) != -1) {
 +
        printf("The temperature is %d\n", dhtTemp);
 +
    } else {
 +
        printf("Faided to get temperature\n");
 +
    }
 +
    system("rmmod "DRIVER_MODULE);
 +
    return ret;
 +
}
 +
</syntaxhighlight>
 +
For more details about this APIs called in this code sample refer to [[Matrix API reference manual]] <br>
 +
 +
<!---
 +
==Download Matrix Source Code==
 +
All the matrix modules' code samples are open source. They are maintained on GitHub - https://github.com/friendlyarm/matrix.git <br>
 +
Each branch in this hub contains the matrix modules' code samples for a board that the matrix modules can work with.<br>
 +
* The nanopi branch contains the matrix modules' code samples for the NanoPi
 +
* The nanopi 2 branch contains the matrix modules' code samples for the NanoPi 2
 +
* The tiny4412 branch contains the matrix modules' code samples for the Tiny4412
 +
* The raspberrypi branch contains the matrix modules' code samples for the RaspberryPi
 +
 +
Please follow the steps below to get the source code:<br>
 +
Install the git utility on a PC running Ubuntu14.04
 +
<syntaxhighlight lang="bash">
 +
$ sudo apt-get install git
 +
</syntaxhighlight>
 +
 +
Clone the matrix code from GitHub
 +
<syntaxhighlight lang="bash">
 +
$ git clone https://github.com/friendlyarm/matrix.git
 +
</syntaxhighlight>
 +
If this is successful a "matrix" directory will be generated, which will contain all the matrix modules' code samples.
 +
 +
==Connect to NanoPi 2==
 +
===Hardware Connection===
 +
Please refer to the following connection diagram to connect the Matrix-Temperature_and_Humidity_Sensor to the NanoPi 2:<br>
 +
[[File:Matrix-Temperature_and_Humidity_Sensor_nanopi_2.jpg|frameless|600px|Matrix-Temperature_and_Humidity_Sensor_nanopi_2]]
 +
 +
Connection Details:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Temperature_and_Humidity_Sensor || NanoPi 2
 +
|-
 +
|S  || Pin7
 +
|-
 +
|V  || Pin4
 +
|-
 +
|G  || Pin6
 +
|}
 +
 +
===Compile Test Program===
 +
Please login the matrix hub and enter the nanopi2 branch
 +
<syntaxhighlight lang="bash">
 +
$ cd matrix
 +
$ git checkout nanopi2
 +
</syntaxhighlight>
 +
 +
Compile the matrix code
 +
<syntaxhighlight lang="bash">
 +
$ make CROSS_COMPILE=arm-linux- clean
 +
$ make CROSS_COMPILE=arm-linux-
 +
$ make CROSS_COMPILE=arm-linux- install
 +
</syntaxhighlight>
 +
Note: please make sure to install the cross compiler "arm-linux-gcc-4.9.3" on your PC, which is used to compile files for the NanoPi 2.<br>
 +
Generated library files are under the "install/lib" directory. The test program is under the "install/usr/bin" directory.<br>
 +
The modules are under the "modules" directory. The driver's source code is in github: https://github.com/friendlyarm/linux-3.4.y.git <br>
 +
 +
===Run Test Program===
 +
Please insert a TF card which is flashed with Debian to a Linux host and mount its boot and rootfs sections.<br>
 +
We assume the rootfs is mounted to /media/rootfs then please run the following commands to copy the module, library and test program to the card.<br>
 +
<syntaxhighlight lang="bash">
 +
$ cp modules /media/rootfs/ -r
 +
$ cp install/lib/* /media/rootfs/lib/ -d
 +
$ cp install/usr/bin/* /media/rootfs/usr/bin/
 +
</syntaxhighlight>
 +
 +
Insert this TF card to your NanoPi 2, power on and run the following commands to load the driver.<br>
 +
<syntaxhighlight lang="bash">
 +
$ cd /modules
 +
$ insmod dht11.ko
 +
</syntaxhighlight>
 +
 +
Start the matrix-temp_humidity program.<br>
 +
<syntaxhighlight lang="bash">
 +
$ matrix-temp_humidity
 +
</syntaxhighlight>
 +
 +
Here is what you expect to observe:<br>
 +
[[File:matrix-temp_humidity_result.png|frameless|600px|matrix-temp_humidity_result]] <br>
 +
 +
===Code Sample===
 +
<syntaxhighlight lang="c">
 +
int main(int argc, char ** argv)
 +
{
 +
    int ret = -1;
 +
    int dhtTemp = 0;
 +
    int dhtHdty = 0;
 +
 +
    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");
 +
    }
 +
 +
    return ret;
 +
}
 +
</syntaxhighlight>
 +
 +
==Connect to NanoPi==
 +
===Preparations===
 +
Please install a Debian on a NanoPi and an appropriate cross compiler on a PC. Please refer to wiki:[[NanoPi/zh|NanoPi]] <br>
 +
Compile a NanoPi kernel. Note: please use the kernel's source code from the nanopi-v4.1.y-matrix branch.<br>
 +
<syntaxhighlight lang="bash">
 +
$ git clone https://github.com/friendlyarm/linux-4.x.y.git
 +
$ cd linux-4.x.y
 +
$ git checkout nanopi-v4.1.y-matrix
 +
$ make nanopi_defconfig
 +
$ touch .scmversion
 +
$ make
 +
</syntaxhighlight>
 +
 +
===Hardware Connection===
 +
Please refer to the following connection diagram to connect the Matrix-Temperature_and_Humidity_Sensor to the NanoPi <br>
 +
[[File:matrix-temperature_and_humidity_sensor_nanopi.jpg|frameless|600px|matrix-temperature_and_humidity_sensor_nanopi]]
 +
<br>
 +
Connection Details:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Temperature_and_Humidity_Sensor || NanoPi
 +
|-
 +
|S  || Pin7
 +
|-
 +
|V    || Pin4
 +
|-
 +
|G  || Pin6
 +
|}
 +
 +
===Compile Test Program===
 +
Please login the matrix hub and enter the nanopi branch
 +
<syntaxhighlight lang="bash">
 +
$ cd matrix
 +
$ git checkout nanopi
 +
</syntaxhighlight>
 +
 +
Compile the matrix code
 +
<syntaxhighlight lang="bash">
 +
$ make CROSS_COMPILE=arm-linux- clean
 +
$ make CROSS_COMPILE=arm-linux-
 +
$ make CROSS_COMPILE=arm-linux- install
 +
</syntaxhighlight>
 +
Note: please make sure to install the cross compiler "arm-linux-gcc-4.4.3" on your PC, which is used to compile files for the NanoPi-Debian.<br>
 +
Generated library files are under the "install/lib" directory. Applications are under the "install/usr/bin" directory. The test program for the "Matrix-Temperature_and_Humidity_Sensor" module is "matrix-temp_humidity".<br>
 +
 +
===Run Test Program===
 +
Please copy the library files and test program to the NanoPi
 +
<syntaxhighlight lang="bash">
 +
$ cp install/usr/usr/bin/* nanopi_rootfs/usr/usr/bin/
 +
$ cp install/lib/* nanopi_rootfs/lib/ -d
 +
</syntaxhighlight>
 +
 +
Power on the NanoPi and run the following command in Debian's terminal <br>
 +
Note: this module is not plug and play therefore before running the module please make sure it is connected to a NanoPi.
 +
<syntaxhighlight lang="bash">
 +
$ matrix-temp_humidity
 +
</syntaxhighlight>
 +
 +
===Code Sample===
 +
<syntaxhighlight lang="c">
 +
int main(int argc, char ** argv)
 +
{
 +
    int ret = -1;
 +
    int dhtTemp = 0;
 +
    int dhtHdty = 0;
 +
    int devFD = -1;
 +
    int pin = GPIO_PIN1;
 +
 +
    if (argc == 2) {
 +
        parseCmd(argc, argv, &pin);
 +
    } else {
 +
        printf("Using default pin 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;
 +
}
 +
</syntaxhighlight>
 +
 +
==Connect to Tiny4412==
 +
===Preparations===
 +
Please refer to the Tiny4412's user's manual to install a UbuntuCore on the Tiny4412 and install an appropriate cross compiler on a PC.<br>
 +
Note: only the Tiny4412SDK-1506 carrier board can work with this module.
 +
 +
===Hardware Connection===
 +
Please refer to the following diagram to connect the Matrix-Temperature_and_Humidity_Sensor to the Tiny4412 <br>
 +
[[File:matrix-temperature_and_humidity_sensor_tiny4412.jpg|frameless|600px|matrix-temperature_and_humidity_sensor_tiny4412]]
 +
 +
Connection Details:
 +
{| class="wikitable"
 +
|-
 +
|Matrix-Temperature_and_Humidity_Sensor || Tiny4412
 +
|-
 +
|S  || GPIO1 S
 +
|-
 +
|V    || GPIO1 5V
 +
|-
 +
|G  || GPIO1 GND
 +
|}
 +
 +
===Compile Test Program===
 +
Please login the Matrix hub and enter the matrix-tiny4412 branch
 +
<syntaxhighlight lang="bash">
 +
$ cd matrix
 +
$ git checkout tiny4412
 +
</syntaxhighlight>
 +
 +
Compile the matrix code
 +
<syntaxhighlight lang="bash">
 +
$ make CROSS_COMPILE=arm-linux-gnueabihf- clean
 +
$ make CROSS_COMPILE=arm-linux-gnueabihf-
 +
$ make CROSS_COMPILE=arm-linux-gnueabihf- install
 +
</syntaxhighlight>
 +
Note: please make sure to install the cross compiler "arm-linux-gnueabihf-gcc-4.7.3" on your PC, which is used to compile files for the Tiny4412-UbuntuCore.<br>
 +
Generated library files are under the "install/lib" directory. Applications are under the "install/usr/bin" directory. The test program for the "Matrix-Temperature_and_Humidity_Sensor" module is "matrix-temp_humidity".
 +
 +
===Run Test Program===
 +
Please copy the library files and test program to the Tiny4412
 +
<syntaxhighlight lang="bash">
 +
$ cp install/usr/usr/bin/* tiny4412_rootfs/usr/usr/bin/
 +
$ cp install/lib/* tiny4412_rootfs/lib/ -d
 +
</syntaxhighlight>
 +
 +
Power on the Tiny4412 and run the following command in UbuntuCore's terminal <br>
 +
Note: this module is not plug and play therefore before running the module please make sure it is connected to a Tiny4412.
 +
<syntaxhighlight lang="bash">
 +
$ matrix-temp_humidity
 +
</syntaxhighlight>
 +
 +
===Code Sample===
 +
<syntaxhighlight lang="c">
 +
int main(int argc, char ** argv)
 +
{
 +
    int ret = -1;
 +
    int dhtTemp = 0;
 +
    int dhtHdty = 0;
 +
    int devFD = -1;
 +
    int pin = GPIO_PIN1;
 +
 +
    if (argc == 2) {
 +
        parseCmd(argc, argv, &pin);
 +
    } else {
 +
        printf("Using default pin 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;
 +
}
 +
</syntaxhighlight>
 +
 +
==Connect to RaspberryPi==
 +
 +
==Connect to Arduino==
 +
--->
 +
 +
==Resources==
 +
[http://akizukidenshi.com/download/ds/aosong/DHT11.pdf DHT11.pdf]
 +
 +
==Update Log==
 +
===Feb-23-2016===
 +
* Added the description for "NanoPi 2 branch" in Section 4
 +
* Added Section 5: Connect to NanoPi 2
 +
===June-24-2016===
 +
* Re-organized and simplified wiki
 +
 +
 +
<!--
 
==Introduction==
 
==Introduction==
 
[[File:TemperatureAndHumiditySensor01.png|thumb|Temperature and Humidity Sensor]]
 
[[File:TemperatureAndHumiditySensor01.png|thumb|Temperature and Humidity Sensor]]
Line 13: Line 475:
 
==How To==
 
==How To==
 
===Connection===
 
===Connection===
*Connect Tiny4412 SDK (1506)
+
*Connect to Tiny4412 SDK (1506)
 
::GND:  Ground
 
::GND:  Ground
 
::VCC:  5V
 
::VCC:  5V
::S:    GPIO PIN1, 必须使用中断引脚,可用引脚(1、2、3、4、9、10)
+
::S:    GPIO PIN1, this pin has to be connected to an interrupt pin.
  
 
===Code Sample in C Under Linux===
 
===Code Sample in C Under Linux===
Line 100: Line 562:
  
 
==Resources==
 
==Resources==
 +
-->

Latest revision as of 15:50, 24 June 2016

查看中文

1 Introduction

Temperature and Humidity Sensor
  • The Matrix-Temperature_and_Humidity_Sensor module is used to detect temperature and humidity.
  • It utilizes the DHT11 temperature and humidity sensor. Its humidity range is 20% - 80% and the accuracy is 5%. Its temperature range is 0℃ - 50℃ and the accuracy is ±2℃.

2 Features

  • Humidity range: 20 - 80%RH, Temperature range 0 ~ 50℃
  • Accuracy of humidity: +-5%RH, accuracy of temperature: +-2℃
  • One wire communication
  • 2.54 mm spacing pin
  • PCB dimension (mm): 16 x 32

温湿度传感器PCB

Pin Description:

Pin Description
S GPIO
V Supply Voltage 5V
G Ground

3 Basic Device Operation

The DHT11 module uses a simplified single-bus serial communication. DATA controls communication and synchronization between the microprocessor and DHT11. A data transfer takes 4ms. The data format contains an integer part and a decimal part. The basic operation is as follows:

  • a transmission of 40 data, the high first-out
  • data format: 8bit humidity integer data + 8bit the Humidity decimal data
  • 8bit temperature integer data + 8bit fractional temperature data
  • 8 bit parity bit
  • If a transmission is successful the “8bit humidity integer data + 8bit humidity decimal data +8 bit temperature integer data + 8bit temperature fractional data” 8bit checksum is equal to the results of the last eight.
  • After the user host (MCU) sends a signal DHT11 is converted from low-power mode to high-speed mode, until the host begins to signal the end. Then DHT11 sends a response signal to send 40bit data, and trigger a letter collection. If DHT11 doesn't receive a signal from the host it will not begin a letter collection. After the letter collection is done DHT11 will turn to low power mode.


4 Applications

4.1 Connect to NanoPi M1

Refer to the following connection diagram to connect the module to the NanoPi M1:
Matrix-Temperature_and_Humidity_Sensor_nanopi_m1

Connection Details:

Matrix-Temperature_and_Humidity_Sensor NanoPi M1
S Pin7
V Pin4
G Pin6

4.2 Connect to NanoPi 2

Refer to the following connection diagram to connect the module to the NanoPi 2:
Matrix-Temperature_and_Humidity_Sensor_nanopi_2

Connection Details:

Matrix-Temperature_and_Humidity_Sensor NanoPi 2
S Pin7
V Pin4
G Pin6

4.3 Connect to NanoPi M2 / NanoPi 2 Fire

Refer to the following connection diagram to connect the module to the NanoPi M2/ NanoPi 2 Fire:
Matrix-Temperature_and_Humidity_Sensor_nanopi_m2

Connection Details:

Matrix-Temperature_and_Humidity_Sensor NanoPi M2
S Pin7
V Pin4
G Pin6

4.4 Connect to NanoPC-T2

Refer to the following connection diagram to connect the module to the NanoPC-T2:
Matrix-Temperature_and_Humidity_Sensor_NanoPC-T2

Connection Details:

Matrix-Temperature_and_Humidity_Sensor NanoPC-T2
S Pin15
V Pin29
G Pin30

5 Compile & Run Test Program

Boot your ARM board with Debian and copy the matrix code:

$ apt-get update && apt-get install git
$ git clone https://github.com/friendlyarm/matrix.git

If your cloning is done successfully a "matrix" directory will be generated.

Compile and install Matrix:

$ cd matrix
$ make && make install

Run test program:

$ matrix-temp_humidity

Note: this module is not plug and play therefore before running the module please make sure it is connected to an ARM board.
Here is what you should observe:

The humidity is 35000
The temperature is 26000

The module successfully read the environment's humidity and temperature values.

6 Code Sample

This Matrix code sample can work with all the ARM boards mentioned in this module's wiki. The name of this code sample is "matrix-temperature_and_humidity_sensor". Here is its source code:

int main(int argc, char ** argv)
{
    int ret = -1;
    int dhtTemp=0, dhtHdty=0, board;
    char modStr[BUF_SIZE];
    int pin = GPIO_PIN(7);
 
    if ((board = boardInit()) < 0) {
        printf("Fail to init board\n");
        return -1;
    }    
    if (board == BOARD_NANOPI_T2)
        pin = GPIO_PIN(15);
 
    sprintf(modStr, "modprobe %s gpio=%d", DRIVER_MODULE, pintoGPIO(pin));
    system(modStr);
    if ((ret = dht11Read(DHT_HUMIDITY, &dhtHdty)) != -1) {
        printf("The humidity is %d\n", dhtHdty);
    } else {
        printf("Faided to get humidity\n");
    }
    if ((ret = dht11Read(DHT_TEMP, &dhtTemp)) != -1) {
        printf("The temperature is %d\n", dhtTemp);
    } else {
        printf("Faided to get temperature\n");
    }
    system("rmmod "DRIVER_MODULE);
    return ret;
}

For more details about this APIs called in this code sample refer to Matrix API reference manual


7 Resources

DHT11.pdf

8 Update Log

8.1 Feb-23-2016

  • Added the description for "NanoPi 2 branch" in Section 4
  • Added Section 5: Connect to NanoPi 2

8.2 June-24-2016

  • Re-organized and simplified wiki