0
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

DHT11でチョッパヤ室内環境可視化

ポキオ(@pokiiio)です。
Nefry Advent Calendar 2018の12日目ということで、簡単に室内環境を可視化できるモジュール(DHT11)について紹介をさせてください。(以前、私のブログでも紹介した内容な上に、kitazakiさんとダダ被りでした・・・)

神モジュールに神ライブラリ

とりあえず、なんとなく室内環境を可視化したいと思い、1つのモジュールで温度・湿度が取れるDHT11を買ってみました。

ポキオ Nefry BT DHT11

端子は3つ。5VとGNDと信号線。信号線ってことはいろいろ実装しなければならないのかなと思いきや、安心と信頼のAdafruitさんから素晴らしいライブラリが出ていたので、あとは間違えずに配線するだけです。

Good for 20-80% humidity readings with 5% accuracy
Good for 0-50°C temperature readings ±2°C accuracy

[https://learn.adafruit.com/dht:title]

精度はアレですが、非常に廉価なので問題ないでしょう。

今回は、センサーの値を直接確認できるように、ディスプレイ付きのNefry BTで動かしてみました。

実装はArduino IDEで

まずはライブラリをインストールします。

ポキオ Nefry BT DHT11

ライブラリマネージャーからDHT Sensor Library by Adafruitを探してインストール。これで実装・・・と思ったんですが、これだけではだめで、Adafruit Unified Sensor by Adafruitも必要になりますので、未インストールであればインストールしておきます。(これがないとコンパイルが通らない)

ポキオ Nefry BT DHT11

これこれ。このライブラリがあれば、信号線のピン番号で初期化して、あとはreadHumidity()だったりreadTemperature()を行うだけ。簡単すぎて逆に引きます。

Nefry BT向けのコードはこちら

#include <Nefry.h>
#include <NefryDisplay.h>
#include "DHT.h"

DHT dht(A0, DHT11);

void setup() {
  dht.begin();
}

void loop() {
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();

  NefryDisplay.print("DHT11");

  if ( isnan(humidity) || isnan(temperature) ) {
    NefryDisplay.print("---[%]");
    NefryDisplay.print("---[deg C]");
  } else {
    NefryDisplay.print(String(humidity) + "[%]");
    NefryDisplay.print(String(temperature) + "[deg C]");
  }

  delay(1000);
}

いざ動作確認

動いてますねー。

ポキオ Nefry BT DHT11

たまにセンサー値がnanになるので、そのハンドリングはちゃんと実装しておいたほうが良さそうです。なにはともあれ、秒で実装できる素晴らしいモジュールでした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?