温湿度センサをArduinoで使ってみる
Amazonで300円くらいで売られていたDHT11という温湿度センサが届いたので使用してみます。
見た目はこんな感じで、メスメスのワイヤーとセットで送られてきました。
説明書などは無しです。調べてみるとディジタル出力で温度と湿度を取得できるみたいです。
便利なライブラリがあり、簡単に使用できそうでしたので試してみました。
ライブラリは以下のGithubからダウンロードします。
GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11DHT22, etc Temp & Humidity Sensors
ダウンロードしてきたzipファイルは解凍せずにそのままArduinoのIDEからzip形式のライブラリをインストールで先ほどダウンロードしてきたファイルを選択するとOKです。
コードはこちらのサイトを参考にしました。
ArduinoでDHT11デジタル温度センサーをAdafruitライブラリから使う - Qiita
#include <DHT.h> #define DHTPIN 4 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); float a_in; // アナログ入力値(0〜203) float temp_c = 0; // 摂氏値( ℃ ) int red_led = 2; int blue_led = 3; void setup(){ Serial.begin(9600); // シリアル通信速度 pinMode ( red_led, OUTPUT); pinMode ( blue_led, OUTPUT); dht.begin(); } void loop(){ // アナログピンから計測値を取得(0〜203) a_in = analogRead(0); // 入力値を摂氏に換算 temp_c = ((5 * a_in) / 1024) * 100; // 改行しながら出力 Serial.print("Temperature: "); Serial.print( temp_c ); Serial.println(" *C "); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); Serial.print(h); Serial.println(" %\t"); Serial.print("Inside Temperature: "); Serial.print(t); Serial.println(" *C "); if(t > 20 && t < 30){ // LEDを点灯 ( HIGHは電圧レベル ) digitalWrite( blue_led, HIGH ); digitalWrite( red_led, LOW ); }else{ digitalWrite( red_led, HIGH ); digitalWrite( blue_led, LOW ); } // 1000ms待機 delay(10000); }
出力結果
こんな感じですぐにセンサの値が取得できました。
ライブラリが用意してあるので簡単ですね。このセンサはハリネズミのケージ内の温湿度を測るために使おうと思います。