ポキオ(@pokiiio)です。
Nefry Advent Calendar 2018の12日目ということで、簡単に室内環境を可視化できるモジュール(DHT11)について紹介をさせてください。(以前、私のブログでも紹介した内容な上に、kitazakiさんとダダ被りでした・・・)
神モジュールに神ライブラリ
とりあえず、なんとなく室内環境を可視化したいと思い、1つのモジュールで温度・湿度が取れる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で
まずはライブラリをインストールします。
ライブラリマネージャーからDHT Sensor Library by Adafruitを探してインストール。これで実装・・・と思ったんですが、これだけではだめで、Adafruit Unified Sensor by Adafruitも必要になりますので、未インストールであればインストールしておきます。(これがないとコンパイルが通らない)
これこれ。このライブラリがあれば、信号線のピン番号で初期化して、あとは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);
}
いざ動作確認
動いてますねー。
たまにセンサー値がnan
になるので、そのハンドリングはちゃんと実装しておいたほうが良さそうです。なにはともあれ、秒で実装できる素晴らしいモジュールでした。