画像処理とか機械学習とか

画像処理や機械学習関連の事について気まぐれで書いていきます。歩行者検出関係が多いと思います。ハリネズミもたまに出現します。

温湿度センサをArduinoで使ってみる

Amazonで300円くらいで売られていたDHT11という温湿度センサが届いたので使用してみます。
f:id:hiro2o2:20160329115758j:plain

見た目はこんな感じで、メスメスのワイヤーとセットで送られてきました。
説明書などは無しです。調べてみるとディジタル出力で温度と湿度を取得できるみたいです。
便利なライブラリがあり、簡単に使用できそうでしたので試してみました。

ライブラリは以下のGithubからダウンロードします。
GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11DHT22, etc Temp & Humidity Sensors

ダウンロードしてきたzipファイルは解凍せずにそのままArduinoIDEからzip形式のライブラリをインストールで先ほどダウンロードしてきたファイルを選択するとOKです。
f:id:hiro2o2:20160329120222p:plain

コードはこちらのサイトを参考にしました。
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);
}

出力結果
f:id:hiro2o2:20160329120353p:plain

こんな感じですぐにセンサの値が取得できました。
ライブラリが用意してあるので簡単ですね。このセンサはハリネズミのケージ内の温湿度を測るために使おうと思います。