Androidのメモとか

ポキオの日記です。今日も遅延してない。

Nefry BTとDHT11で温度・湿度を秒で取得する

久々のNefry案件。

ポキオ Nefry BT DHT11

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

とりあえず、なんとなく室内環境を可視化したいと思い、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

Overview | DHT11, DHT22 and AM2302 Sensors | Adafruit Learning System

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

今回は、センサーの値を直接確認できるように、ディスプレイ付きの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になるので、そのハンドリングはちゃんと実装しておいたほうが良さそうです。なにはともあれ、秒で実装できる素晴らしいモジュールでした。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。