« Arduino NANO-DHT11-OLED_Display を使って温度表示 | Main | PCがネットに繋がらない・・・どうしたんだ! »

02/03/2018

Arduino NANO, DHT11 を使い、湿度によりPower制御する

前回の回路を利用して、温度・湿度計測センサ「DHT11」で計測した環境湿度が30%よりも低下した場合に、リレーにより電源のSWをONにする装置のモデルを作成した。

前回に対して追加したのは、下記①~③
①パワーリレー
②パワーリレーを制御するための電源線と信号線(これはArduino NANOのD8ピンに接続した)
③パワースイッチの動作を確認するために、
  外部電源とLEDを組込んだ。
尚、私が前回使っていたブレッドボードでは、電源ラインに問題点がある事が判明したので、
OLEDディスプレイ周辺の回路は、別の新しいブレッドボードを使ってジャンパーピンの接続を簡素化した(見栄えを良くした)。

Fritzingを使って回路を描いてみた。
Dht11oled_displayrelay Img_20180203_203316PowerRelayの出力のところには、換気用ファン用の電源回路にすることになるが、ここでは論理が合っているか否かを確認するために、外部電源でLEDを点灯することとした。



拙宅では、衣類を入れるクローゼットに、換気ファンを設けたが、温度・湿度共に低い冬期でも常にファンが回るために、低い湿度の状況ではファンを停止したいと思った。それで、ファンをコントロールするための湿度はどれくらいに設定するのが良いか、調べてみると、「エコハウス・マニュアルノート・ページ
」 の中に下記の記事を見つけた。私は、室温に関わらず、ファンを制御する湿度を30%でやってみる事にした。

http://www.ecolab.or.jp/yumesekkei/note310.htmより引用
カビ発生の条件→
適度な湿度
カビは湿気を好みます。相対湿度77%~99%がカビにとって繁殖しやすい湿度といわれます。室内の湿気を40~60%に保っていても、風が通らず結露しやすい部屋の隅や押し入れ、温度の低い部屋などは湿度が高くなりやすく、カビが生えやすい場所です。


スケッチは下記のようになる。
《Sketch》

// DHT11センサーから湿度と温度を読み取り、PowerRelayを制御する

#include "DHT.h"
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);

#define DHTPIN 2     // データピンをD2へ

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// DHT11の pin 1 (正面左側) NANOの +5Vへ
// DHT11の pin 2(正面左から2番目、データピン)NANOの D2 且つ 10kΩ経由で +5Vへ
// Connect pin 4 (正面右側) NANOの GNDへ

int powerSW   = 8;    // power SW

DHT dht(DHTPIN, DHTTYPE, 6);

char str[10];

void drawTest(void) {
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr( 5, 20, "Measurements");  // 画面表示が 2pixほど右にシフトしているため
}

void setup() {
  Serial.begin(9600); 
  Serial.println("DHT11 Measurements");
 
  dht.begin();
  u8g.firstPage();  
  do {
    drawTest();
  } while( u8g.nextPage() );

  pinMode(powerSW, OUTPUT);
  digitalWrite(powerSW, HIGH);  // power Off
  // Wait a few seconds.
  delay(2000);
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit
  float f = dht.readTemperature(true);
  
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("DHTセンサからのデータ読取りに失敗しました!");
    return;
  }

  // Compute heat index
  // Must send in temp in Fahrenheit!
  float hi = dht.computeHeatIndex(f, h);

  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %\t");
  
  Serial.print("Temperature: "); 
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  
  Serial.print("Heat index: ");
  Serial.print(hi);
  Serial.println(" *F");

  if ( h > 30.0 ) {
     digitalWrite(powerSW, LOW);  // power On
  } else {
     digitalWrite(powerSW,HIGH);  // power Off
  }
  
  // picture loop
  u8g.firstPage();  
  do {
    u8g.setFont(u8g_font_helvB08);

    u8g.drawStr( 5, 15, "Humidity:");
    u8g.drawStr( 80, 15, dtostrf(h, 5, 2, str));
    u8g.drawStr( 112, 15, "%");
    
    u8g.drawStr( 5, 30, "Temperature:");
    u8g.drawStr( 80, 30, dtostrf(t, 5, 2, str));
    u8g.drawStr( 112, 30, "\260C");
    
    u8g.drawStr( 80, 45, dtostrf(f, 5, 2, str));
    u8g.drawStr( 112, 45, "\260F");
    
    u8g.drawStr( 5, 60, "Heat index:");
    u8g.drawStr( 80, 60, dtostrf(hi, 5, 2, str));
    u8g.drawStr( 112, 60, "\260F");
    
  } while( u8g.nextPage() );

// Wait 30 seconds between measurements.
  delay(30000);
}

この結果を用いて、実用基板を起こしてみようと思う。

« Arduino NANO-DHT11-OLED_Display を使って温度表示 | Main | PCがネットに繋がらない・・・どうしたんだ! »

PC and PC troubles」カテゴリの記事

Comments

Post a comment

Comments are moderated, and will not appear on this weblog until the author has approved them.

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/540128/66354132

Listed below are links to weblogs that reference Arduino NANO, DHT11 を使い、湿度によりPower制御する:

« Arduino NANO-DHT11-OLED_Display を使って温度表示 | Main | PCがネットに繋がらない・・・どうしたんだ! »

June 2018
Sun Mon Tue Wed Thu Fri Sat
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Recent Trackbacks

無料ブログはココログ