Help us understand the problem. What is going on with this article?

NefryBT と DHT11 と WaterAtomization で湿度を 制御 (コントロール) してみた。

More than 1 year has passed since last update.

こんにちは。野良ハックチーム ざっきーと申します。
Nefry Advent Calendar 2018の 7日目を担当します。
2018 年も NefryBT には大変お世話になったので、その"良さみ"を書き残して年を越したいと思います。

NefryBT はオンボード LED と OLED ディスプレイが付いているので、状態や各種センサーで取得したデータを直ぐに可視化できて良いですよね!

みんな大好き DHT11 (温湿度センサー)

Grove 端子が付いた DHT11 です。Grove ケーブルで NefryBT と接続してサクッと動作させることができます。

Water Atomization (水噴霧) デバイス

Grove 端子が付いた Water Atomization (水噴霧) デバイス です。基板に付属している超音波振動子 (丸い金属板にシリコン Oリングをはめたモノ) で水を霧状にします。

○ルツから購入できますが、在庫は無く海外からの輸入になるので、注文してから手元に届くまで 1ヶ月程度掛かります。(´・ω・`)
スクリーンショット 2018-12-01 23.39.32.png

構成・配線図

構成配線図.png

Water Atomization は動作する電源電圧が 5V となっており、残念ながら NefryBT とは Grove コネクタでは接続できません。Grove - 4 PIN ジャンパオスケーブルが必要になります。(´・ω・`)

超音波振動子は水の上にティシュを敷いてその上に置くような感じにします。
最初、水の中に沈めてしまい、全く動作しませんでした・・。(´・ω・`)

動作概要

温度・湿度を測定 → 条件 (湿度が 30% 未満) → 加湿ON / オンボードLED (赤) →
温度・湿度を測定 → 条件 (湿度が 30% 以上) → 加湿OFF / オンボードLED (緑) →
を繰り返します。

加湿ON (湿度が30%未満の場合)

加湿OFF (湿度が30%以上の場合)

ソースコード

前提条件として DHT11 ライブラリのインストールと日本語フォント対応が必要ですが、Nefry Advent Calendar 2017 で えむにわ (@m2wasabi) さんが記事を書かれています。Water Atomization は特別なライブラリは必要ありません。(L チカと同じ要領です。)

サンプルコードは こちら

NefryBT_DHT11_WaterAtomization_01.ino
#include <Nefry.h>
#include <NefryDisplay.h>
#include <NefrySetting.h>
#include <misakiUTF16.h>
#include "DHTesp.h"

DHTesp dht;

void setting(){
  Nefry.disableDisplayStatus();
}

NefrySetting nefrySetting(setting);

void misakiPrint(int x, int y, char * pUTF8) {
  int n=0;
  byte buf[20][8];  //160x8ドットのバナー表示パターン
  while(*pUTF8)
    pUTF8 = getFontData(&buf[n++][0], pUTF8);  // フォントデータの取得

  // 文字の描画
  for (byte i=0; i < 8; i++) {
    for (byte j=0; j < n; j++) {
      for (byte k=0; k<8;k++) {
        if(bitRead(buf[j][i],7-k)) {
          NefryDisplay.setPixel(x + 8*j + k , y + i);
        }
      }
    }
  }
}

void displayInfo() {
    float temperature = dht.getTemperature();
    float humidity = dht.getHumidity();
    Serial.print("temperature: ");
    Serial.println(temperature);
    Serial.print("humidity: ");
    Serial.println(humidity);
    NefryDisplay.clear();
    NefryDisplay.setFont(ArialMT_Plain_24);
    misakiPrint(0,0, "気温:");
    misakiPrint(0,20, "湿度:");
    misakiPrint(75,10, "℃");
    misakiPrint(75,30, "%");
    char s_temperature[8];
    dtostrf(temperature, 2, 1, s_temperature);
    char s_humidity[8];
    dtostrf(humidity, 2, 1, s_humidity);
    NefryDisplay.drawString(25, 0, s_temperature);
    NefryDisplay.drawString(25, 20, s_humidity);
    NefryDisplay.display();
    if (humidity < 30) {
      Nefry.setLed(255, 0, 0);
      Serial.println("Water Atomization: ON");
      digitalWrite(A2, HIGH);
    } else {
      Nefry.setLed(0, 255, 0);
      digitalWrite(A2, LOW);
      Serial.println("Water Atomization: OFF");
    }
}

void setup() {
  Serial.begin(115200);
  dht.setup(25); // A0:IO25
  pinMode(A2, OUTPUT); // A2:Grove Water Atomization
  NefryDisplay.clear();
  NefryDisplay.setFont(ArialMT_Plain_24);
  misakiPrint(0,0, "気温:");
  misakiPrint(0,20, "湿度:");
  misakiPrint(75,10, "℃");
  misakiPrint(75,30, "%");
  NefryDisplay.display();
}

void loop() {
  delay(dht.getMinimumSamplingPeriod());
  displayInfo();
  delay(100);
}

まとめ

今回は簡易的な加湿器を作ってみました。冬は乾燥するし、エアコンなどの暖房器具を使うと更に乾燥しますよね!適度な湿度を保って、インフルエンザや風邪などを引かぬよう、穏やかな年末年始をお過ごしください。

では、良き NefryBT ライフを!

iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした