2019年5月30日木曜日

[Elegoo:12] DHT11 温度・湿度センサ




概要 (Overview)
  • 温度・湿度センサについて学ぶ
  • DTH11から温度・湿度・データを取得してシリアルモニタに表示する



使用する電子部品 (Component Required)
電子種別電子部品個数
マイコン Elegoo UNO R3 マイコンボード1
USBケーブル1
能動 DHT11 デジタル温度・湿度センサ1
機構 ジャンプワイヤ(緑)[オス-メス]1
ジャンプワイヤ(黒)[オス-メス]1
ジャンプワイヤ(赤)[オス-メス]1



電子部品について (Component Introduction)

DHT11 温度・湿度センサ


  • 「DHT11 デジタル温度・湿度センサ」は温度と湿度の較正されたデジタル信号出力を含む複合センサ
  • <較正>湿度・温度データに8Bitのチェックサムを付加し、データの送り手側が決められた計算方法によって算出した値と、受け手側が同一の計算方法によって算出した値が一致するかどうかを調べ、データの信頼性の向上を図ることができる
《データシート》
精度(25℃)温度±2℃、湿度±5%RH
サンプリング期間2秒以上

《ピン》
Vcc電源入力(5V or 3V)
DATAデジタルIO (プルアップ抵抗付)
GNDGND



電子回路 (Electronic Circuit)

回路図 (Schematic)



実体配線図 (Wiring Diagram)





実践 (To Practice)

配線写真 (Example Picture)


プログラム (Code)

SimpleDHT11ライブラリ
書式引数説明
int SimpleDHT11::read(int pin,
 byte* ptemperature,
 byte* phumidity,
 byte pdata[40])
int pin:ピンNO
byte* ptemperature:温度
byte* phumidity:湿度
byte pdata[40]:取得データ
温度・湿度・データを取得する

スケッチ
/*************************************************
 * 【 Elegoo:12 】DHT11 温度・湿度センサー
 *    温度・湿度をシリアルモニタに表示する
 *************************************************/
/*--------------------------------------------*/
/* SimpleDHT11ライブラリ                       */
/*--------------------------------------------*/
#include <simpledht.h>

// SimpleDHT11オブジェクトを作成
SimpleDHT11 objDHT11;

// ピン
#define PIN_DHT11  2

/********/
/* loop */
/********/
void loop() {
  Serial.println("=================================");
  Serial.println("DHT11 サンプリング中...");
  
  byte byteTemperature = 0;   //温度
  byte    byteHumidity = 0;   //湿度
  byte    byteData[40] = {0}; //取得データ

  // --------------------------------------------------
  // DTH11から温度・湿度・データを取得する
  // --------------------------------------------------
  if (objDHT11.read(PIN_DHT11, &byteTemperature, &byteHumidity, byteData)) {
    // 取得 失敗
    Serial.print("Read DHT11 failed");
    return;
  }

  // --------------------------------------------------
  // 取得した温度・湿度・データをシリアルモニタに表示する
  // --------------------------------------------------
  Serial.print("Read DHT11 OK : ");
  // --------------------------------------------------
  // 温度
  Serial.print((int)byteTemperature); Serial.print(" *C, ");
  // --------------------------------------------------
  // 湿度
  Serial.print((int)byteHumidity); Serial.println(" %");
  // --------------------------------------------------
  // データ
  // [湿度(整数)8Bit][湿度(小数)8Bit][温度(整数)8Bit][温度(小数)8Bit][チェックサム8bit]
  // チェックサム=温度・湿度のByteDataを足した下位8Bit
  Serial.print("RAW Bits: ");
  for (int i = 0; i < 40; i++) {
    Serial.print((int)byteData[i]);
    if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(' ');
    }
  }
  Serial.println("");

  
  // サンプリング:2秒以上
  delay(2000);
}

/*********/
/* setup */
/*********/
void setup() {
  // シリアルモニタ開始
  Serial.begin(9600);
}

結果(動画)・モニタリング


温度・湿度・データをシリアルモニタに表示する

0 件のコメント:

コメントを投稿