注目キーワード

【Arduino】温度・湿度センサー(DHT11)をM5StickCで読み取ってみる

この記事では、M5StickCに温度・湿度センサー(以降、温湿度センサー)を接続して、部屋の温度・湿度を測定し、M5StickCのディスプレイに表示させます。

センサーを使うと、M5StickCでできることが増えてきます。
センサーからデータを取得するだけではなく、取得したデータをわかりやすい表示に変換してみます。

今回使用した温湿度センサーは、以下を使っています。

温湿度センサー(DHT11)

入手元:秋月電子 型番:DFR0067

ケーブル(イコン側)↓ ケーブル(センサー側)↓

温湿度センサーのコネクタを変更する

今回使う温湿度センサーは、マイコン側のコネクタがQIコネクタになっているので、M5StickCのGroveコネクタに接続できるコネクタに変更します。

QIコネクタの部分のケーブルを切断し、Groveコネクタに互換性のあるHY2.0㎜コネクタを取り付けます。

取り付けるコネクタとセンサーのケーブルの対応は次の通りです。

温湿度センサー側 HY2.0㎜コネクタ側(コンタクトが見える側)
No Use 一番上
温湿度取得信号用(緑線) 下から3番目(写真:信号用)
Vin(+)(赤線) 下から2番目(写真:Vin(+))
GND(黒線) 一番下(写真:GND)

完成イメージも載せておきます。

コネクタ取り付け方法は、以下の記事を参考にしてください。

関連記事

電子工作ではんだ付けとともに欠かせないのが、「ケーブル作り」。 電子部品やコンピュータ、モーターなどの各部品はいろいろな形状のコネクタを持っています。そこで、ケーブルの端を接続するものの規格に合わせることが必要になります。 また[…]

 

また、HY2.0㎜コネクタは以下から手配できます。

Grove互換コネクタ HY2.0mm ハウジング・コンタクトピンセット

入手元:共立エレショップ 型番:CON302-HY2-4P-5

M5StickCのGrove端子に接続できる互換ハウジングとコンタクトのセットです。これを使って温湿度センサーのケーブル(M5StickC接続側)をQIコネクタからGrove互換コネクタに変更します。

共立エレショップさんの通販サイトURLはこちらです。

 

M5StickCと温度・湿度センサーを接続する

コネクタを変更した温度・湿度センサーをM5StickCに接続します。

コネクタになっているので、M5StickCのGroveコネクタに差し込むだけで使用できます。

今回はM5StickCとGroveコネクタで接続し、その中で回路が完成しているのでブレッドボードは使用しません。

M5StickCへの電源供給はUSBケーブルでパソコンと接続して行います。

 

温湿度センサーのデータ取得の仕組み

今回使用する温湿度センサー(DHT11)は、以下のような仕組みで温度や湿度を取得できます。

温度・湿度情報の受信方法

センサーから温度と湿度のデータを取得するには、温湿度取得信号用のDATAパスを使用します。

DATAパスはマイクロプロセッサ(今回はM5StickC)とDHT11間の通信と同期に使用されます。

センサーはDATAは一度に40ビットのデータを送信します。

  1. センサーにデータ送信を要求するためには、マイクロプロセッサ側で、データバス(SDA)を一定期間{最小18ms(最大30ms以下)}プルダウンします。
  2. センサーはデータバス(SDA)を83㎲プルダウンし、87㎲をプルアップします。
  3. データ(40ビット)をマイクロプロセッサへ送信します。

上記(DATAパスの通信状態)を図で表すと次のようになります。

 

データ形式

送信される40ビットの信号の内容は次の通り8ビットデータ5個で構成されます。
①~⑤までを温湿度センサー側からDATAパスへ送信します。

  1. 8ビット湿度highデータ(湿度積分値)
  2. 8ビット湿度lowデータ(湿度部分データ)
  3. 8ビット温度highデータ(温度)
  4. 8ビット温度lowデータ(温度※負の場合)
  5. 8ビットチェックビット

※チェックビットは、①~④のデータをすべて加算した結果と一致するようになっていて、送信されたデータが正しいかどうかをチェックできます。

例えば、湿度53%、温度24℃の場合は以下のようなデータになります。

 

以上、結構プログラムで上記の通信の内容を判定するのは、難しく思われると思います。

ですが、安心してください。
Arduino IDEで利用できるDHT11のライブラリ「DHT sensor library」を使えば、ご紹介したセンサーの仕組みをクラスや関数の呼び出しだけで利用することができますよ!

といっても、センサーの仕組みやライブラリ内部でどのような処理がされているか想像できる知識は貴重だと考えますので、これまでご説明した内容も大切にしてくださいね!

 

M5StickCで温湿度センサーの値を読み取ってみる

それではM5StickCと温湿度センサーを使って部屋の温度と湿度を測定してみましょう。今回使用する温湿度センサー(DHT11)とのやり取りはArduino用に公開されている「DHT sensor library」ライブラリを使います。

プログラムの機能としては次のものを作ります。

  • ディスプレイに温度、湿度を表示する。
  • 表示する数字は26ピクセルASCIIフォントにします。

ライブラリのインストールは、次の記事で紹介しています。

関連記事

本記事は、Arduino IDE 1.8.xバージョンのライブラリ管理方法を紹介した記事です。 Arduino IDEは、より新しいバージョン「2.0.x」が発表されています。     機能がよりリッチになった「Ardu[…]

冷却ファンのLED発光制御プログラム

Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。

 Arduino IDE スケッチ例

 

 M5Stack/M5StickCへの書き込み

  1. 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  2. 「ツール」メニューから「ボード」情報を確認し、M5StickCであるか確認します。 この際、「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
  3. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。
  4. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

 

 プログラム実行結果

M5StickCを起動すると約2秒待ってから、次の画像のように表示されるはずです。

今回使用したDHT11は、温度が±2℃、湿度が±5%(25℃の時)なので、同時に図った時計の表示と見比べてもだいたいあっています。(少々高めに出るような傾向がありますね。。。)

時計の温度・湿度計の表示
時計の温度・湿度計の表示

 

今回の記事は以上になります。

次回は、M5StickCにWebサーバを作ってWebブラウザから冷却ファンの回転速度や、LEDの発光パターンを変更できるように作りこんでみます。

これまでご紹介したM5StickCシリーズのプログラミング要素が盛りだくさんの内容となりますのでご期待ください!

 

今回使用したマイコンは・・・

M5StickC ディスプレイ付きのマイコンです。非常にサイズが小さいですがディスプレイも搭載しており、使いやすいです。Amazonで確認
げんろく
ディスプレイ付きとは思えない小さいサイズのマイコンです。センサーと組み合わせてIoTデバイスとして活躍できる機能を持っています。