はじめに

デジタル温湿度センサーDHT11には、アナログからデジタルへの変換を行うチップが内蔵されており、あらゆるMCUと互換性があるため、基本的なデータロギング 資料を望む人に最適です。非常に安価でありながらが、優れた性能を備えているので、電子工作を趣味とする人たちに非常に人気があります。

このレッスンでは、まず湿度についての背景をすこし説明、次にDHT11がどのように湿度を測定するかを説明します。その後、DHT11をマイクロビットに接続する方法と、DHT11を自分のプロジェクトで使用するためのサンプルコードをご紹介します。

 

次のパーツが必要になります

DHT11について

DHT11は、ベーシックな超低コストのデジタル温湿度センサーです。静電容量式湿度センサーとサーミスターを利用して周囲の空気を測定し、データピンにデジタル信号を出力します(アナログ入力ピンは必要ありません)。使い方はいたって簡単です、しかしデータを取りこむタイミングに注意が必要です。

VCC、GND、DATA用として3っのピンで使用します。通信プロセスは、まずDATAラインがDHT11にスタート信号を送信します、その信号をDHT11が受信したら、アンサー信号を返信すことから始まります。そして、ホスト側がアンサー信号を受信すると、40ビットにした湿度データ(湿度8ビット整数+湿度8ビット小数+温度8ビット整数+温度8ビット小数+8ビットチェックサム)の受信を開始します。

相対湿度とは何ですか?

DHT11は相対湿度を測定します。相対湿度とは、ある空気温度の飽和点と空気中の水蒸気の量を%で比較したものです。飽和点では、水蒸気が凝縮、蓄積されて露となります。

飽和点は空気の温度によって変化します。冷たい空気は、飽和できる水蒸気の量が少なく、熱い空気ほど、飽和できる水蒸気の量が多くなります。

相対湿度の計算式は次のとおりです。

RH = (\frac{\rho_{w}}{\rho_{s}}) \ x \ 100 \% \\ \\ RH: \ Relative \ Humidity \\ \rho_{w}: \ Density \ of \ water \ vapor\\ \rho_{s}: \ Density \ of \ water \ vapor \ at \ saturation

相対湿度はパーセンテージで表されます。相対湿度が100%の場合は結露が発生し、0%の場合は完全に乾燥した状態となります。

DHT11は如何にして湿度と温度を測定する

DHT11は、2つのエレクトロッドの電気抵抗を測定することで水蒸気を検出します。湿度検出部は、水分を保持する基板の表面に電極を貼り付けたものです。水蒸気が基板に吸収されると、基板からイオンが放出され、エレクトロッドの導電率が上昇します。2つのエレクトロッドの抵抗の変化は、相対湿度に比例します。相対湿度が高いとエレクトロッドの抵抗が減少し、低いとエレクトロッドの抵抗が増加します。

DHT11は、本体に内蔵された表面実装型のNTC温度センサー(サーミスタ)で温度を測定します。

プラスチックのカバーを外すと、基板に貼られた電極が見えます。本体背面に搭載されたICは、測定した抵抗値を相対湿度に変換します。また、校正係数の保存や、DHT11とArduino間のデータ信号伝送の制御も行っています。

DHT11とDHT22の違い

WIRING 

Micro bit DHT11 sensor
3.3v VCC
P0 DATA
GND Ground

スクリプトの実行

スクリプトの作成に慣れていない方でも安心してください。まず、このリンク https://makecode.microbit.org/reference を入力して、マイクロビットブロックのリファレンスから取得します。

以下のコードをコピー&ペーストするか、エディタウィンドウの右上にあるオープンアイコンをクリックして、自分のMake Codeエディタで編集します。また、コードウィンドウの右下にあるダウンロードボタンをクリックして、このサンプルをダウンロードすることもできます

https://makecode.microbit.org/_gmtcTpWobY3b

結果

Micro bitの画面上に温度と湿度の値がスクロールしています。